[librep] Remove scheme and unscheme modules



commit 2e87f94680bb2fce0bf2ac2fc33c82628f61be20
Author: chrisb <zanghar freenet de>
Date:   Wed May 6 19:56:55 2009 +0200

    Remove scheme and unscheme modules
---
 ChangeLog                        |   13 +
 configure.in                     |    2 +-
 intl/ChangeLog                   | 1086 ------
 lisp/ChangeLog                   | 7058 ----------------------------------
 lisp/Makefile.in                 |    2 +-
 lisp/rep/user.jl                 |    8 -
 lisp/rep/vm/compiler.jl          |    2 -
 lisp/rep/vm/compiler/scheme.jl   |  327 --
 lisp/rep/vm/compiler/unscheme.jl |  123 -
 lisp/scheme.jl                   |  123 -
 lisp/scheme/data.jl              |  264 --
 lisp/scheme/misc.jl              |  177 -
 lisp/scheme/syntax-funs.jl       |  174 -
 lisp/scheme/syntax.jl            |   62 -
 lisp/scheme/utils.jl             |   48 -
 lisp/unscheme.jl                 |  115 -
 lisp/unscheme/data.jl            |  248 --
 lisp/unscheme/misc.jl            |  172 -
 lisp/unscheme/syntax-funs.jl     |   52 -
 lisp/unscheme/syntax.jl          |   62 -
 man/news.texi                    |    7 +
 src/ChangeLog                    | 7882 --------------------------------------
 22 files changed, 22 insertions(+), 17985 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6649aff..bea02c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,19 @@
 2009-05-06  Christopher Bratusek <zanghar freenet de>
 	* Makefile.in: remove tar target [Ritz]
 
+	* configure.in: 0.17.4 released, bump to 0.90.0
+
+	* lisp/scheme/
+	* lisp/scheme.jl
+	* lisp/unscheme/
+	* lisp/unscheme.jl
+	* lisp/rep/vm/compiler/scheme.jl
+	* lisp/rep/vm/compiler/unscheme.jl: removed
+
+	* lisp/rep/vm/compiler.jl
+	* lisp/rep/user.jl
+	* lisp/Makefile: updated
+
 2009-05-05  Christopher Bratusek <zanghar freenet de>
 	* man/lang.tex
 	* man/librep.texi
diff --git a/configure.in b/configure.in
index 17ea59e..63cb2f7 100644
--- a/configure.in
+++ b/configure.in
@@ -27,7 +27,7 @@ AC_CONFIG_MACRO_DIR([m4])
 AM_PROG_LIBTOOL
 
 dnl Release versioning info
-version="0.17.4"
+version="0.90.0"
 
 dnl libtool versioning info: `CURRENT:REVISION:AGE'. CURRENT is the
 dnl current interface id, REVISION is the version number of this
diff --git a/intl/ChangeLog b/intl/ChangeLog
deleted file mode 100644
index 1989501..0000000
--- a/intl/ChangeLog
+++ /dev/null
@@ -1,1086 +0,0 @@
-1998-04-29  Ulrich Drepper  <drepper cygnus com>
-
-	* intl/localealias.c (read_alias_file): Use unsigned char for
-	local variables.  Remove unused variable tp.
-	* intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char *
-	for type of codeset.  For loosing Solaris systems.
-	* intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset.
-	* intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable
-	len if not needed.
-	Patches by Jim Meyering.
-
-1998-04-28  Ulrich Drepper  <drepper cygnus com>
-
-	* loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if
-	mmap is not supported.
-
-	* hash-string.h: Don't include <values.h>.
-
-1998-04-27  Ulrich Drepper  <drepper cygnus com>
-
-	* textdomain.c: Use strdup is available.
-
-	* localealias.c: Define HAVE_MEMPCPY so that we can use this
-	function.  Define and use semapahores to protect modfication of
-	global objects when compiling for glibc.  Add code to allow
-	freeing alias table.
-
-	* l10nflist.c: Don't assume stpcpy not being a macro.
-
-	* gettextP.h: Define internal_function macri if not already done.
-	Use glibc byte-swap macros instead of defining SWAP when compiled
-	for glibc.
-	(struct loaded_domain): Add elements to allow unloading.
-
-	* Makefile.in (distclean): Don't remove libintl.h here.
-
-	* bindtextdomain.c: Carry over changes from glibc.  Use strdup if
-	available.
-
-	* dcgettext.c: Don't assume stpcpy not being a macro.  Mark internal
-	functions.  Add memory freeing code for glibc.
-
-	* dgettext.c: Update copyright.
-
-	* explodename.c: Include stdlib.h and string.h only if they exist.
-	Use strings.h eventually.
-
-	* finddomain.c: Mark internal functions.  Use strdup if available.
-	Add memory freeing code for glibc.
-
-1997-10-10 20:00  Ulrich Drepper  <drepper cygnus com>
-
-	* libgettext.h: Fix dummy textdomain and bindtextdomain macros.
-	They should return reasonable values.
-	Reported by Tom Tromey <tromey cygnus com>.
-
-1997-09-16 03:33  Ulrich Drepper  <drepper cygnus com>
-
-	* libgettext.h: Define PARAMS also to `args' if __cplusplus is defined.
-	* intlh.inst.in: Likewise.
-	Reported by Jean-Marc Lasgouttes <Jean-Marc Lasgouttes inria fr>.
-
-	* libintl.glibc: Update from current glibc version.
-
-1997-09-06 02:10  Ulrich Drepper  <drepper cygnus com>
-
-	* intlh.inst.in: Reformat copyright.
-
-1997-08-19 15:22  Ulrich Drepper  <drepper cygnus com>
-
-	* dcgettext.c (DCGETTEXT): Remove wrong comment.
-
-1997-08-16 00:13  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in (install-data): Don't change directory to install.
-
-1997-08-01 14:30  Ulrich Drepper  <drepper cygnus com>
-
-	* cat-compat.c: Fix copyright.
-
-	* localealias.c: Don't define strchr unless !HAVE_STRCHR.
-
-	* loadmsgcat.c: Update copyright.  Fix typos.
-
-	* l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
-	(_nl_make_l10nflist): Handle sponsor and revision correctly.
-
-	* gettext.c: Update copyright.
-	* gettext.h: Likewise.
-	* hash-string.h: Likewise.
-
-	* finddomain.c: Remoave dead code.  Define strchr only if
-	!HAVE_STRCHR.
-
-	* explodename.c: Include <sys/types.h>.
-
-	* explodename.c: Reformat copyright text.
-	(_nl_explode_name): Fix typo.
-
-	* dcgettext.c: Define and use __set_errno.
-	(guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
-	not defined.
-
-	* bindtextdom.c: Pretty printing.
-
-1997-05-01 02:25  Ulrich Drepper  <drepper cygnus com>
-
-	* dcgettext.c (guess_category_value): Don't depend on
-	HAVE_LC_MESSAGES.  We don't need the macro here.
-	Patch by Bruno Haible <haible ilog fr>.
-
-	* cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
-	macro.  Instead use HAVE_LOCALE_NULL and define it when using
-	glibc, as in dcgettext.c.
-	Patch by Bruno Haible <haible ilog fr>.
-
-	* Makefile.in (CPPFLAGS): New variable.  Reported by Franc,ois
-	Pinard.
-
-Mon Mar 10 06:51:17 1997  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in: Implement handling of libtool.
-
-	* gettextP.h: Change data structures for use of generic lowlevel
-	i18n file handling.
-
-Wed Dec  4 20:21:18 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* textdomain.c: Put parentheses around arguments of memcpy macro
-	definition.
-	* localealias.c: Likewise.
-	* l10nflist.c: Likewise.
-	* finddomain.c: Likewise.
-	* bindtextdom.c: Likewise.
-	Reported by Thomas Esken.
-
-Mon Nov 25 22:57:51 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* textdomain.c: Move definition of `memcpy` macro to right
-	position.
-
-Fri Nov 22 04:01:58 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
- 	bcopy if not already defined.  Reported by Thomas Esken.
-	* bindtextdom.c: Likewise.
-	* l10nflist.c: Likewise.
-	* localealias.c: Likewise.
-	* textdomain.c: Likewise.
-
-Tue Oct 29 11:10:27 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in (libdir): Change to use exec_prefix instead of
- 	prefix.  Reported by Knut-HåvardAksnes <etokna eto ericsson se>.
-
-Sat Aug 31 03:07:09 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* l10nflist.c (_nl_normalize_codeset): We convert to lower case,
-	so don't prepend uppercase `ISO' for only numeric arg.
-
-Fri Jul 19 00:15:46 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
-	definition of _GNU_SOURCE.  Patch by Roland McGrath.
-
-	* Makefile.in (uninstall): Fix another bug with `for' loop and
-	empty arguments.  Patch by Jim Meyering.  Correct name os
-	uninstalled files: no intl- prefix anymore.
-
-	* Makefile.in (install-data): Again work around shells which
-	cannot handle mpty for list.  Reported by Jim Meyering.
-
-Sat Jul 13 18:11:35 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in (install): Split goal.  Now depend on install-exec
-        and install-data.
-	(install-exec, install-data): New goals.  Created from former
-	install goal.
-	Reported by Karl Berry.
-
-Sat Jun 22 04:58:14 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in (MKINSTALLDIRS): New variable.  Path to
-        mkinstalldirs script.
-	(install): use MKINSTALLDIRS variable or if the script is not present
-	try to find it in the $top_scrdir).
-
-Wed Jun 19 02:56:56 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* l10nflist.c: Linux libc *partly* includes the argz_* functions.
-	Grr.  Work around by renaming the static version and use macros
-	for renaming.
-
-Tue Jun 18 20:11:17 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* l10nflist.c: Correct presence test macros of __argz_* functions.
-
-	* l10nflist.c: Include <argz.h> based on test of it instead when
-	__argz_* functions are available.
-	Reported by Andreas Schwab.
-
-Thu Jun 13 15:17:44 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* explodename.c, l10nflist.c: Define NULL for dumb systems.
-
-Tue Jun 11 17:05:13 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* intlh.inst.in, libgettext.h (dcgettext): Rename local variable
-	result to __result to prevent name clash.
-
-	* l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
-        get prototype for stpcpy and strcasecmp.
-
-	* intlh.inst.in, libgettext.h: Move declaration of
-	`_nl_msg_cat_cntr' outside __extension__ block to prevent warning
-	from gcc's -Wnested-extern option.
-
-Fri Jun  7 01:58:00 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in (install): Remove comment.
-
-Thu Jun  6 17:28:17 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in (install): Work around for another Buglix stupidity.
-	Always use an `else' close for `if's.  Reported by Nelson Beebe.
-
-	* Makefile.in (intlh.inst): Correct typo in phony rule.
-	Reported by Nelson Beebe.
-
-Thu Jun  6 01:49:52 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* dcgettext.c (read_alias_file): Rename variable alloca_list to
-	block_list as the macro calls assume.
-	Patch by Eric Backus.
-
-	* localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
-        malloc.
-	(read_alias_file): Rename varriabe alloca_list to block_list as the
-	macro calls assume.
-	Patch by Eric Backus.
-
-	* l10nflist.c: Correct conditional for <argz.h> inclusion.
-	Reported by Roland McGrath.
-
-	* Makefile.in (all): Depend on all- USE_INCLUDED_LIBINTL@, not
-        all- USE_NLS@.
-
-	* Makefile.in (install): intlh.inst comes from local dir, not
-        $(srcdir).
-
-	* Makefile.in (intlh.inst): Special handling of this goal.  If
-	used in gettext, this is really a rul to construct this file.  If
-	used in any other package it is defined as a .PHONY rule with
-	empty body.
-
-	* finddomain.c: Extract locale file information handling into
-	l10nfile.c.  Rename local stpcpy__ function to stpcpy.
-
-	* dcgettext.c (stpcpy): Add local definition.
-
-	* l10nflist.c: Solve some portability problems.  Patches partly by
-	Thomas Esken.  Add local definition of stpcpy.
-
-Tue Jun  4 02:47:49 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* intlh.inst.in: Don't depend including <locale.h> on
-	HAVE_LOCALE_H.  Instead configure must rewrite this fiile
-	depending on the result of the configure run.
-
-	* Makefile.in (install): libintl.inst is now called intlh.inst.
-	Add rules for updating intlh.inst from intlh.inst.in.
-
-	* libintl.inst: Renamed to intlh.inst.in.
-
-	* localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
-        because gcc has __buitlin_alloca.
-	Reported by Roland McGrath.
-
-Mon Jun  3 00:32:16 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* Makefile.in (installcheck): New goal to fulfill needs of
-        automake's distcheck.
-
-	* Makefile.in (install): Reorder commands so that VERSION is
-        found.
-
-	* Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
-        @datadir@/gettext.
-	(COMSRCS): Add l10nfile.c.
-	(OBJECTS): Add l10nfile.o.
-	(DISTFILES): Rename to DISTFILE.normal.  Remove $(DISTFILES.common).
-	(DISTFILE.gettext): Remove $(DISTFILES.common).
-	(all-gettext): Remove goal.
-	(install): If $(PACKAGE) = gettext install, otherwose do nothing.  No
-	package but gettext itself should install libintl.h + headers.
-	(dist): Extend goal to work for gettext, too.
-	(dist-gettext): Remove goal.
-
-	* dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.
-
-Sun Jun  2 17:33:06 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* loadmsgcat.c (_nl_load_domain): Parameter is now comes from
-        find_l10nfile.
-
-Sat Jun  1 02:23:03 1996  Ulrich Drepper  <drepper cygnus com>
-
-	* l10nflist.c (__argz_next): Add definition.
-
-	* dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
-	code.  Use new l10nfile handling.
-
-	* localealias.c [!HAVE_ALLOCA]: Add code for handling missing
-        alloca code.
-
-	* l10nflist.c: Initial revision.
-
-Tue Apr  2 18:51:18 1996  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (all-gettext): New goal.  Same as all-yes.
-
-Thu Mar 28 23:01:22 1996  Karl Eichwalder  <ke ke central de>
-
-	* Makefile.in (gettextsrcdir): Define using @datadir  
-
-Tue Mar 26 12:39:14 1996  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c: Include <ctype.h>.  Reported by Roland McGrath.
-
-Sat Mar 23 02:00:35 1996  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
-        with external declaration.
-
-Sat Mar  2 00:47:09 1996  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (all-no): Rename from all_no.
-
-Sat Feb 17 00:25:59 1996  Ulrich Drepper  <drepper myware>
-
-	* gettextP.h [loaded_domain]: Array `successor' must now contain up
-        to 63 elements (because of codeset name normalization).
-
-	* finddomain.c: Implement codeset name normalization.
-
-Thu Feb 15 04:39:09 1996  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (all): Define to `all- USE_NLS@'.
-	(all-yes, all_no): New goals.  `all-no' is noop, `all-yes'
-	is former all.
-
-Mon Jan 15 21:46:01 1996  Howard Gayle  <howard hal com>
-
-	* localealias.c (alias_compare): Increment string pointers in loop
-        of strcasecmp replacement.
-
-Fri Dec 29 21:16:34 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (install-src): Who commented this goal out ? :-)
-
-Fri Dec 29 15:08:16 1995  Ulrich Drepper  <drepper myware>
-
-	* dcgettext.c (DCGETTEXT): Save `errno'.  Failing system calls
-	should not effect it because a missing catalog is no error.
-	Reported by Harald K<o:>nig <koenig tat physik uni-tuebingen de>.
-
-Tue Dec 19 22:09:13 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (Makefile): Explicitly use $(SHELL) for running
-        shell scripts.
-
-Fri Dec 15 17:34:59 1995  Andreas Schwab  <schwab issan informatik uni-dortmund de>
-
-	* Makefile.in (install-src): Only install library and header when
-	we use the own implementation.  Don't do it when using the
-	system's gettext or catgets functions.
-
-	* dcgettext.c (find_msg): Must not swap domain->hash_size here.
-
-Sat Dec  9 16:24:37 1995  Ulrich Drepper  <drepper myware>
-
-	* localealias.c, libintl.inst, libgettext.h, hash-string.h,
-	gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
-	Use PARAMS instead of __P.  Suggested by Roland McGrath.
-
-Tue Dec  5 11:39:14 1995  Larry Schwimmer  <rosebud cyclone stanford edu>
-
-	* libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
-	!_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.
-
-Mon Dec  4 15:42:07 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (install-src):
-	Install libintl.inst instead of libintl.h.install.
-
-Sat Dec  2 22:51:38 1995  Marcus Daniels  <marcus sysc pdx edu>
-
-	* cat-compat.c (textdomain):
-	Reverse order in which files are tried you load.  First
-	try local file, when this failed absolute path.
-
-Wed Nov 29 02:03:53 1995  Nelson H. F. Beebe  <beebe math utah edu>
-
-	* cat-compat.c (bindtextdomain): Add missing { }.
-
-Sun Nov 26 18:21:41 1995  Ulrich Drepper  <drepper myware>
-
-	* libintl.inst: Add missing __P definition.  Reported by Nelson Beebe.
-
-	* Makefile.in:
-	Add dummy `all' and `dvi' goals.  Reported by Tom Tromey.
-
-Sat Nov 25 16:12:01 1995  Franc,ois Pinard  <pinard iro umontreal ca>
-
-	* hash-string.h: Capitalize arguments of macros.
-
-Sat Nov 25 12:01:36 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (DISTFILES): Prevent files names longer than 13
-	characters.  libintl.h.glibc->libintl.glibc,
-	libintl.h.install->libintl.inst.  Reported by Joshua R. Poulson.
-
-Sat Nov 25 11:31:12 1995  Eric Backus  <ericb lsid hp com>
-
-	* dcgettext.c: Fix bug in preprocessor conditionals.
-
-Sat Nov 25 02:35:27 1995  Nelson H. F. Beebe  <beebe math utah edu>
-
-	* libgettext.h: Solaris cc does not understand
-	 #if !SYMBOL1 && !SYMBOL2.  Sad	but true.
-
-Thu Nov 23 16:22:14 1995  Ulrich Drepper  <drepper myware>
-
-	* hash-string.h (hash_string):
-	Fix for machine with >32 bit `unsigned long's.
-
-	* dcgettext.c (DCGETTEXT):
-	Fix horrible bug in loop for alternative translation.
-
-Thu Nov 23 01:45:29 1995  Ulrich Drepper  <drepper myware>
-
-	* po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
-	Some further simplifications in message number generation.
-
-Mon Nov 20 21:08:43 1995  Ulrich Drepper  <drepper myware>
-
-	* libintl.h.glibc: Use __const instead of const in prototypes.
-
-	* Makefile.in (install-src):
-	Install libintl.h.install instead of libintl.h.  This
-	is a stripped-down version.  Suggested by Peter Miller.
-
-	* libintl.h.install, libintl.h.glibc: Initial revision.
-
-	* localealias.c (_nl_expand_alias, read_alias_file):
-	Protect prototypes in type casts by __P.
-
-Tue Nov 14 16:43:58 1995  Ulrich Drepper  <drepper myware>
-
-	* hash-string.h: Correct prototype for hash_string.
-
-Sun Nov 12 12:42:30 1995  Ulrich Drepper  <drepper myware>
-
-	* hash-string.h (hash_string): Add prototype.
-
-	* gettextP.h: Fix copyright.
-	(SWAP): Add prototype.
-
-Wed Nov  8 22:56:33 1995  Ulrich Drepper  <drepper myware>
-
-	* localealias.c (read_alias_file): Forgot sizeof.
-	Avoid calling *printf function.  This introduces a big overhead.
-	Patch by Roland McGrath.
-
-Tue Nov  7 14:21:08 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
-
-	* finddomain.c (stpcpy):
-	Define substitution function local.  The macro was to flaky.
-
-	* cat-compat.c: Fix typo.
-
-	* xopen-msg.sed, linux-msg.sed:
-	While bringing message number to right place only accept digits.
-
-	* linux-msg.sed, xopen-msg.sed: Now that the counter does not have
-	leading 0s we don't need to remove them.  Reported by Marcus
-	Daniels.
-
-	* Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
-	dependency.  Reported by Marcus Daniels.
-
-	* cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
-	Generally cleanup using #if instead of #ifndef.
-
-	* Makefile.in: Correct typos in comment.  By Franc,ois Pinard.
-
-Mon Nov  6 00:27:02 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (install-src): Don't install libintl.h and libintl.a
-	if we use an available gettext implementation.
-
-Sun Nov  5 22:02:08 1995  Ulrich Drepper  <drepper myware>
-
-	* libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS.  Reported
-	by Franc,ois Pinard.
-
-	* libgettext.h: Use #if instead of #ifdef/#ifndef.
-
-	* finddomain.c:
-	Comments describing what has to be done should start with FIXME.
-
-Sun Nov  5 19:38:01 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (DISTFILES): Split.  Use DISTFILES with normal meaning.
-	DISTFILES.common names the files common to both dist goals.
-	DISTFILES.gettext are the files only distributed in GNU gettext.
-
-Sun Nov  5 17:32:54 1995  Ulrich Drepper  <drepper myware>
-
-	* dcgettext.c (DCGETTEXT): Correct searching in derived locales.
-	This was necessary since a change in _nl_find_msg several weeks
-	ago.  I really don't know this is still not fixed.
-
-Sun Nov  5 12:43:12 1995  Ulrich Drepper  <drepper myware>
-
-	* loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL.  This
-	might mark a special condition.
-
-	* finddomain.c (make_entry_rec): Don't make illegal entry as decided.
-
-	* Makefile.in (dist): Suppress error message when ln failed.
-	Get files from $(srcdir) explicitly.
-
-	* libgettext.h (gettext_const): Rename to gettext_noop.
-
-Fri Nov  3 07:36:50 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c (make_entry_rec):
-	Protect against wrong locale names by testing mask.
-
-	* libgettext.h (gettext_const): Add macro definition.
-	Capitalize macro arguments.
-
-Thu Nov  2 23:15:51 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c (_nl_find_domain):
-	Test for pointer != NULL before accessing value.
-	Reported by Tom Tromey.
-
-	* gettext.c (NULL):
-	Define as (void*)0 instad of 0.  Reported by Franc,ois Pinard.
-
-Mon Oct 30 21:28:52 1995  Ulrich Drepper  <drepper myware>
-
-	* po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
-
-Sat Oct 28 23:20:47 1995  Ulrich Drepper  <drepper myware>
-
-	* libgettext.h: Disable dcgettext optimization for Solaris 2.3.
-
-	* localealias.c (alias_compare):
-	Peter Miller reported that tolower in some systems is
-	even dumber than I thought.  Protect call by `isupper'.
-
-Fri Oct 27 22:22:51 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (libdir, includedir): New variables.
-	(install-src): Install libintl.a and libintl.h in correct dirs.
-
-Fri Oct 27 22:07:29 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
-
-	* po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
-
-	* localealias.c:
-	Fix typo and superflous test.  Reported by Christian von Roques.
-
-Fri Oct  6 11:52:05 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c (_nl_find_domain):
-	Correct some remainder from the pre-CEN syntax.  Now
-	we don't have a constant number of successors anymore.
-
-Wed Sep 27 21:41:13 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (DISTFILES): Add libintl.h.glibc.
-
-	* Makefile.in (dist-libc): Add goal for packing sources for glibc.
-	(COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
-
-	* loadmsgcat.c: Forget to continue #if line.
-
-	* localealias.c:
-	[_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
-	space clean.
-
-	* dcgettext.c, finddomain.c: Better comment to last change.
-
-	* loadmsgcat.c:
-	[_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
-	__fstat, __open, __close, __read, __mmap, and __munmap resp
-	to keep ANSI C name space clean.
-
-	* finddomain.c:
-	[_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
-
-	* dcgettext.c:
-	[_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
-	keep ANSI C name space clean.
-
-	* libgettext.h:
-	Include sys/types.h for those old SysV systems out there.
-	Reported by Francesco Potorti`.
-
-	* loadmsgcat.c (use_mmap): Define if compiled for glibc.
-
-	* bindtextdom.c: Include all those standard headers
-	unconditionally if _LIBC is defined.
-
-	* finddomain.c: Fix 2 times defiend -> defined.
-
-	* textdomain.c: Include libintl.h instead of libgettext.h when
-	compiling for glibc.  Include all those standard headers
-	unconditionally if _LIBC is defined.
-
-	* localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
-
-	* gettext.c:
-	Include libintl.h instead of libgettext.h when compiling for glibc.
-	Get NULL from stddef.h if we compile for glibc.
-
-	* finddomain.c: Include libintl.h instead of libgettext.h when
-	compiling for glibc.  Include all those standard headers
-	unconditionally if _LIBC is defined.
-
-	* dcgettext.c: Include all those standard headers unconditionally
-	if _LIBC is defined.
-
-	* dgettext.c: If compiled in glibc include libintl.h instead of
-	libgettext.h.
-	(locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
-
-	* dcgettext.c: If compiled in glibc include libintl.h instead of
-	libgettext.h.
-	(getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
-
-	* bindtextdom.c:
-	If compiled in glibc include libintl.h instead of libgettext.h.
-
-Mon Sep 25 22:23:06 1995  Ulrich Drepper  <drepper myware>
-
-	* localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
-	Reported by Marcus Daniels.
-
-	* cat-compat.c (bindtextdomain):
-	String used in putenv must not be recycled.
-	Reported by Marcus Daniels.
-
-	* libgettext.h (__USE_GNU_GETTEXT):
-	Additional symbol to signal that we use GNU gettext
-	library.
-
-	* cat-compat.c (bindtextdomain):
-	Fix bug with the strange stpcpy replacement.
-	Reported by Nelson Beebe.
-
-Sat Sep 23 08:23:51 1995  Ulrich Drepper  <drepper myware>
-
-	* cat-compat.c: Include <string.h> for stpcpy prototype.
-
-	* localealias.c (read_alias_file):
-	While expand strdup code temporary variable `cp' hided
-	higher level variable with same name.  Rename to `tp'.
-
-	* textdomain.c (textdomain):
-	Avoid warning by using temporary variable in strdup code.
-
-	* finddomain.c (_nl_find_domain): Remove unused variable `application'.
-
-Thu Sep 21 15:51:44 1995  Ulrich Drepper  <drepper myware>
-
-	* localealias.c (alias_compare):
-	Use strcasecmp() only if available.  Else use
-	implementation in place.
-
-	* intl-compat.c:
-	Wrapper functions now call *__ functions instead of __*.
-
-	* libgettext.h: Declare prototypes for *__ functions instead for __*.
-
-	* cat-compat.c, loadmsgcat.c:
-	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-	of the standard libc and so prevent libintl.a from being used
-	standalone.
-
-	* bindtextdom.c:
-	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-	of the standard libc and so prevent libintl.a from being used
-	standalone.
-	Rename to bindtextdomain__ if not used in GNU C Library.
-
-	* dgettext.c:
-	Rename function to dgettext__ if not used in GNU C Library.
-
-	* gettext.c:
-	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-	of the standard libc and so prevent libintl.a from being used
-	standalone.
-	Functions now called gettext__ if not used in GNU C Library.
-
-	* dcgettext.c, localealias.c, textdomain.c, finddomain.c:
-	Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-	of the standard libc and so prevent libintl.a from being used
-	standalone.
-
-Sun Sep 17 23:14:49 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c: Correct some bugs in handling of CEN standard
- 	locale definitions.
-
-Thu Sep  7 01:49:28 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c: Implement CEN syntax.
-
-	* gettextP.h (loaded_domain): Extend number of successors to 31.
-
-Sat Aug 19 19:25:29 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (aliaspath): Remove path to X11 locale dir.
-
-	* Makefile.in: Make install-src depend on install.  This helps
- 	gettext to install the sources and other packages can use the
- 	install goal.
-
-Sat Aug 19 15:19:33 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (uninstall): Remove stuff installed by install-src.
-
-Tue Aug 15 13:13:53 1995  Ulrich Drepper  <drepper myware>
-
-	* VERSION.in: Initial revision.
-
-	* Makefile.in (DISTFILES):
-	Add VERSION file.  This is not necessary for gettext, but
-	for other packages using this library.
-
-Tue Aug 15 06:16:44 1995  Ulrich Drepper  <drepper myware>
-
-	* gettextP.h (_nl_find_domain):
-	New prototype after changing search strategy.
-
-	* finddomain.c (_nl_find_domain):
-	We now try only to find a specified catalog.  Fall back to other
-	catalogs listed in the locale list is now done in __dcgettext.
-
-	* dcgettext.c (__dcgettext):
-	Now we provide message fall back even to different languages.
-	I.e. if a message is not available in one language all the other
- 	in the locale list a tried.  Formerly fall back was only possible
- 	within one language.  Implemented by moving one loop from
- 	_nl_find_domain to here.
-
-Mon Aug 14 23:45:50 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (gettextsrcdir):
-	Directory where source of GNU gettext library are made
-	available.
-	(INSTALL, INSTALL_DATA): Programs used for installing sources.
-	(gettext-src): New.  Rule to install GNU gettext sources for use in
-	gettextize shell script.
-
-Sun Aug 13 14:40:48 1995  Ulrich Drepper  <drepper myware>
-
-	* loadmsgcat.c (_nl_load_domain):
-	Use mmap for loading only when munmap function is
-	also available.
-
-	* Makefile.in (install): Depend on `all' goal.
-
-Wed Aug  9 11:04:33 1995  Ulrich Drepper  <drepper myware>
-
-	* localealias.c (read_alias_file):
-	Do not overwrite '\n' when terminating alias value string.
-
-	* localealias.c (read_alias_file):
-	Handle long lines.  Ignore the rest not fitting in
-	the buffer after the initial `fgets' call.
-
-Wed Aug  9 00:54:29 1995  Ulrich Drepper  <drepper myware>
-
-	* gettextP.h (_nl_load_domain):
-	Add prototype, replacing prototype for _nl_load_msg_cat.
-
-	* finddomain.c (_nl_find_domain):
-	Remove unneeded variable filename and filename_len.
-	(expand_alias): Remove prototype because functions does not
- 	exist anymore.
-
-	* localealias.c (read_alias_file):
-	Change type of fname_len parameter to int.
-	(xmalloc): Add prototype.
-
-	* loadmsgcat.c: Better prototypes for xmalloc.
-
-Tue Aug  8 22:30:39 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c (_nl_find_domain):
-	Allow alias name to be constructed from the four components.
-
-	* Makefile.in (aliaspath): New variable.  Set to preliminary value.
-	(SOURCES): Add localealias.c.
-	(OBJECTS): Add localealias.o.
-
-	* gettextP.h: Add prototype for _nl_expand_alias.
-
-	* finddomain.c: Aliasing handled in intl/localealias.c.
-
-	* localealias.c: Aliasing for locale names.
-
-	* bindtextdom.c: Better prototypes for xmalloc and xstrdup.
-
-Mon Aug  7 23:47:42 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (DISTFILES): gettext.perl is now found in misc/.
-
-	* cat-compat.c (bindtextdomain):
-	Correct implementation.  dirname parameter was not used.
-	Reported by Marcus Daniels.
-
-	* gettextP.h (loaded_domain):
-	New fields `successor' and `decided' for oo, lazy
-	message handling implementation.
-
-	* dcgettext.c:
-	Adopt for oo, lazy message handliing.
-  	Now we can inherit translations from less specific locales.
-	(find_msg): New function.
-
-	* loadmsgcat.c, finddomain.c:
-	Complete rewrite.  Implement oo, lazy message handling :-).
-  	We now have an additional environment variable `LANGUAGE' with
- 	a higher priority than LC_ALL for the LC_MESSAGE locale.
-  	Here we can set a colon separated list of specifications each
- 	of the form `language[_territory[ codeset]][ modifier]'.
-
-Sat Aug  5 09:55:42 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c (unistd.h):
-	Include to get _PC_PATH_MAX defined on system having it.
-
-Fri Aug  4 22:42:00 1995  Ulrich Drepper  <drepper myware>
-
-	* finddomain.c (stpcpy): Include prototype.
-
-	* Makefile.in (dist): Remove `copying instead' message.
-
-Wed Aug  2 18:52:03 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (ID, TAGS): Do not use $^.
-
-Tue Aug  1 20:07:11 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (TAGS, ID): Use $^ as command argument.
-	(TAGS): Give etags -o option t write to current directory,
- 	not $(srcdir).
-	(ID): Use $(srcdir) instead os $(top_srcdir)/src.
-	(distclean): Remove ID.
-
-Sun Jul 30 11:51:46 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (gnulocaledir):
-	New variable, always using share/ for data directory.
-	(DEFS): Add GNULOCALEDIR, used in finddomain.c.
-
-	* finddomain.c (_nl_default_dirname):
-	Set to GNULOCALEDIR, because it always has to point
-	to the directory where GNU gettext Library writes it to.
-
-	* intl-compat.c (textdomain, bindtextdomain):
-	Undefine macros before function definition.
-
-Sat Jul 22 01:10:02 1995  Ulrich Drepper  <drepper myware>
-
-	* libgettext.h (_LIBINTL_H):
-	Protect definition in case where this file is included as
-	libgettext.h on Solaris machines.  Add comment about this.
-
-Wed Jul 19 02:36:42 1995  Ulrich Drepper  <drepper myware>
-
-	* intl-compat.c (textdomain): Correct typo.
-
-Wed Jul 19 01:51:35 1995  Ulrich Drepper  <drepper myware>
-
-	* dcgettext.c (dcgettext): Function now called __dcgettext.
-
-	* dgettext.c (dgettext): Now called __dgettext and calls
- 	__dcgettext.
-
-	* gettext.c (gettext):
-	Function now called __gettext and calls __dgettext.
-
-	* textdomain.c (textdomain): Function now called __textdomain.
-
-	* bindtextdom.c (bindtextdomain): Function now called
- 	__bindtextdomain.
-
-	* intl-compat.c: Initial revision.
-
-	* Makefile.in (SOURCES): Add intl-compat.c.
-	(OBJECTS): We always compile the GNU gettext library functions.
-  	OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
- 	and intl-compat.o.
-  	(GETTOBJS): Contains now only intl-compat.o.
-
-	* libgettext.h:
-	Re-include protection matches dualistic character of libgettext.h.
-	For all functions in GNU gettext library define __ counter part.
-
-	* finddomain.c (strchr): Define as index if not found in C library.
-	(_nl_find_domain): For relative paths paste / in between.
-
-Tue Jul 18 16:37:45 1995  Ulrich Drepper  <drepper myware>
-
-	* loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
-
-	* xopen-msg.sed: Fix bug with `msgstr ""' lines.
-	A little bit better comments.
-
-Tue Jul 18 01:18:27 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in:
-	po-mode.el, makelinks, combine-sh are now found in ../misc.
-
-	* po-mode.el, makelinks, combine-sh, elisp-comp:
-	Moved to ../misc/.
-
-	* libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
-
-Sun Jul 16 22:33:02 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (INSTALL, INSTALL_DATA): New variables.
-	(install-data, uninstall): Install/uninstall .elc file.
-
-	* po-mode.el (Installation comment):
-	Add .pox as possible extension of .po files.
-
-Sun Jul 16 13:23:27 1995  Ulrich Drepper  <drepper myware>
-
-	* elisp-comp: Complete new version by Franc,ois: This does not
- 	fail when not compiling in the source directory.
-
-Sun Jul 16 00:12:17 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (../po/cat-id-tbl.o):
-	Use $(MAKE) instead of make for recursive make.
-
-	* Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
-	(install-exec): Add missing dummy goal.
-	(install-data, uninstall): @ in multi-line shell command at
- 	beginning, not in front of echo.  Reported by Eric Backus.
-
-Sat Jul 15 00:21:28 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (DISTFILES):
-	Rename libgettext.perl to gettext.perl to fit in 14 chars
-	file systems.
-
-	* gettext.perl:
- 	Rename to gettext.perl to fit in 14 chars file systems.
-
-Thu Jul 13 23:17:20 1995  Ulrich Drepper  <drepper myware>
-
-	* cat-compat.c: If !STDC_HEADERS try to include malloc.h.
-
-Thu Jul 13 20:55:02 1995  Ulrich Drepper  <drepper myware>
-
-	* po2tbl.sed.in: Pretty printing.
-
-	* linux-msg.sed, xopen-msg.sed:
-	Correct bugs with handling substitute flags in branches.
-
-	* hash-string.h (hash_string):
-	Old K&R compilers don't under stand `unsigned char'.
-
-	* gettext.h (nls_uint32):
-	Some old K&R compilers (eg HP) don't understand `unsigned int'.
-
-	* cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
-
-Thu Jul 13 01:34:33 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (ELCFILES): New variable.
-	(DISTFILES): Add elisp-comp.
-	Add implicit rule for .el -> .elc compilation.
-	(install-data): install $ELCFILES
-	(clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
-
-	* elisp-comp: Initial revision
-
-Wed Jul 12 16:14:52 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in:
-	cat-id-tbl.c is now found in po/.  This enables us to use an identical
-	intl/ directory in all packages.
-
-	* dcgettext.c (dcgettext): hashing does not work for table size <= 2.
-
-	* textdomain.c: fix typo (#if def -> #if defined)
-
-Tue Jul 11 18:44:43 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in (stamp-cat-id): use top_srcdir to address source files
-	(DISTFILES,distclean): move tupdate.perl to src/
-
-	* po-to-tbl.sed.in:
-	add additional jump to clear change flag to recognize multiline strings
-
-Tue Jul 11 01:32:50 1995  Ulrich Drepper  <drepper myware>
-
-	* textdomain.c: Protect inclusion of stdlib.h and string.h.
-
-	* loadmsgcat.c: Protect inclusion of stdlib.h.
-
-	* libgettext.h: Protect inclusion of locale.h.
-	Allow use in C++ programs.
-	Define NULL is not happened already.
-
-	* Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
-	po-to-tbl.sed.
-	(distclean): remove po-to-tbl.sed and tupdate.perl.
-
-	* tupdate.perl.in: Substitute Perl path even in exec line.
-	Don't include entries without translation from old .po file.
-
-Tue Jul  4 00:41:51 1995  Ulrich Drepper  <drepper myware>
-
-	* tupdate.perl.in: use "Updated: " in msgid "".
-
-	* cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
- 	Define getenv if !__STDC__.
-
-	* bindtextdom.c: Protect stdlib.h and string.h inclusion.
- 	Define free if !__STDC__.
-
-	* finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
- 	Define free if !__STDC__.
-
-	* cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
-
-Mon Jul  3 23:56:30 1995  Ulrich Drepper  <drepper myware>
-
-	* Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
-	Remove unneeded $(srcdir) from Makefile.in dependency.
-
-	* makelinks: Add copyright and short description.
-
-	* po-mode.el: Last version for 0.7.
-
-	* tupdate.perl.in: Fix die message.
-
-	* dcgettext.c: Protect include of string.h.
-
-	* gettext.c: Protect include of stdlib.h and further tries to get NULL.
-
-	* finddomain.c: Some corrections in includes.
-
-	* Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
-
-	* po-to-tbl.sed: Adopt for new .po file format.
-
-	* linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
-
-Sun Jul  2 23:55:03 1995  Ulrich Drepper  <drepper myware>
-
-	* tupdate.perl.in: Complete rewrite for new .po file format.
-
-Sun Jul  2 02:06:50 1995  Ulrich Drepper  <drepper myware>
-
-	* First official release.  This directory contains all the code
-	needed to internationalize own packages.  It provides functions
-	which allow to use the X/Open catgets function with an interface
-	like the Uniforum gettext function.  For system which does not
-	have neither of those a complete implementation is provided.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
deleted file mode 100644
index 45268f6..0000000
--- a/lisp/ChangeLog
+++ /dev/null
@@ -1,7058 +0,0 @@
-2007-11-02  John Harper  <jsh unfactored org>
-
-	* rep/util/repl.jl: integrated patch from Timo Korvola to do
-	meta command completion (scavenged from sawfish list archives)
-
-2004-10-06  John Harper  <jsh unfactored org>
-
-	* rep/util/repl.jl: added ,compile-file command
-
-2004-02-21  John Harper  <jsh unfactored org>
-
-	* rep/xml/reader.jl (read-exclam-body): swallow the closing '>'
-	character
-
-2003-11-24  John Harper  <jsh unfactored org>
-
-	* version 0.17
-
-2003-05-08  John Harper  <jsh unfactored org>
-
-	* rep/util/repl.jl (,collect): print memory usage statistics
-
-2003-07-08  John Harper  <jsh unfactored org>
-
-	* rep/xml/reader.jl (read-tag-body): unreverse items when
-	creating the item. Adapted from a patch from Alexander V.
-	Nikolaev <avn altlinux ru>
-
-2003-03-18  John Harper  <jsh unfactored org>
-
-	* rep/data/string-util.jl (string-capitalized-p,
-	capitalize-string): fixed zero-length string case. Pointed out
-	and fixed by Charles Stewart <cas linearity org>, though I used
-	a slightly different patch
-
-2003-02-25  John Harper  <jsh unfactored org>
-
-	* version 0.16.2
-
-2002-09-29  John Harper  <jsh unfactored org>
-
-	* rep/lang/interpreter.jl (define-special-variable): define
-	manually, not using backquote, which seems to sometimes not be
-	loaded when this is used
-
-2002-09-21  John Harper  <jsh unfactored org>
-
-	* rep/vm/compiler/modules.jl (compiler-boundp): check if arg is
-	a symbol
-
-2002-08-01  John Harper  <jsh unfactored org>
-
-	* rep/xml/reader.jl (read-param-list): skip whitespace around
-	'=' characters in attribute lists
-
-2002-06-22  John Harper  <jsh unfactored org>
-
-	* version 0.16.1
-
-	* Makefile.in: include rep/xml in installed modules
-
-	* rep/vm/compiler/modules.jl (find-structure): catch the error
-	that happens if the module can't be loaded and return nil
-
-2002-06-20  John Harper  <jsh unfactored org>
-
-	* version 0.16
-
-	* rep/xml/reader.jl, rep/xml/printer.jl: some code I wrote when
-	I was interested in making rep speak xml-rpc. I didn't finish
-	it, but, if I recall correctly, the xml parser and printer
-	worked well enough that it might be useful for toy problems..
-
-2002-04-21  John Harper  <jsh unfactored org>
-
-	* rep/util/autoloader.jl (make-autoloader): propagate arbitrary
-	arguments after the two we're interested in
-
-2002-04-14  John Harper  <jsh unfactored org>
-
-	* rep/data/queues.jl: rewritten so that enqueuing is O(1) not
-	O(n)
-
-2002-04-13  John Harper  <jsh unfactored org>
-
-	* rep/threads/proxy.jl: new module, untested, written a long
-	time ago and never used
-
-	* rep/lang/profiler.jl: don't use the "interval" when printing
-	results, it's totally bogus..
-
-	* rep/user.jl (parse-options): in --debug mode, break on failed
-	checks, etc
-
-2002-03-30  John Harper  <jsh unfactored org>
-
-	* rep/net/rpc.jl: more reliable/predictable error handling.
-	Also when closing a socket, report failures on any requests
-	pending on that socket (avoids hanging forever..)
-
-2002-03-24  John Harper  <jsh unfactored org>
-
-	* rep/vm/compiler/inline.jl (max-inline-depth): increased from
-	8 to 64
-
-2002-03-09  John Harper  <jsh pixelslut com>
-
-	* rep/util/repl.jl (repl-eval, define-repl-command): export
-	these functions - they may be useful for custom repls
-
-2002-03-03  John Harper  <jsh pixelslut com>
-
-	* rep/data/objects.jl: added an object-lambda macro that's
-	useful when the body of the object (i.e. the method switch)
-	needs to be implemented by hand
-
-2002-02-27  John Harper  <jsh pixelslut com>
-
-	* rep/net/rpc.jl (make-proxy): use a table of weak references
-	to cache rpc proxies
-
-2002-02-09  John Harper  <jsh unfactored org>
-
-	* rep/util/repl.jl (do-readline): new function to avoid loading
-	and using readline if stdin isn't a tty
-
-2002-01-20  John Harper  <jsh unfactored org>
-
-	* rep/data/trie.jl: new module. A useful data structure for
-	encoding word lists as character trees
-
-2001-12-20  John Harper  <jsh unfactored org>
-
-	* rep/net/rpc.jl: new (incompatible) rpc protocol. It now
-	allows three types of calls, synchronous, asynchronous (a
-	callback will be called with the result) and one-way
-
-2001-12-14  John Harper  <jsh unfactored org>
-
-	* rep/io/streams.jl (format-hooks-alist): initialize this
-	correctly, so the function values are added, not their names
-
-2001-10-28  John Harper  <jsh unfactored org>
-
-	* version 0.15.2
-
-2001-10-19  John Harper  <jsh unfactored org>
-
-	* rep/util/repl.jl: renamed ,dis as ,disassemble (since the
-	unique prefix thing will accept ,dis anyway)
-
-2001-10-11  John Harper  <jsh unfactored org>
-
-	* rep/lang/interpreter.jl (default-error-handler): catch and
-	ignore errors that happen in the error handler (to avoid a
-	possible infinite loop..)
-
-2001-10-01  John Harper  <jsh unfactored org>
-
-	* version 0.15
-
-2001-09-15  John Harper  <jsh unfactored org>
-
-	* rep/www/cgi-get.jl (self-test): new function. Some test cases
-
-	* rep/www/quote-url.jl (quote-url, unquote-url): defined in
-	terms of string-replace now
-	(self-test): new function. A few test cases for this module
-
-	* rep/regexp.jl (string-replace): the TEMPLATE parameter may
-	now be a function, e.g. (string-replace "[ab]" (lambda (s) (1+
-	(aref s (match-start)))) "foobar") -> "foocbr"
-
-2001-09-02  John Harper  <jsh pixelslut com>
-
-	* rep/io/file-handlers/tilde.jl (tilde-file-handler): fixed
-	last change to this file so that it actually does expand the
-	stuff after the tilde sometimes!
-
-	* rep/vm/compiler/rep.jl (compile-log): new function, handles
-	the new `log' function (which optionally has a BASE parameter).
-	Compiles this into two calls to log and a divide
-
-	* rep/util/repl.jl: fixed ,reload and ,unload commands not to
-	try to unload structures that don't actually exist
-
-2001-08-31  John Harper  <jsh pixelslut com>
-
-	* rep/test/framework.jl (run-all-self-tests,
-	run-module-self-tests): these both return the number of failed
-	tests now
-
-2001-08-27  John Harper  <jsh pixelslut com>
-
-	* rep/util/repl.jl: meta commands may now be specified using
-	unique prefixes, instead of their whole name
-
-2001-08-24  John Harper  <jsh pixelslut com>
-
-	* rep/io/file-handlers/tilde.jl (tilde-file-handler): in
-	expand-file-name handler, only try to expand non-null things
-	after the tilde
-
-2001-08-16  John Harper  <jsh pixelslut com>
-
-	* rep/vm/compiler/rep.jl (compile-set): raise an error if
-	trying to set value of a non-symbol
-
-2001-08-13  John Harper  <jsh pixelslut com>
-
-	* rep/vm/compiler/rep.jl (compile-letrec): when compiling the
-	lambda for the second time, turn off all output (to avoid
-	repeating error messages)
-
-	* rep/vm/compiler/utils.jl (silence-compiler): new fluid
-	variable
-	(compiler-message): only print messages if silence-compiler is
-	false
-
-	* rep/threads/message-port.jl (message-fetch): rewrote wait
-	loop so it always tries once after condition-wait failed
-
-	* rep/lang/debugger.jl (print-backtrace): print backtrace in
-	top to bottom order, not bottom to top
-
-2001-08-10  John Harper  <jsh pixelslut com>
-
-	* rep/threads/message-port.jl (message-send): remembered to
-	actually signal the condition after enqueuing the message!
-
-2001-08-09  John Harper  <jsh pixelslut com>
-
-	* rep/threads/message-port.jl: new module, implements a simple
-	message queue for threads using mutexes and condition variables
-
-	* rep/net/rpc.jl: one minor bug fix
-
-2001-08-08  John Harper  <jsh pixelslut com>
-
-	* rep/user.jl, rep/lang/debugger.jl: renamed --rep-debug as
-	--debug and --rep-emacs-debugger as --emacs-debug
-
-2001-08-07  John Harper  <jsh pixelslut com>
-
-	* rep/lang/define.jl (define-scan-body): only return new list
-	structure if it's different to the original. This prevents line
-	number information being discarded needlessly
-
-	* rep/lang/debugger.jl: much improved. Supports line numbers
-	(with emacs style embedded cookies), better backtraces, etc..
-
-	* rep/user.jl: support --rep-debug option -- launches into the
-	debugger
-
-	* rep/data/ring.jl, rep/data/queues.jl: 
-	* rep/io/file-handlers/remote/rep.jl,
-	rep/io/file-handlers/remote/ftp.jl: 
-	* rep/lang/interpreter.jl: 
-	* rep/threads/condition-variable.jl: 
-	* rep/util/repl.jl:
-	* scheme/misc.jl, scheme/data.jl: 
-	* unscheme/misc.jl, unscheme/data.jl:
-
-	Declarations to silence compiler warnings about unused
-	parameters
-
-	* rep/vm/compiler.jl: 
-	* rep/vm/compiler/utils.jl, rep/vm/compiler/scheme.jl,
-	rep/vm/compiler/rep.jl, rep/vm/compiler/modules.jl,
-	rep/vm/compiler/inline.jl, rep/vm/compiler/bindings.jl,
-	rep/vm/compiler/basic.jl: 
-
-	Better error reporting, including (gasp) line numbers
-
-2001-08-02  John Harper  <jsh pixelslut com>
-
-	* rep/threads/condition-variable.jl (condition-variable-wait):
-	new optional TIMEOUT parameter. The function returns false if
-	the timeout expires. Note that even if this is the case the
-	function will still re-obtain the mutex before exiting. Also,
-	release the mutex and suspend the thread atomically
-
-	* rep/threads/mutex.jl (obtain-mutex): new optional TIMEOUT
-	parameter. The function returns false if the timeout expired
-	and the mutex couldn't be obtained, true otherwise
-
-2001-08-01  John Harper  <jsh pixelslut com>
-
-	* rep/vm/compiler/modules.jl (symbol-value-1): return false for
-	variables with local bindings
-
-	(compiler-macroexpand-1): ignore macro calls whose name has a
-	local bindings
-
-	* rep/util/repl.jl (repl-iterate): ignore empty lines
-
-2001-07-31  John Harper  <jsh pixelslut com>
-
-	* rep/data/objects.jl (object): reverted last change (factoring
-	out lambda expressions). It moves them out of the scope of the
-	`self' parameter, which is a bad thing
-
-2001-07-30  John Harper  <jsh pixelslut com>
-
-	* rep/data/objects.jl: move method bodies that are lambda
-	expressions into a let block outside the object's lambda in the
-	expansion, then reference their new names. This avoids consing
-	a new closure each time a method is called
-
-2001-07-28  John Harper  <jsh pixelslut com>
-
-	* rep/io/file-handlers/tilde.jl: fixed the logic for
-	substituting ~ for the user's home directory at initialization
-
-	* rep/lang/error-helper.jl (for-each-structure): ignore null
-	structures (possible if called while creating a structure?)
-
-2001-07-26  John Harper  <jsh pixelslut com>
-
-	* rep/util/repl.jl: don't print results that are #undefined
-
-	* rep/lang/interpreter.jl, rep/util/gaol.jl (define-value):
-	finally deleted
-
-	* rep/lang/interpreter.jl: export a self-referential binding of
-	#undefined
-
-	* rep/lang/error-helper.jl: new module -- given an error, try
-	to deduce what could have caused, and how the user can avoid it
-	in future. Currently only handles some void-value errors
-
-	* rep/lang/interpreter.jl (default-error-handler): call the
-	error-helper function
-
-	* rep/data/objects.jl: objects now have an implicit `self'
-	binding -- the object representing themself (or their derived
-	self). Also fixed a bug where the BASE-OBJECT parameter could
-	be evaluated zero or multiple times, instead of just once
-
-2001-07-22  John Harper  <jsh pixelslut com>
-
-	* rep/util/repl.jl: use the standard error handler, instead of
-	a cut-and-pasted version
-
-2001-07-17  John Harper  <jsh pixelslut com>
-
-	* rep/lang/interpreter.jl (letrec): allow right-hand-sides of
-	letrec bindings to have more than one form
-
-	* rep/io/file-handlers/remote/rep.jl
-	(remote-rep-output-filter): don't print annoying messages about
-	unhandled input
-
-2001-07-15  John Harper  <jsh pixelslut com>
-
-	* rep/user.jl: catch errors signalled during command line
-	option processing, pass them to the default error handler and
-	quit. This avoids the horrible `error -> (void-value foo)'
-	style error messages
-
-2001-07-02  John Harper  <jsh pixelslut com>
-
-	* version 0.14
-
-2001-06-29  John Harper  <jsh pixelslut com>
-
-	* rep/net/rpc.jl: added some (disabled) debugging code
-
-	* rep/net/rpc.jl: minor changes
-
-2001-06-28  John Harper  <jsh pixelslut com>
-
-	* rep/net/rpc.jl (async-rpc-call, make-proxy,
-	rpc-output-handler): support async (`one way') rpc requests
-
-	* rep/data.jl (vector->list, list->vector): new functions
-
-	* rep/net/rpc.jl (make-proxy): precalculate global-id value
-
-2001-06-27  John Harper  <jsh pixelslut com>
-
-	* rep/net/rpc.jl: added some comments, some API changes
-
-2001-06-26  John Harper  <jsh pixelslut com>
-
-	* rep/net/rpc.jl (call-with-rpc-servant): new function
-
-	* rep/net/rpc.jl: misc changes. Added support for global
-	servant ids (prefixed with ip address and port number)
-
-	* rep/net/rpc.jl: new module -- simple Lisp syntax based RPC
-	mechanism over TCP streams
-
-2001-06-14  John Harper  <jsh pixelslut com>
-
-	* rep/vm/compiler/rep.jl (compile-cond): disabled dead-code
-	warnings after constant conditions, they're too annoying to be
-	useful
-
-2001-05-04  John Harper  <jsh eazel com>
-
-	* rep/vm/compiler/rep.jl (trans-defvar): fixed typo in the last
-	change (using , in a non-backquote form)
-
-2001-05-01  John Harper  <jsh eazel com>
-
-	* rep/vm/compiler/rep.jl (trans-defvar): if the defvar has a
-	constant doc string, add it to the documentation database
-
-2001-04-30  John Harper  <jsh eazel com>
-
-	* rep/lang/interpreter.jl (define-special-variable): new macro,
-	a combination of defvar and setq. It always declares the
-	variable special and it always sets the value
-
-2001-03-26  John Harper  <jsh eazel com>
-
-	Work to make rep self-testing. The framework and some tests
-	exist, but I still need to add unit tests for many modules:
-
-	* rep/test/framework.jl: self-testing framework. Provides
-	`assert', 'check' and `test' macros, as well as random other
-	stuff for supporting these. 
-
-	* rep/test/data.jl: tests for rep.data module
-
-	* rep/data/queues.jl: added self tests
-
-	* rep/user.jl: added --check option
-	* rep/util/repl.jl: added a `,check' command
-	* Makefile.in: added a `check' target
-
-	* rep/io/file-handlers/remote/rep.jl (remote-rep-while): use
-	accept-process-output-1 instead of accept-process-output
-	(remote-rep-output-filter): ignore blank lines
-
-2001-03-22  John Harper  <jsh eazel com>
-
-	* version 0.13.5
-
-2001-03-21  John Harper  <jsh eazel com>
-
-	* rep/io/file-handlers/tar.jl (tarfh-call-tar): only call
-	tarfh-check-tar-program if the given tar file actually exists
-
-2001-03-12  John Harper  <jsh eazel com>
-
-	* rep/io/file-handlers/tar.jl
-	(tarfh-alternative-gnu-tar-programs): added `gnutar' and the
-	GNU tar emulation script to this list
-
-	(tarfh-list-regexp): hacked this to also recognize the date
-	format used by Solaris tar
-
-2001-02-13  John Harper  <jsh eazel com>
-
-	* rep.jl (debug-entry, debug-exit, debug-error-entry): declare
-	using defvar
-
-2001-02-12  John Harper  <jsh eazel com>
-
-	* rep/data/string-util.jl (string-upper-case-p,
-	string-lower-case-p): only return t if the string contains at
-	least one upper/lower case character
-
-2001-01-27  John Harper  <jsh eazel com>
-
-	* rep/i18n/xgettext.jl (scan): fixed typo when scanning
-	`lambda' forms (was scanning the car (!?) instead of the cddr)
-
-2001-01-14  John Harper  <jsh eazel com>
-
-	* rep/util/gaol.jl (gaol-safe-functions): added listp
-
-2001-01-08  John Harper  <jsh eazel com>
-
-	* rep/util/repl.jl (repl-iterate): change the error handler
-	reading normal forms to catch premature-end-of-stream, not
-	end-of-stream
-
-2001-01-04  John Harper  <jsh eazel com>
-
-	* version 0.13.4
-
-2000-12-29  John Harper  <jsh eazel com>
-
-	* rep/threads/condition-variable.jl: new file, implemented
-	the usual condition variable interface (but not quite strong
-	enough for SRFI-18 compatibility, condition-variable-wait would
-	need a TIMEOUT parameter)
-
-2000-12-20  John Harper  <jsh eazel com>
-
-	* rep/util/gaol.jl (gaol-safe-functions): added string-split
-	and string-replace
-
-2000-12-03  John Harper  <jsh eazel com>
-
-	* version 0.13.3
-
-2000-11-27  John Harper  <jsh eazel com>
-
-	* scheme/data.jl: when defining `>' and similar predicates, use
-	`rep#FOO' to get the rep versions, instead of just relying on
-	the fact that their local bindings haven't been created yet
-
-2000-11-26  John Harper  <jsh eazel com>
-
-	* rep/lang/define.jl (define-scan-form): don't expand (i.e.
-	delete) declaration forms
-
-2000-11-21  John Harper  <jsh eazel com>
-
-	* rep/vm/peephole.jl (peephole-optimizer): added transformation
-	`{jpt,jpn,jtp,jnp} X; jmp Y; X: --> {jnp,jtp,jpn.jpt} Y; X:',
-	can help some `do' loops e.g.
-
-2000-11-12  John Harper  <jsh eazel com>
-
-	* rep/util/repl.jl (completion-generator): pass this function
-	as an argument to `readline' (i.e. don't call it
-	rl-completion-generator)
-
-2000-10-23  John Harper  <jsh eazel com>
-
-	* version 0.13.2
-
-2000-10-18  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: patch from Scott Heavner <sdh po cwru edu> to
-	fix `install' shell scripting
-
-2000-09-29  John Harper  <john dcs warwick ac uk>
-
-	* rep/lang/define.jl: track bound variables, then don't expand
-	calls to these special forms or macros
-
-2000-09-28  John Harper  <john dcs warwick ac uk>
-
-	* version 0.13.1
-
-2000-09-27  John Harper  <john dcs warwick ac uk>
-
-	* rep/io/file-handlers/remote/ftp.jl (remote-ftp-get-file):
-	work around bug in `ls .' with my (wu) ftpd
-
-	* rep/system/pwd-prompt.jl: import rep.io.streams and
-	rep.lang.math
-
-2000-09-26  John Harper  <john dcs warwick ac uk>
-
-	* rep/lang/define.jl (define-scan-form): don't expand structure
-	or define-structure forms (any internal definitions they
-	contain should be treated as top-level within the structure)
-
-2000-09-24  John Harper  <john dcs warwick ac uk>
-
-	* rep/data.jl (remove-if, remove-if-not): new functions
-
-2000-09-22  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/modules.jl (note-require): try to fix this
-	slightly in the presence of unmodularized files
-
-2000-09-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.13
-
-2000-09-19  John Harper  <john dcs warwick ac uk>
-
-	* rep/net/domain-name.jl: new file, some domain name functions
-	(from TITAN)
-
-	* rep/regexp.jl (string-split): new function
-
-	* rep.jl, rep/user.jl, rep/io/files.jl,
-	rep/vm/compiler/modules.jl: *root-structure* is now replaced by
-	*user-structure*
-
-2000-09-18  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/modules.jl (current-module): this now
-	defaults to *user-structure* not *root-structure*
-
-2000-09-17  John Harper  <john dcs warwick ac uk>
-
-	* rep/lang/doc.jl (describe-value): replaced `Built-in' by
-	`Native' to describe subrs
-
-	* rep/util/repl.jl (,describe): pass structure name to
-	describe-value
-
-	* rep/lang/interpreter.jl (nil, t, defmacro): use third arg of
-	%define to specify documentation of these bindings
-
-	* rep/lang/doc.jl (describe-value): include special-variable
-	and immutable-binding information in the type description.
-	Don't surround the name in parentheses unless we have details
-	of the parameter list
-
-	(documentation): don't use boundp/symbol-value to look for
-	in-core documentation
-
-2000-09-14  John Harper  <john dcs warwick ac uk>
-
-	* rep/util/repl.jl (locate-binding*): only check the current
-	module for a binding when one isn't imported, not the other way
-	around
-
-2000-09-12  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/rep.jl: after lifting top-level progn forms,
-	add progns to coalesce forms that wouldn't be compiled
-	specially at top-level. Each progn then forms a single byte
-	code form
-
-2000-09-11  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: invoke compile-assembler before compile-compiler
-
-	* rep/vm/compiler.jl (compile-assembler): new function
-
-	* rep/vm/peephole.jl: rep.vm.compiler.opt moved here since it
-	may be useful outside the compiler
-
-	* rep/vm/compiler/opt.jl: remove dependences on other compiler
-	modules
-
-	* rep/util/repl.jl (locate-binding*): check the current module
-	before looking in the imports
-
-	* rep/lang/define.jl: groks doc strings in `(define SYMBOL
-	VALUE DOC)' forms. Will move them to the body of defuns, or
-	else leave them in the %define form
-
-	* rep/vm/compiler/rep.jl (do-pass-2): extract doc strings from
-	%define forms
-
-2000-09-10  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: `rep.io.streams' is exported from `rep' again. I've
-	decided it's too fundamental not to. Changed all the modules
-	that imported it explicitly
-
-2000-09-09  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/modules.jl: when compiling module definition
-	forms, after compiling the top-level forms, ensure that the
-	resulting lambda expression is compiled in the correct module
-	environment
-
-2000-09-08  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: don't export rep.repexp, rep.system, rep.io.streams,
-	rep.io.files, rep.io.processes, rep.io.file-handlers. If
-	they're needed, they'll need to be imported explicitly
-
-	The rationale is that `(open rep)' should just specify the
-	language, and not unrelated random parts of the runtime
-	environment. Also, I can imagine systems where some of these
-	modules (e.g. rep.io.processes) aren't available
-
-	* rep/vm/compiler/utils.jl (test-variable-ref,
-	test-variable-bind, test-function-call): never use boundp to
-	check for validity of reference. Use compiler-boundp instead.
-	Similar for symbol-value and compiler-symbol-value
-
-	* rep/vm/compiler/modules.jl (compiler-boundp): new function
-
-	* rep/system.jl, rep/lang/interpreter.jl (nop, interactive):
-	moved from rep.system to rep.lang.interpreter
-
-	* rep/data.jl, rep/data/string-util.jl, rep/regexp.jl
-	(string-replace): moved from rep.data to rep.regexp
-
-	* scheme/misc.jl, unscheme/misc.jl: explicitly reference all
-	used bindings in rep.io.streams
-
-	* rep/user.jl: 
-	* rep/data/records.jl: 
-	* rep/i18n/xgettext.jl: 
-	* rep/io/file-handlers/tilde.jl, rep/io/file-handlers/tar.jl,
-	rep/io/file-handlers/remote.jl: 
-	* rep/io/file-handlers/remote/utils.jl,
-	rep/io/file-handlers/remote/rep.jl,
-	rep/io/file-handlers/remote/rcp.jl,
-	rep/io/file-handlers/remote/ftp.jl: 
-	* rep/lang/profiler.jl, rep/lang/doc.jl, rep/lang/debugger.jl: 
-	* rep/mail/addr.jl: 
-	* rep/util/ispell.jl, rep/util/gaol.jl, rep/util/date.jl,
-	rep/util/base64.jl: 
-	* rep/vm/disassembler.jl, rep/vm/compiler.jl: 
-	* rep/vm/compiler/inline.jl, rep/vm/compiler/basic.jl: 
-	* rep/www/quote-url.jl, rep/www/fetch-url.jl,
-	rep/www/cgi-get.jl: 
-
-	Added necessary imports of the modules removed from `rep'
-	interface
-
-	* rep/util/repl.jl: new command `,whereis VAR'
-
-2000-09-07  John Harper  <john dcs warwick ac uk>
-
-	* rep/util/time.jl: new module, a few utilities for converting
-	timestamps to scalars and vice versa. From TITAN
-
-2000-09-06  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/modules.jl: added `(declare (language LANG))'
-	declaration
-
-	* rep/data/objects.jl (object): added a second method syntax:
-	(METHOD-NAME FUNCTION) (in addition to ((METHOD-NAME .
-	PARAM-LIST) BODY...)). This allows arbitrary functions to be
-	used as method implementations
-
-2000-09-05  John Harper  <john dcs warwick ac uk>
-
-	* rep/module-system.jl: don't explcitly export `provide',
-	`require' and `featurep', this is done from C code now
-
-	* rep/data/records.jl: instead of using a static (higher-order)
-	record-constructor function, create a local function for each
-	record type. This allows the constructor parameter list to
-	include all standard rep lambda-list features (i.e. including
-	keywords and default values, etc..)
-
-	* Makefile.in: lisp depends on ../src/.libexec
-
-2000-09-04  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/scheme.jl: when compiling let* and letrec
-	forms, scan out inner defines before passing the forms to the
-	rep compilers
-	* rep/vm/compiler/unscheme.jl: same thing
-
-	* scheme/syntax-funs.jl (expand-letrec): expand inner defines
-	in body by hand; `lambda' would miss them since they come after
-	the initialising `set!' forms
-
-	* rep/i18n/xgettext.jl: track the current module name while
-	scanning, and export it via the current-module fluid
-
-2000-09-03  John Harper  <john dcs warwick ac uk>
-
-	* rep/util/repl.jl: added command `,locate SYM' to find the
-	module that a variable is bound in
-
-	* rep/lang/doc.jl (describe-value): fixed bug of not looking
-	for the documentation of functions not yet autoloaded
-
-	* rep/structures.jl (locate-binding): new function
-
-	* rep/data/string-util.jl (string-replace): new function
-	* rep/data.jl: autoload string-replace
-
-	* rep/lang/doc.jl: store doc strings under keys `MODULE#SYMBOL'
-	instead of just `SYMBOL'. (The old-style keys are still checked
-	when searching for documentation.) Changed some function
-	parameter lists to include a STRUCTURE parameter
-
-	* rep/lang/compat-doc.jl: new file, a compatibility layer for
-	the 'lisp-doc module in the last rep release
-
-	* rep/util/repl.jl: `,describe' command scans the imported
-	modules for the binding of the thing being queried
-
-	* rep/vm/compiler/modules.jl: export current-module
-	* rep/vm/compiler/rep.jl, rep/vm/compiler/basic.jl: changed for
-	new rep.lang.doc function parameters
-
-	* rep/util/repl.jl (repl-completions): new function
-
-2000-09-02  John Harper  <john dcs warwick ac uk>
-
-	* rep/util/gaol.jl (define-gaol-structure): new function, used
-	to assign a module name to a gaol
-
-	* rep/util/ispell.jl: use accept-process-input-1 so as not to
-	call other process handlers asynchronously
-
-2000-08-27  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/inline.jl, rep/vm/compiler/basic.jl: now
-	evaluate default values of #!optional and #!key parameters
-
-	* rep/vm/disassembler.jl, rep/vm/bytecode-defs.jl:
-	foo-arg-with-default is now foo-arg*, these now push a variable
-	number of values
-
-	* rep/data.jl (remove, remq): new functions
-
-2000-08-25  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/rep.jl (pass-1): recursively flatten `progn'
-	forms (correctly now)
-
-	* rep/vm/compiler/utils.jl (compiler-constant-p,
-	compiler-constant-value): handle keyword symbols
-
-2000-08-21  John Harper  <john dcs warwick ac uk>
-
-	* rep/i18n/xgettext.jl (scan): scan bodies of define-structure
-	and structure forms
-
-2000-08-17  John Harper  <john dcs warwick ac uk>
-
-	* rep/util/gaol.jl (gaol-define-vm): new function, installs a
-	given virtual machine in the gaol
-
-	* rep/vm/compiler/bindings.jl: added `(unused VARS...)'
-	declaration to selectively turn off unused variable warnings
-
-	* rep/lang/doc.jl, rep/vm/compiler/utils.jl,
-	rep/vm/compiler/inline.jl, rep/vm/compiler/basic.jl: support
-	default values in #!optional and #!key params
-
-	* rep/vm/disassembler.jl, rep/vm/bytecode-defs.jl
-	(optional-arg-with-default, keyword-arg-with-default): new
-	instructions
-
-	* rep/util/gaol.jl: added `intern' and `do'
-
-2000-08-16  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/utils.jl (test-function-call): don't warn
-	about too many args if the function has #!key params
-
-	* rep/vm/compiler/rep.jl (compile-condition-case): when
-	creating an unused binding for `(condition-case nil ...)' mark
-	it as referenced to avoid a compiler warning
-
-	* rep/vm/compiler/utils.jl (remember-function): handle
-	#!optional, #!rest and #!key
-	(compiler-deprecated): new function
-
-	* rep/vm/compiler/inline.jl (push-inline-args): handle
-	#!optional and #!rest. Error out if #!key is encountered
-
-	* rep/vm/compiler/basic.jl (compile-form-1): compile keyword
-	symbols as constants
-	(compile-lambda-spec): handle #!optional, #!rest and #!key,
-	deprecated &optional and &rest
-
-	* all lisp files: use #!optional and #!rest instead of
-	deprecated &optional and &rest
-
-2000-08-15  John Harper  <john dcs warwick ac uk>
-
-	* scheme/data.jl (symbol?, string-ci>?, string-ci>=?): fixed
-	these functions
-
-	* scheme/data.jl: use standard rep cons accessors. R5RS says
-	that ``it is an error to take the c[ad]r of the empty list''.
-	But §1.3.2 notes that detection of ``is an error'' situations
-	is not required
-
-	* rep/vm/compiler/scheme.jl: use standard cons accessors;
-	compile `list-ref' and `list-tail' using `nth' and `nthcdr'
-	instructions
-	* rep/vm/compiler/unscheme.jl: use `list-ref' and `list-tail'
-	inliners from the scheme compiler
-
-	* rep/vm/compiler/rep.jl: added inliner properties for cadddr
-
-	* rep/vm/compiler/unscheme.jl, rep/vm/compiler/scheme.jl: when
-	copying rep-compile-fun properties, also copy
-	rep-compile-opcode if it's present
-
-2000-08-13  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/opt.jl: new patterns, `push 0; num-eq ->
-	zerop', `zerop; not -> not-zero-p'
-
-	* rep/vm/bytecodes.jl, disassembler.jl (not-zero-p): new
-	instruction
-
-	* rep/data/sort.jl, rep/io/file-handlers/tar.jl,
-	rep/io/file-handlers/remote/utils.jl,
-	rep/io/file-handlers/remote/rep.jl,
-	rep/io/file-handlers/remote/rcp.jl,
-	rep/io/file-handlers/remote/ftp.jl, rep/lang/doc.jl,
-	rep/lang/define.jl, rep/lang/backquote.jl, rep/util/date.jl,
-	rep/util/base64.jl, rep/vm/disassembler.jl, rep/vm/compiler.jl,
-	rep/vm/compiler/utils.jl, rep/vm/compiler/src.jl,
-	rep/vm/compiler/opt.jl, rep/vm/compiler/modules.jl,
-	rep/vm/compiler/lap.jl, rep/vm/compiler/inline.jl,
-	rep/vm/compiler/basic.jl, rep/www/cgi-get.jl: added `(declare
-	(unsafe-for-call/cc))'
-
-	* rep/system/environ.jl: rewritten to use tail recursion
-	instead of side effects
-
-	* rep/vm/compiler/bindings.jl: don't allocate variables to
-	slots if they're modified after a function has been called.
-	(Due to call/cc the function could return multiple times, but
-	it would get the _same_ values for any slot-allocated bindings,
-	even if they have since been modified). The
-	`(unsafe-for-call/cc)' declaration can be used to prevent this
-	(but it may lead to incrorrect results...)
-
-	* rep/util/repl.jl (repl): install a low-level exception
-	handler to catch interrupt signals
-
-2000-08-12  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/modules.jl (compile-structure-def): fixed
-	compilation of non-top-level structure definitions
-
-2000-08-11  John Harper  <john dcs warwick ac uk>
-
-	* rep/lang/doc.jl (doc-file-set): pass 'no-lock flag to
-	gdbm-open
-
-	* rep/vm/compiler/rep.jl (compile-cond): fixed bug of not
-	propagating return-follows information to body-less final
-	conditions. This meant that things like `(define (test a) (and
-	a (test a)))' wouldn't have had the tail call made into a jump
-
-	This has a _huge_ effect on the prime benchmark, iterations per
-	minute increases by 60%! For comparison:
-
-		current rep	2580 (1.0)
-		qscheme-0.3.3	1860 (.72)
-		scheme48-0.53	835  (.32)	; in benchmark mode
-		guile-0.4	314  (.12)	; with (debug-disable 'debug)
-
-	300MHz mobile Pentium II; code as follows:
-
-(define (prime n)
-  (letrec ((primep (lambda (n primes)
-                     (or (null primes)
-                         (and (not (zerop (remainder n (car primes))))
-                              (primep n (cdr primes)))))))
-    (let loop ((i 2) (candidate 2) (primes '()))
-      (cond ((not (primep candidate primes)) (loop i (+ 1 candidate) primes))
-            ((= i n) candidate)
-            (t (loop (+ 1 i) (+ 1 candidate) (cons candidate primes)))))))
-
-(define (test)
-  (let loop ((count 1))
-    (prime 100)
-    (format standard-output "%d\n" count)
-    (loop (+ 1 count))))
-
-	I need a new benchmark now..
-
-2000-08-10  John Harper  <john dcs warwick ac uk>
-
-	* rep/lang/doc.jl (describe-value): bytecode subrs no longer
-	include arg spec
-
-	* rep/vm/compiler.jl, rep/vm/compiler/utils.jl,
-	rep/vm/compiler/unscheme.jl, rep/vm/compiler/src.jl,
-	rep/vm/compiler/scheme.jl, rep/vm/compiler/rep.jl,
-	rep/vm/compiler/opt.jl, rep/vm/compiler/no-lang.jl,
-	rep/vm/compiler/modules.jl, rep/vm/compiler/lap.jl,
-	rep/vm/compiler/inline.jl, rep/vm/compiler/bindings.jl,
-	rep/vm/compiler/basic.jl:
-
-	Many compiler improvements: first order closure analysis; stack
-	allocation of uncaptured bindings; fixed `case' statements
-	without else clauses
-
-	* rep/vm/compiler/const.jl, rep/vm/compiler/asm.jl: deleted
-
-	* rep/util/repl.jl: fixed ,compile-proc command
-
-	* rep/vm/disassembler.jl, rep/vm/bytecodes.jl,
-	rep/vm/bytecode-defs.jl, rep/vm/assembler.jl: various changes
-	to the vm architecture. Bumped major version
-
-2000-08-03  John Harper  <john dcs warwick ac uk>
-
-	* rep/i18n/xgettext.jl: yanked the useful bits of
-	src/rep-xgettext.jl into a library module to enable customized
-	xgettext scripts to be written
-
-	* rep/vm/assembler.jl: a higher-level assembler
-
-	* rep/vm/disassembler.jl: split into two functions
-
-	* rep/vm/bytecodes.jl, rep/vm/bytecode-defs.jl (bytecode-ref):
-	new function
-
-2000-08-02  John Harper  <john dcs warwick ac uk>
-
-	* rep/module-system.jl (define-structures): new macro, for
-	defining >1 structure from the same set of definitions
-
-	* rep/vm/compiler/modules.jl (module-exports-p): handle
-	first-class structures in imports list
-
-2000-08-01  John Harper  <john dcs warwick ac uk>
-
-	* rep/io/file-handlers/tar.jl,
-	rep/io/file-handlers/remote/rep.jl,
-	rep/io/file-handlers/remote/rcp.jl,
-	rep/io/file-handlers/remote/ftp.jl, rep/util/base64.jl: don't
-	use 0NN octal syntax
-
-2000-07-31  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: always define _
-
-	* unscheme.jl, scheme.jl, scheme/syntax-funs.jl: export
-	\#define as %define, then use this for `define' forms
-
-	* rep/data/symbol-table.jl, rep/io/file-handlers.jl,
-	rep/util/gaol.jl: use structure-define instead of structure-set
-
-	* rep/user.jl: setq creates bindings in this structure
-
-	* rep/vm/compiler/unscheme.jl, rep/vm/compiler/scheme.jl,
-	rep/vm/compiler/rep.jl: use %define instruction
-
-	* rep/vm/compiler/modules.jl (compile-structure-def): don't
-	drop unknown configuration items
-
-	* rep/vm/disassembler.jl, rep/vm/bytecode-defs.jl (%define):
-	new instruction
-
-	* rep/lang/interpreter.jl (#f, #t): set to '() and 't respectively
-
-	* rep/lang/interpreter.jl, rep/lang/math.jl,
-	rep/lang/define.jl, rep/lang/data.jl,
-	rep/lang/module-system.jl: use %define to create definitions
-
-	* rep/lang/module-system.jl: new clauses `(set-binds)' and
-	`(export-all)' in module configuration language
-
-2000-07-30  John Harper  <john dcs warwick ac uk>
-
-	* dump.jl: deleted this file, it needs a lot of attention
-	before being useful again..
-
-	* unscheme.jl, scheme.jl, scheme/syntax-funs.jl,
-	scheme/data.jl, unscheme/data.jl: various changes for distinct
-	() object. This means that the scheme implementations no longer
-	have to confuse 'nil and '()
-
-	* rep/vm/compiler/const.jl (compile-constant): check for '()
-	not 'nil when emitting `nil' instruction
-
-	* rep/lang/interpreter.jl: (defconst `nil' ()) and (defconst t t),
-	exporting both of them
-
-	* rep/user.jl: call this structure `user', not `rep.user'
-
-	* rep/vm/compiler/rep.jl (compile-list*): compile `list*' forms
-	into a sequence of `cons' instructions
-	* rep/vm/compiler/unscheme.jl, rep/vm/compiler/scheme.jl: use
-	rep list* compiler
-
-2000-07-29  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/rep.jl (compile-apply): compiles `apply'
-	calls
-
-	* rep/vm/disassembler.jl, rep/vm/bytecode-defs.jl: new
-	instruction `apply'. Bumped bytecode minor version
-
-	* rep/vm/compiler.jl, rep/vm/compiler/unscheme.jl: support
-	for unscheme language
-
-	* unscheme.jl, unscheme/syntax.jl, unscheme/syntax-funs.jl,
-	unscheme/misc.jl, unscheme/data.jl: _Another_ scheme
-	implementation! This one intentionally ignores the Scheme
-	standard where it helps the language fit the rep environment
-	(see unscheme.jl for the details)
-
-	* scheme/utils.jl: define and export #f and #t as themselves
-
-	* scheme/syntax-funs.jl: don't depend on value of #f, just
-	quote and return it where necessary
-
-	* scheme/data.jl: no need for special `/'. Redefine symbol? to
-	ignore #f and #t
-
-2000-07-28  John Harper  <john dcs warwick ac uk>
-
-	* rep/lang/define.jl (define-macro): new macro, similar to
-	`define' but not quite so general
-
-	* rep/util/repl.jl (repl): fixed bug when completing
-
-	* scheme/misc.jl: export `load-file' as `load'
-
-2000-07-27  John Harper  <john dcs warwick ac uk>
-
-	* rep/util/repl.jl: core repl is now called for each line of
-	input. Also functions to create repl state objects. Allows
-	tricks like running a replicated repl on a remote system
-
-	* rep/user.jl: handle --help option if seen
-
-2000-07-25  John Harper  <john dcs warwick ac uk>
-
-	* rep/util/base64.jl: more code borrowed from Jade that may be
-	useful
-
-	* rep/util/ispell.jl: ripped this code from Jade to provide a
-	generally useful ispell interface
-
-2000-07-24  John Harper  <john dcs warwick ac uk>
-
-	* rep/vm/compiler/scheme.jl (compile-case): compile `case'
-	forms, cut-n-pasted from the `rep' compiler
-
-	* rep/vm/compiler/modules.jl (compiler-macroexpand-1): handle
-	autoloading macros
-
-2000-07-23  John Harper  <john dcs warwick ac uk>
-
-	Wholesale reorganization of the lisp code, to support the new
-	hierarchical module layout. Various other changes to support
-	this. Also changed `case' to be a macro.
-
-	* rep/user.jl: new location of user-startup code
-
-	* rep/www/quote-url.jl, rep/www/fetch-url.jl: a couple of
-	modules for doing www/url stuff
-
-	* rep/vm/compiler/no-lang.jl: new compiler language module,
-	supports the module configuration language, and nothing else
-
-	* rep/util/autoloader.jl: new file, for doing generic
-	autoloading of modules that provide arbitrary features
-
-	* rep/data/objects.jl: new file, a macro for basic
-	message-passing objects, with single inheritance of methods
-
-	* rep/data/symbol-table.jl, rep/data/string-util.jl,
-	rep/data/sort.jl, rep/data/ring.jl, rep/data/records.jl,
-	rep/data/queues.jl: 
-	* rep/io/file-handlers/tilde.jl, rep/io/file-handlers/tar.jl,
-	rep/io/file-handlers/remote.jl: 
-	* rep/io/file-handlers/remote/utils.jl,
-	rep/io/file-handlers/remote/rep.jl,
-	rep/io/file-handlers/remote/rcp.jl,
-	rep/io/file-handlers/remote/ftp.jl: 
-	* rep/lang/profiler.jl, rep/lang/doc.jl, rep/lang/define.jl,
-	rep/lang/debugger.jl, rep/lang/backquote.jl: 
-	* rep/mail/addr.jl: 
-	* rep/system/pwd-prompt.jl, rep/system/environ.jl: 
-	* rep/threads/utils.jl, rep/threads/mutex.jl: 
-	* rep/util/repl.jl, rep/util/memoize.jl, rep/util/gaol.jl,
-	rep/util/date.jl: 
-	* rep/vm/disassembler.jl, rep/vm/compiler.jl,
-	rep/vm/bytecodes.jl, rep/vm/bytecode-defs.jl: 
-	* rep/vm/compiler/utils.jl, rep/vm/compiler/src.jl,
-	rep/vm/compiler/scheme.jl, rep/vm/compiler/rep.jl,
-	rep/vm/compiler/opt.jl, rep/vm/compiler/modules.jl,
-	rep/vm/compiler/lap.jl, rep/vm/compiler/inline.jl,
-	rep/vm/compiler/const.jl, rep/vm/compiler/bindings.jl,
-	rep/vm/compiler/basic.jl, rep/vm/compiler/asm.jl: 
-	* rep/www/cgi-get.jl: 
-	* scheme/utils.jl, scheme/syntax.jl, scheme/syntax-funs.jl,
-	scheme/misc.jl, scheme/data.jl: 
-
-	New locations for these old files. Many have aliases so the old
-	names still work
-
-	* rep.jl, rep/system.jl, rep/structures.jl, rep/lang.jl,
-	rep/lang/interpreter.jl, rep/lang/math.jl,
-	rep/module-system.jl, rep/data.jl, rep/io/streams.jl,
-	rep/io/files.jl, rep/io/file-handlers.jl: bootstrap code for
-	the various modules in the new configuration
-
-	* tilde.jl, threads.jl, tar-file-handler.jl, symbol-table.jl,
-	string-util.jl, sort.jl, scheme-utils.jl, scheme-syntax.jl,
-	scheme-syntax-funs.jl, scheme-misc.jl, scheme-data.jl, ring.jl,
-	rep-repl.jl, rep-packages.jl, rep-autoload.jl, remote.jl,
-	remote-utils.jl, remote-rep.jl, remote-rcp.jl, remote-ftp.jl,
-	records.jl, queues.jl, pwd-prompt.jl, profiler.jl, mutex.jl,
-	memoize.jl, mailaddr.jl, lisp-doc.jl, init.jl, gaol.jl,
-	environ.jl, disassembler.jl, define.jl, debug.jl, date.jl,
-	compiler.jl, compiler-utils.jl, compiler-src.jl,
-	compiler-scheme.jl, compiler-rep.jl, compiler-opt.jl,
-	compiler-modules.jl, compiler-lap.jl, compiler-inline.jl,
-	compiler-const.jl, compiler-bindings.jl, compiler-basic.jl,
-	compiler-asm.jl, cgi-get.jl, bytecodes.jl, bytecode-defs.jl,
-	backquote.jl, autoload.jl: deleted or moved to a deeper
-	position
-
-2000-07-21  John Harper  <john dcs warwick ac uk>
-
-	* rep-repl.jl, rep-packages.jl, init.jl, gaol.jl,
-	symbol-table.jl: updated for removal of `%' from some function
-	names
-
-	* init.jl (define-structure-alias): new macro
-
-	* compiler.jl, compiler-utils.jl, compiler-scheme.jl,
-	compiler-rep.jl, compiler-opt.jl, compiler-modules.jl,
-	compiler-inline.jl, compiler-basic.jl: reorganized some modules
-
-	* compiler.jl (compile-directory): Recurse into subdirectories
-
-2000-07-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12.4
-
-	* rep-repl.jl (repl): fixed bug of not prompting for
-	continuation lines when a whole form isn't read
-
-2000-07-19  John Harper  <john dcs warwick ac uk>
-
-	* compiler-rep.jl (trans-defvar): call make-variable-special on
-	the symbol (but this is still broken..)
-
-2000-07-18  John Harper  <john dcs warwick ac uk>
-
-	* lisp-doc.jl (documentation): only try to deref SYMBOL if it's
-	bound (otherwise interpreted code may fall over?)
-
-	* gaol.jl: store all state in gaol, don't keep it locally then
-	rebuild the gaol from that. Deprecated some old functions, new
-	interface is basically gaol-define, gaol-define-special,
-	gaol-define-file-handler. Also added gaol-open
-
-	* compiler-modules.jl: signal errors when trying to reference
-	unknown structures
-
-2000-07-16  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl (gaol-safe-functions): added more safe functions
-
-2000-07-15  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl (make-gaol): install a null virtual machine
-
-2000-07-14  John Harper  <john dcs warwick ac uk>
-
-	* compiler-utils.jl (declare-inline): handler for `(declare
-	(inline NAMES...))' marking functions that should be inlined
-	(remember-function): optional arg BODY, so that functions
-	previously declared inline can be stored
-
-	* compiler-rep.jl (do-pass-1): pass defun bodies to
-	remember-function, in case they've been declared inline
-	(do-pass-2): defsubst forms are compiled as defuns now
-
-	* compiler-modules.jl (variable-stem): new function to extract
-	the local name of a variable
-
-	* compiler-basic.jl (compile-form-1): removed code to check for
-	'compile-inline property. This was totally bogus after the
-	module system arrived
-	* compiler-inline.jl (compile-inline-function): deleted
-
-	* init.jl (defsubst): just an alias for defun now
-
-	* init.jl (throw): now in lisp
-	(raise-exception): deleted, now in C
-
-2000-07-12  John Harper  <john dcs warwick ac uk>
-
-	* define.jl (define-scan-form): don't expand let-fluids forms
-	since compiler handles them specially
-
-	* version 0.12.3
-
-2000-07-11  John Harper  <john dcs warwick ac uk>
-
-	* define.jl (define-scan-form): expand macros one at a time,
-	checking the results for things that shouldn't be expanded
-
-	* compiler-modules.jl (compiler-macroexpand-1): set
-	macro-environment to compiler-macroexpand-1, not
-	compiler-macroexpand
-
-	* init.jl (let): don't wrap named lets expansions in a progn
-	block anymore, the misfeature being worked around is fixed now
-
-2000-07-09  John Harper  <john dcs warwick ac uk>
-
-	* lisp-doc.jl (doc-file-ref): pass `no-lock' flag to gdbm-open
-
-	* rep-repl.jl (repl): only catch end-of-stream errors when
-	reading, not when evaluating
-
-	* init.jl (setcar, setcdr): no longer pseudonyms for rplaca and
-	rplacd (they return the inserted value, not the cell)
-	* compiler-rep.jl: removed code making setc[ad]r compile as rplac[ad]
-
-2000-07-08  John Harper  <john dcs warwick ac uk>
-
-	* compiler-modules.jl (compile-structure-def): compile bodies
-	of non-top-level structures (so they can access their
-	environment)
-
-	* init.jl (catch, unwind-protect, condition-case): these are
-	all now macros (in terms of call-with-catch,
-	call-with-unwind-protect and call-with-error-handlers
-	respectively. These functions are written in terms of the
-	call-with-exception handler primitive). This has no effect on
-	compiled code
-
-	* rep-packages.jl, gaol.jl (call-with-catch,
-	call-with-unwind-protect, call-with-error-handlers): added
-
-2000-07-07  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl (rep): do the file-exists-p test when loading scheme
-	scripts
-
-	* mutex.jl, disassembler.jl, date.jl, cgi-get.jl, bytecodes.jl:
-	use define-structure instead of structure
-
-2000-07-05  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: load-all "autoload" not "autoload.jl"
-
-2000-07-03  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl (gaol-safe-functions): added define-value
-
-2000-06-29  John Harper  <john dcs warwick ac uk>
-
-	* define.jl (define-scan-form): fix bug when extracting doc
-	strings and interactive decls
-
-2000-06-27  John Harper  <john dcs warwick ac uk>
-
-	* profiler.jl: front-end for a basic profiler
-	* rep-repl.jl: added `,profile FORM' command
-
-2000-06-25  John Harper  <john dcs warwick ac uk>
-
-	* ring.jl (ring->list): new function
-
-2000-06-23  John Harper  <john dcs warwick ac uk>
-
-	* ring.jl: encapsulate rings in datums, cleaned up the api
-	(added ring-append, ring-ref, ring-replace. ring-ref counts
-	from zero unlike the old get-from-ring), no longer uses macros
-	for inlining
-
-2000-06-22  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12.2
-
-	* compiler-inline.jl (compile-tail-call): when modifying
-	bindings in-place, remember to emit a `pop-all' instruction if
-	the value stack is non-empty
-
-	* init.jl (member-if): new function
-
-2000-06-21  John Harper  <john dcs warwick ac uk>
-
-	* compiler-rep.jl (compile-list): if (= #args 0) emit `push
-	nil' instead of `list #0' (also fixes a bug of stack use not
-	being incremented with zero args)
-
-2000-06-19  John Harper  <john dcs warwick ac uk>
-
-	* compiler-rep.jl (do-pass-2): don't evaluate constants, pass-1
-	doesn't
-
-	* init.jl (defconst): don't evaluate constants (the compiler
-	doesn't)
-
-	* dump.jl, disassembler.jl, compiler-utils.jl,
-	bytecode-defs.jl: s/0x/#x/ and s/0[0-9]/#o[0-9]/
-
-	* gaol.jl: can now create multiple gaols (though each has the
-	same default contents). This allows gaolled code to defun to
-	its heart's content without affecting anything else. New
-	function make-gaol returns a gaol (a structure), gaol-eval and
-	gaol-load optionally take a gaol as their second arg
-
-	* tar-file-handler.jl: when reading files from (non-huge) tar
-	archives unpack the entire contents. This unpacked version is
-	kept around for a while to service subsequent reads to other
-	files in the same archive (this is a huge win when reading
-	compressed sawfish themes)
-
-2000-06-18  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12.1
-
-	* compiler-rep.jl (compile-declare): push `nil' onto the stack
-	(since all forms are assumed to leave a value on the stack)
-
-2000-06-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12
-
-2000-06-14  John Harper  <john dcs warwick ac uk>
-
-	* define.jl (define): strip leading progn's from expanded
-	bodies of defines that expand to defuns (so that doc strings
-	etc are visible)
-
-2000-06-10  John Harper  <john dcs warwick ac uk>
-
-	* compiler-opt.jl (peephole-optimizer): remove some zero
-	additions and subtractions
-
-2000-06-09  John Harper  <john dcs warwick ac uk>
-
-	* init.jl: added some more doc strings
-
-2000-06-08  John Harper  <john dcs warwick ac uk>
-
-	* records.jl (record-printer): if the value returned from the
-	discloser function is a string, print it without surrounding
-	quotes
-
-	* records.jl (define-record-type): removed the NAME argument,
-	it's not very useful, and conflicts with the definition in
-	SRFI 9 (http://srfi.schemers.org/srfi-9/)
-
-2000-06-07  John Harper  <john dcs warwick ac uk>
-
-	* compiler-basic.jl (compile-lambda): when adding doc strings,
-	don't concatenate lambda-doc onto actual doc, add two separate
-	items to the database
-
-	* lisp-doc.jl (doc-file-ref, doc-file-set): functions to access
-	doc files
-	(add-documentation-params): store a parameter-list for a named
-	function in the doc file
-
-	* compiler-opt.jl (peephole-optimizer): when threading jmp
-	instructions, ignore instructions that wouldn't change
-	(fixes a non-termination case)
-
-	* compiler-opt.jl (constant-optimizer): remember to update
-	constant-index so that the resulting vector contains no unused
-	entries
-
-2000-06-05  John Harper  <john dcs warwick ac uk>
-
-	* compiler-modules.jl (compile-top-level-structure,
-	compile-top-level-define-structure): new exported functions
-	* compiler-rep.jl: leave top-level structure definitions
-	unexpanded in output
-
-	* rep-repl.jl (,load-file): will now load more than one file
-
-	* scheme.jl, scheme-utils.jl, scheme-syntax-funs.jl,
-	scheme-misc.jl, scheme-data.jl, compiler-scheme.jl: prefix most
-	exported non-r4rs symbols by `#' (not allowed in scheme
-	identifiers)
-
-	* compiler-modules.jl (compile-structure-ref): check
-	open-modules for structure being referenced as well
-
-	* scheme-data.jl (symbol?): (symbol? '()) => #f
-	(string->symbol): copy the name if a symbol needs to be created
-	and interned
-
-	* define.jl (define-scan-form): don't mistake (let () ..) for a
-	named let
-
-2000-06-04  John Harper  <john dcs warwick ac uk>
-
-	* rep-repl.jl (rl-completion-generator): fix from Ceri to
-	prepend `^' to start of word, also quote the word being
-	completed
-
-	* define.jl (define-scan-form): don't expand `structure-ref'
-	forms
-
-	* compiler-rep.jl: merge `normal' top-level forms into progn
-	statements in pass-1, which then get compiled in pass-2
-
-	* compiler-modules.jl (compile-structure-def): leave `open' and
-	`access' config statements as-is
-
-	* compiler-basic.jl (macroexpand-pred): used to stop expanding
-	macros when a form with a special compiler is found
-
-	* compiler-modules.jl (parse-interface): fix typo
-
-	* scheme.jl: no need to export %while anymore
-
-	* compiler-utils.jl (compiler-constant-p,
-	compiler-constant-value): anything that isn't a cons or a
-	symbol is now treated as a (self-evaluating) constant, mainly
-	to allow #f and #t to be constant-folded
-
-	* compiler-scheme.jl: enabled constant folding support
-
-	* compiler-modules.jl: pass-1 and pass-2 functions now take and
-	return the complete list of forms, not just one at a time
-
-	* compiler-scheme.jl, compiler-rep.jl (pass-1, pass-2): operate
-	on the entire body in one go
-
-2000-06-02  John Harper  <john dcs warwick ac uk>
-
-	* init.jl (fluid-let): renamed as `let-fluids'. Updated all
-	users
-
-	* rep-repl.jl: removed *repl-in-struct* defvar, replaced by
-	fluid repl-in-struct
-
-2000-06-01  John Harper  <john dcs warwick ac uk>
-
-	* rep-repl.jl (rl-completion-generator): new function,
-	generates completions for readline (from Ceri Storey
-	<cez phi uklinux net>)
-
-	* compiler-basic.jl (compile-form-1): don't call
-	test-function-call if the form has a special handler
-
-	* compiler-rep.jl: handle non-top-level declarations
-
-	* compiler-bindings.jl: support (declare (bound VARS...)) and
-	(declare (special VARS...)) to flag variable bindings that the
-	compiler would otherwise be unaware of
-
-	* remote-ftp.jl, disassembler.jl, compiler-utils.jl: added
-	declarations to prevent warnings for jade-only functions
-
-	* backquote.jl (backquote-listify): don't call `eval' to
-	unquote constants, use a special purpose backquote-eval to
-	avoid security breaches
-
-	* scheme-syntax-funs.jl: new file, defines expand-FOO functions
-	for each non-trivial Scheme syntax form. Since nothing is
-	redefined here, doing this removes the need for the gratuitous
-	rep# and hand-expanded macros
-	* scheme-syntax.jl: most macros just call expand-FOO
-
-	* init.jl (make-guardian): use a rest argument in the returned
-	closure so that `(G nil)' can be distinguished from `(G)'
-
-	* init.jl (call-after-load): new function, eval-after-load just
-	calls this now
-
-2000-05-31  John Harper  <john dcs warwick ac uk>
-
-	* init.jl (with-object): new macro, uses call-with-object
-	* compiler-rep.jl (with-object): flushed compiler for this
-	special form
-	* disassembler.jl, bytecode-defs.jl (bindobj): flushed this insn
-
-	* init.jl (prog1): new macro, in terms of lambda
-
-2000-05-30  John Harper  <john dcs warwick ac uk>
-
-	* init.jl (while): new macro, basic tail-recursive definition
-
-	* define.jl (define-scan-form): removed `while' from the list
-	of special forms
-
-2000-05-27  John Harper  <john dcs warwick ac uk>
-
-	* scheme-misc.jl, records.jl, queues.jl: updated for datum
-	printer interface
-
-2000-05-26  John Harper  <john dcs warwick ac uk>
-
-	* compiler-src.jl (coalesce-constants, mash-constants): new
-	functions, in preparation for more constant optimizations
-
-	* lisp-doc.jl (describe-lambda-list): new function
-
-	* compiler-scheme.jl: list? no longer == listp
-
-	* compiler-basic.jl (compile-lambda): add the argument spec to
-	the front of any doc string
-
-	* scheme-data.jl (boolean?): fixed
-	(list?): no longer equivalent to rep's listp, scheme standard
-	says this must only return #t if its last cdr is the empty list
-	(string-ci>?): fixed
-
-	* init.jl (lcm): handle 0...N args
-
-2000-05-25  John Harper  <john dcs warwick ac uk>
-
-	* compiler-basic.jl (compile-lambda-spec): if the spec contains
-	special variables, don't encode it
-	(compile-lambda): don't error out if special variables in spec
-
-	* compiler-rep.jl: added special handlers for `defun' and
-	`defmacro', otherwise non-top-level calls to these macros don't
-	get compiled properly
-
-	* rep-repl.jl: added `,time' command
-
-	* lisp-doc.jl (describe-value): don't check for calls to
-	jade-byte-code
-
-	* init.jl (eval-after-load): don't use `&aux'
-
-	* dump.jl: don't `set' lexical variables
-
-	* disassembler.jl: understand new opcodes, new parameter list
-	encoding
-
-	* debug.jl: updated for new lexical environment structure (of
-	interpreted code)
-
-	* compiler.jl (compile-form): generate calls to `run-byte-code'
-	instead of `jade-byte-code'
-
-	* compiler-utils.jl (remember-function): don't `set' lexical
-	variables
-	(get-lambda-vars): ignore `&aux' keys
-
-	* compiler-src.jl (fold-constants): use `compiler-symbol-value'
-	instead of `eval' to dereference functions
-
-	* compiler-rep.jl: don't compile calls to `eval'
-	(compile-condition-case): changed this for the modified
-	semantics of the `errorpro' instruction (doesn't require name
-	of variable to bind, always binds the next lexical slot)
-
-	* compiler-opt.jl: added some peephole patterns for changing
-	simple constant add and subtract sequences into `inc' or `dec'
-	instructions
-
-	* compiler-inline.jl: removed all support for `&aux' keyword
-
-	* compiler-bindings.jl (emit-binding): don't emit arg when
-	binding lexically
-
-	* compiler-basic.jl (compile-lambda): generate the new-style
-	byte code subrs (with parameter spec encoded as a fixnum)
-
-	* bytecode-defs.jl: deleted `eval', `bind' is now arg-less (and
-	uses the old eval opcode)
-	* bytecodes.jl (byte-insns-with-constants): removed `bind'
-
-2000-05-23  John Harper  <john dcs warwick ac uk>
-
-	* scheme-misc.jl (eof-object?): fixed to return #f or #t
-
-	* compiler-scheme.jl: code and properties to piggyback the rep
-	compiler for predicates that just needs boolean results translated
-
-	* compiler-opt.jl: delete `test-scm[-f]; scm-test' pairs of
-	instructions
-
-	* bytecodes.jl, bytecode-defs.jl, disassembler.jl (test-scm,
-	test-scm-f): new instructions, map from rep booleans to scheme
-	booleans
-
-	* rep.jl: option aliases: --call -> -f, --load -> -l, --quit -> -q
-	New option --scheme,-s to load a file of Scheme code	
-
-	* scheme.jl, scheme-misc.jl: export %load-suffixes
-
-	* scheme-syntax.jl (delay): don't use `rep#lambda' in
-	expansion, probably not available in caller's environment
-
-	* scheme-misc.jl (write-char): use `rep#write', not `write'
-	(load): removed this definition, must use the subr (so the file
-	is loaded in the caller's environment..)
-
-	* compiler-modules.jl (compile-module-body): remember to create
-	a binding of `current-language'
-
-2000-05-22  John Harper  <john dcs warwick ac uk>
-
-	* scheme-syntax.jl (cond): now expands into an `if' chain, this
-	is to enable simple handling of `(TEST => FUNCTION)' syntax
-	(case): remember to add the key to the expansion
-
-	* scheme-misc.jl (close-input-port, close-output-port): detect
-	and ignore files that have already been closed
-
-	* scheme-data.jl (char?): defined and exported
-	(complex?): always returns #t not #f
-	(string->number): defined using make-nil-predicate
-
-	* memoize.jl (memoize-function): renamed as `memoize' and
-	removed the code to work on symbol values
-
-2000-05-17  John Harper  <john dcs warwick ac uk>
-
-	* debug.jl: added `up' and `down' commands; catch errors during
-	`print' commands
-
-	* compiler-rep.jl (compile-fluid-let): re-enabled this, the
-	segmentation faults it used to cause seem to have mysteriously
-	disappeared
-
-2000-05-16  John Harper  <john dcs warwick ac uk>
-
-	* debug.jl (error-entry): make this work again
-
-	* init.jl (default-error-handler): new function, stuffed into
-	error-handler-function
-
-	* rep.jl, rep-repl.jl: call default-error-handler or
-	error-handler-function to print errors
-
-2000-05-15  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: added some more safe functions
-
-	* date.jl, remote-ftp.jl, remote-rep.jl, tar-file-handler.jl:
-	use string->number to parse numbers, not read-from-string
-	(otherwise e.g. 08 causes a read error)
-
-	* scheme-data.jl (string->number, number->string): deleted, use
-	built-in versions of these functions
-
-	* debug.jl: adapted for new return from debug-frame-environment
-	(but this doesn't work 100%?)
-
-2000-05-14  John Harper  <john dcs warwick ac uk>
-
-	* init.jl (and): fixed bug `(and 1 nil) => 1'
-
-	* compiler-modules.jl (compile-module): added interactive spec
-
-2000-05-13  John Harper  <john dcs warwick ac uk>
-
-	* compiler-rep.jl: compile `=' using num-eq insn
-	(compile-case): use memql and eql for comparisons instead of
-	memq and eq
-
-	* bytecode-defs.jl, disassembler.jl (memql, num-eq): new insns
-
-	* scheme-data.jl (memv): defined by wrapping memql
-
-2000-05-12  John Harper  <john dcs warwick ac uk>
-
-	* lisp-doc.jl (apropos-output, apropos-function,
-	apropos-variable, describe-variable, describe-variable-1,
-	describe-function): deleted these functions, they're all
-	useless since they call symbol-value (from the wrong structure)
-
-	(describe-function-1): renamed describe-value, takes two args
-	VALUE and NAME (optional), then describes the value to
-	standard-output. Handles both functions and variables
-
-	(documentation): added optional second arg VALUE, the value of
-	the symbol in the caller's environment
-	
-	* rep-repl.jl: added `,describe' and `,apropos' commands,
-	removed `,doc'
-
-2000-05-11  John Harper  <john dcs warwick ac uk>
-
-	* init.jl (or, and): implement base cases explicitly, (or) =>
-	nil, (and) => t
-	* scheme-syntax.jl (and): add base case (and) => #t
-
-	* init.jl (structure, define-structure): INTERFACE is now
-	optional
-
-	* init.jl, compiler-modules.jl (%parse-interface,
-	parse-interface): accept `()' as null interface
-
-2000-04-30  John Harper  <john dcs warwick ac uk>
-
-	* string-util.jl (mapconcat): new function
-
-2000-04-28  John Harper  <john dcs warwick ac uk>
-
-	* records.jl: detect and report unknown fields
-
-2000-04-24  John Harper  <john dcs warwick ac uk>
-
-	* rep-repl.jl: new commands `,compile' and `,compile-proc'
-
-	* init.jl, scheme.jl, scheme-data.jl: added cons accessors c....r
-
-	* compiler.jl: export compile-module
-	(compile-function): ignore already compiled functions, don't
-	signal an error. And fix the method of testing for compiledness
-
-	* compiler-modules.jl (compile-module): new function, compile
-	all non-compiled functions in a named structure
-
-2000-04-23  John Harper  <john dcs warwick ac uk>
-
-	* records.jl: implements record-like data structures. Based on
-	the Scheme48 record interface
-
-2000-04-22  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-function): this now works properly since
-	it respects the structure that the closure is made in
-
-	* compiler-utils.jl (compiler-constant-p): don't check that the
-	`quote' symbol is from the `rep' structure (kludge)
-
-	* compiler-scheme.jl, compiler-rep.jl: at top-level, splice in
-	`begin' and `progn' forms, allows macros to expand to blocks of
-	top-level definitions
-
-	* compiler-modules.jl: track the current language being
-	compiled, also provides a means for telling the compiler which
-	module is being compiled in
-
-	* compiler-basic.jl (compile-lambda): removed the SEQUENCER
-	arg, use the compiler-sequencer language property
-
-	* compiler-utils.jl (compiler-constant-p,
-	compiler-constant-value): accept all numeric types
-
-	* compiler-const.jl (compile-constant): only emit fixnums using
-	immediate push insns
-
-2000-04-21  John Harper  <john dcs warwick ac uk>
-
-	* queues.jl: new file, implement the scheme48 queue interface
-
-	* init.jl (fluid-let): new macro
-
-	* debug.jl: rewritten to use fluid instead of special variables
-
-	* bytecode-defs.jl, disassembler.jl (fluid-ref, fluid-set,
-	fluid-bind): new insns
-
-	* compiler.jl, compiler-vars.jl, compiler-utils.jl,
-	compiler-src.jl, compiler-scheme.jl, compiler-rep.jl,
-	compiler-opt.jl, compiler-modules.jl, compiler-lap.jl,
-	compiler-inline.jl, compiler-const.jl, compiler-bindings.jl,
-	compiler-basic.jl: rewritten to use fluid instead of special
-	variables
-
-	* symbol-table.jl: new file, wrapper around anonymous
-	structures for efficient symbol tables
-
-	* init.jl (realp, rationalp, inexactp): new functions
-
-2000-04-18  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl, compiler-vars.jl, compiler-utils.jl,
-	compiler-rep.jl, compiler-inline.jl: track the maximum depth of
-	the binding stack while compiling forms, then embed this into
-	the `stack' property of byte code forms/subrs
-
-	* disassembler.jl: groks the new layout of the `stack' arg
-
-2000-04-17  John Harper  <john dcs warwick ac uk>
-
-	* scheme-misc.jl (input-port?, output-port?, peek-char):
-	implemented properly now
-
-	* init.jl (streamp): in lisp now
-
-	* compiler-modules.jl (compiler-symbol-value): this now
-	recognizes autoload values, loading them before returning
-
-2000-04-16  John Harper  <john dcs warwick ac uk>
-
-	* scheme-syntax.jl (lambda): now scans out leading internal
-	defines into a letrec
-
-	* compiler*.jl: track which lexical bindings have been modified
-	and which have been captured by closures, then use this
-	information to optimize tail recursion. Also renamed a load of
-	compiler functions to get rid of needless `comp-' prefixes
-
-	* define.jl, scheme-syntax.jl (define): now supports curried
-	functions, e.g. (define ((plus a) b) (+ a b)), then (plus 1)
-	evaluates to the function that adds one to its argument
-
-2000-04-15  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: don't need to build trampoline code anymore, can
-	just use %eval-in-structure
-
-	* compiler-rep.jl (compile-save-environment): deleted
-
-	* bytecode-defs.jl, disassembler.jl: removed `bindenv'
-	instruction
-
-	* gaol.jl: updated for special environment being stored with
-	the structure
-
-2000-04-14  John Harper  <john dcs warwick ac uk>
-
-	* disassembler.jl, bytecode-defs.jl: removed `dset' bytecode
-
-	* compiler-basic.jl (comp-compile-lambda): when noting the
-	parameter bindings, reverse the list
-
-	* bytecode-defs.jl: bumped major version to 10
-	(unbindall-0, pop-all): new instructions
-	* disassembler.jl: updated for new insns
-
-	* scheme-syntax.jl (do): implemented using named let, not
-	while, since the Scheme report requires that each iteration
-	get new bindings for each variable
-
-	* init.jl (do): implemented this iteration syntax from Scheme,
-	expands to a named let
-
-	* compiler-inline.jl (comp-do-tail-call): don't just setq the
-	new values of the variables, create wholly new bindings (in
-	case the previous bindings have been captured by any closures)
-
-2000-04-12  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: updated for new set-file-handler-environment semantics
-
-	* rep-repl.jl: added commands `,step' and `,expand'. `,help'
-	now prints two columns
-
-	* debug.jl: now works with the module system
-
-	* init.jl, compiler-modules.jl: changed module definition
-	syntax, the config section is now a single form or list of
-	forms, instead of the kludge of extracting them from the head
-	of the module body. This way no extra indentation is introduced
-	for the body. Existing modules only need changing if they have
-	more than one config form
-
-	* scheme.jl, scheme-syntax.jl, scheme-misc.jl, scheme-data.jl:
-	updated for new module configuration syntax
-
-2000-04-11  John Harper  <john dcs warwick ac uk>
-
-	* remote-rep.jl, remote-ftp.jl: export all interactive
-	functions
-
-	* init.jl (let): fixed bug of interpreting (let () ..) as a
-	named let (due to (symbolp '()))
-
-2000-04-10  John Harper  <john dcs warwick ac uk>
-
-	* rep-packages.jl (rep-files-interface): added jade-only file
-	operations (since they need to be in the `rep' structure)
-
-	* init.jl (eval-and-print): deleted, probably evals in the
-	wrong structure for most uses
-
-2000-04-09  John Harper  <john dcs warwick ac uk>
-
-	Changes to make sawmill work with the module system, and to
-	make things in general work more smoothly
-
-	* init.jl: set `*root-structure*' to rep
-	(declare): macro to ignore declarations
-	(defsubst): put the actual function body in the
-	`compiler-inline' property
-
-	* compiler.jl, compiler-vars.jl, compiler-utils.jl,
-	compiler-rep.jl, compiler-modules.jl, compiler-inline.jl:
-	various compiler fixes/improvements to make things work largely
-	as they did before (!)
-
-	Also now supports top-level declarations, currently only
-	`(declare (in-module FOO))' to tell the compiler where to look
-	for bindings outside any actual module definition
-
-	* rep.jl: set `*root-structure*' to user
-
-	* gaol.jl: removed support for redefining `require',
-	miscellaneous fixes
-
-	* define.jl: reverted to handling all let forms specially,
-	macroexpanding them prevents the compiler doing some
-	optimizations
-
-	* threads.jl, string-util.jl, sort.jl, rep-repl.jl,
-	rep-packages.jl, environ.jl, define.jl, debug.jl, backquote.jl:
-	added `(in-module rep)' declaration
-
-2000-04-07  John Harper  <john dcs warwick ac uk>
-
-	Many changes to support the new module system:
-
-	* init.jl: subsumes lisp.jl, defines all module syntax
-	(define-interface, structure, define-structure, etc..),
-	defconst now declares _lexically_ scoped constants
-
-	* rep-packages.jl: defines the various interfaces that the rep
-	package implements, plus other basic structures
-
-	* rep-repl.jl: implements the default repl, borrows Scheme48's
-	idea of using `,' to introduce meta-commands (e.g. to control
-	and inspect the state of the module system)
-
-	* rep.jl: use the new repl; try to work out when to `require'
-	and when to `load' command line options
-
-	* rep-autoload.jl, autoload.jl: split autoloading into two
-	parts, rep-autoload contains decls for the `rep' module,
-	autoload contains those for the default user module
-
-	* gaol.jl: modularized; uses an anonymous structure to create
-	the sandboxed environment
-
-	* bytecodes.jl, bytecode-defs.jl: split into two modules, no
-	longer exports op-FOO constants, instead a macro `(bytecode FOO)'
-
-	* compiler.jl, compiler-vars.jl, compiler-utils.jl,
-	compiler-src.jl, compiler-scheme.jl, compiler-rep.jl,
-	compiler-opt.jl, compiler-modules.jl, compiler-lap.jl,
-	compiler-inline.jl, compiler-const.jl, compiler-bindings.jl,
-	compiler-basic.jl, compiler-asm.jl: the compiler has now been
-	modularized; it also groks the module configuration forms, and
-	can compile for whatever base language (rep, scheme, ..?) a
-	module is actually using. Scheme support is currently minimal
-	(working but sub-optimal code)
-
-	* scheme.jl, scheme-utils.jl, scheme-syntax.jl, scheme-misc.jl,
-	scheme-data.jl: support for interpreting scheme code, any
-	modules with `(open scheme)' instead of `(open rep)' will find
-	a minimal r4rs scheme environment (without macros)
-
-	* tilde.jl, tar-file-handler.jl, remote.jl, remote-utils.jl,
-	remote-rep.jl, remote-rcp.jl, remote-ftp.jl: updated to use new
-	method of declaring file handlers (the define-file-handler
-	function)
-
-	* ring.jl, mutex.jl, memoize.jl, lisp-doc.jl, disassembler.jl,
-	date.jl, cgi-get.jl: modularized
-
-	* define.jl: macroexpand fully, then just scan through lambda
-	bodies
-
-2000-04-13  John Harper  <john dcs warwick ac uk>
-
-        * version 0.11.3
-
-2000-04-11  John Harper  <john dcs warwick ac uk>
-
-        * init.jl (let): fixed bug of interpreting (let () ..) as a
-        named let (due to (symbolp '()))
-
-2000-04-09  John Harper  <john dcs warwick ac uk>
-
-        * version 0.11.2
-
-2000-03-29  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-file): prevent top-level macro
-	expansions being expanded again if we want to see them in their
-	original form
-
-	* lisp.jl (define-value): support non-constant variable forms..
-	but for how long..?
-
-	* lisp.jl (defmacro, defun, defconst, define-value): now macros
-	* compiler.jl (comp-compile-defun, comp-compile-defmacro): deleted
-
-2000-03-24  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl: some lisp-1 fixes
-
-2000-03-21  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (call-with-current-continuation): just define-value
-	to the value of call/cc instead of using a lambda
-
-	* gaol.jl (gaol-safe-functions): added case
-
-2000-03-20  John Harper  <john dcs warwick ac uk>
-
-	* mutex.jl: fixed some stupid typos (by Damon Anderson
-	<damon get topica com>)
-
-2000-03-14  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (prog2): now a macro
-	* compiler.jl (comp-compile-prog2): deleted
-
-	* lisp.jl (setq-default): now a macro
-	* compiler.jl (comp-trans-setq-default): deleted
-
-	* lisp.jl (dynamic-wind): defined in terms of call-with-barrier
-
-	* lisp-doc.jl (describe-function-1): handle macros, improper
-	parameter lists; some cosmetic improvements
-
-2000-03-13  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-file): only expand macros if the form
-	wouldn't be compiled anyway
-	(comp-trans-if, comp-trans-and, comp-trans-or): deleted
-	(comp-compile-let): deleted
-
-	* lisp.jl (let, let*): now defined as macros, `let' supports
-	Scheme's named lets for iteration
-	(if, and, or, function): defined as macros
-
-	* define.jl: only expand macros when absolutely necessary;
-	handle named lets; handle multi-action setq and setq-default
-	forms
-
-2000-03-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.11.1
-
-2000-03-11  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (load-all): added back the restriction of not loading
-	from the current directory
-
-	* compiler.jl (compile-file): copy permissions from source to
-	dest file
-
-2000-03-10  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl: compile (null X) using `not', instead of `null'
-
-2000-03-09  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl: non-trivial changes to make the compiler
-	eliminate intra-function tail recursion. Also fixed some bugs
-	when handling defsubst's
-
-	* compiler-opt.jl: modified `jmp X; ... Y: --> jmp X; Y:'
-	pattern to handle `return' instructions as well as gotos, and
-	to delete until the end of the instruction stream if no
-	subsequence label. Also fixed bug stopping the optimization
-	being applied
-
-2000-03-08  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-case): don't dup before the default
-	branch
-
-2000-03-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.11
-
-2000-03-04  John Harper  <john dcs warwick ac uk>
-
-	* string-util.jl: new file, some string functions (case
-	manipulation)
-
-	* dump.jl: replaced most instances of integerp by fixnump
-
-2000-03-01  John Harper  <john dcs warwick ac uk>
-
-	* dump.jl: dump strings correctly again (still doesn't handle
-	non-fixnum numbers though)
-
-	* lisp-doc.jl: use GDBM instead of SDBM (no data size limits)
-
-2000-02-29  John Harper  <john dcs warwick ac uk>
-
-	* define.jl: bug fixes -- handle interactive decls and doc
-	strings
-
-2000-02-28  John Harper  <john dcs warwick ac uk>
-
-	* define.jl (define-parse): remember in `(define FOO BAR)' to
-	scan BAR for internal definitions
-
-2000-02-27  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: added a load more safe functions to the list. Also
-	allow `tables' to be required
-
-	* compiler.jl: misc fixes for math stuff. Also fixed
-	compilation of transitive comparisons (no guarantee they would
-	evaluate all arguments previously)
-
-	* bytecodes.jl, disassembler.jl: deleted op-numeq and
-	op-num-noteq. op-lsh changed to op-ash
-
-2000-02-25  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (positivep, negativep, oddp, evenp, abs, %, modulo,
-	lcm): new functions (some are just pseudonyms)
-
-	* bytecodes.jl (op-quotient, op-floor, op-ceiling, op-truncate,
-	op-round, op-exp, op-log, op-sin, op-cos, op-tan, op-sqrt,
-	op-expt): new instructions
-	* compiler.jl: generate code for math functions
-	* diassembler.jl: grok the math functions
-
-	* sort.jl, date.jl: use `quotient' instead of `/'
-
-2000-02-20  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl: remember that define-value defines lexical
-	variables. When compiling files, don't read-and-macroexpand in
-	both passes, just the first, storing the results for input to
-	the second pass
-
-2000-02-19  John Harper  <john dcs warwick ac uk>
-
-	* threads.jl (with-threads-blocked): now autoloaded
-
-	* gaol.jl (gaol-safe-functions): added define and
-	with-internal-definitions
-
-2000-02-17  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (load-all): remove the (broken) restiction on not
-	loading from the current directory
-
-	* lisp.jl (prin1-to-string, read-from-string, setcar, setcdr,
-	string=, string<, caar, cadr, cadr, cdar, cdar, cddr, cddr,
-	caddr, caddr, call-with-current-continuation): changed these
-	from macros to functions
-
-	* compiler.jl (caar, cadr, cadr, cdar, cdar, cddr, cddr, caddr,
-	caddr, setcar, setcar, setcdr, setcdr, string=, string=,
-	string<, string<): generate single instructions for these
-	functions
-
-	* remote-rep.jl: make this work again
-
-2000-02-10  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: added macro-environment to safe specials
-
-	* define.jl (with-internal-definitions): new macro, scans its
-	body for internal defines
-	(define-scan-form): fixed scanning `case' forms
-
-2000-02-09  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (autoload-macro): new function
-
-2000-02-08  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-case): fixed this, wasn't dup'ing
-	the key before each comparison, only before the first
-
-	* define.jl: now that macros can find the macro environment
-	they were invoked through, it's possible to implement this
-	properly, scanning out define's from all suitable forms
-	automatically
-
-	* compiler-opt.jl (comp-peephole-opt): fix typo in `jt X; nil
-	--> jpt X' pattern
-
-2000-02-06  John Harper  <john dcs warwick ac uk>
-
-	* mutex.jl: new file, moved the mutexes from threads.jl
-	* threads.jl (with-threads-blocked): new macro
-
-	* disassembler.jl, compiler.jl, bytecodes.jl: new instructions
-	op-permit, op-forbid
-
-	* threads.jl: removed the thread functions, they're in C code
-	now
-
-2000-02-03  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-file): write a newline character at the
-	end of the output file
-
-2000-02-01  John Harper  <john dcs warwick ac uk>
-
-	* memoize.jl (memoize-function): use `equal' hash-tables to
-	cache results
-
-	* define.jl (lambda*): macro similar to lambda, but scans out
-	internal definitions
-
-	* compiler.jl (comp-constant-function-p,
-	comp-constant-function-value): expand macros before testing
-
-2000-01-31  John Harper  <john dcs warwick ac uk>
-
-	* lisp-doc.jl (documentation): fix for macro objects
-
-	* define.jl: new file, scheme-like `define' macro
-
-	* compiler.jl: handle improper lists in lambda expressions
-	(i.e. (foo . bar) == (foo &rest bar))
-
-2000-01-30  John Harper  <john dcs warwick ac uk>
-
-	* debug.jl: better support for debugging in lexical
-	environments
-
-	* compiler-opt.jl (comp-peephole-opt): added pattern `jt X; nil
-	--> jpt X'
-
-	* compiler.jl (compile-compiler): compile `sort.jl' as well
-	(it's used by compiler-opt)
-
-	* lisp-doc.jl (describe-function-1): dereference closures
-
-	* threads.jl: first attempt at a (very basic) threading
-	interface
-
-2000-01-26  John Harper  <john dcs warwick ac uk>
-
-	* lisp-doc.jl (describe-variable): remove reference to
-	current-buffer (not used anyway)
-
-2000-01-24  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-case): support the new `case'
-	statement (similar to in scheme)
-
-	* lisp.jl (when): expand to an if statement, not a cond. This
-	makes `(when t)' behave consistently with `(if t)' (pointed out
-	by Dave Pearson)
-
-	* compiler-opt.jl (comp-peephole-opt): fix error when
-	transforming `bind X; refn #0' --> `dup; bind X'
-
-2000-01-23  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.jl (op-return, op-unbindall): new instructions (for
-	tail call elimination)
-	* compiler.jl (compile-form): emit a return instruction at the
-	end of each code string
-	* compiler-opt.jl (comp-peephole-opt): new patterns to
-	back-propagate return instructions, and remove unneeded unbind
-	instructions
-	* disassembler.jl: output the two new instructions
-
-2000-01-22  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.jl: new bytecode version 9.0
-	(op-refn, op-setn): lexical address instructions
-	(op-refg, op-setg): global lexical instructions
-	(op-bindspec): create a special binding (op-bind _always_
-	creates lexical bindings now)
-
-	* compiler.jl: separately track lexical and special bindings,
-	then generate code as required (i.e. use lexical addressing)
-
-	* compiler-opt.jl (comp-peephole-opt): updated to grok the new
-	instructions
-
-	* disassembler.jl: updated for new instructions
-
-2000-01-14  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: removed redefinition of make-timer, added it to list
-	of safe functions (since we are a lisp-1)
-
-2000-01-12  John Harper  <john dcs warwick ac uk>
-
-	* memoize.jl (memoize-function): wrap a function with a cache
-	(needs a hash-table implementation to be useful..)
-
-	* tar-file-handler.jl: use a guardian to allow finalization of
-	file handles
-
-	* remote.jl (remote-register-file-handle): new function, uses a
-	guardian and a function in the after-gc-hook to correctly
-	finalize open remote files when they are garbage collected
-
-	* remote-ftp.jl, remote-rep.jl: register file handles for
-	finalization
-
-	* lisp.jl (make-guardian): new function, a means for protecting
-	objects from being deallocated when they have no references
-
-src/2000-01-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.10
-
-2000-01-03  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-defun, comp-compile-defmacro):
-	remember the functions being defined
-
-1999-12-31  John Harper  <john dcs warwick ac uk>
-
-	* tilde.jl: added provide decl
-
-	* lisp.jl (featurep, provide, require): removed (in C again)
-	(autoload): a function again
-
-	* init.jl: require libraries instead of loading (in case
-	they've been dumped)
-
-	* dump.jl: updated for lisp-1 rep with closures
-
-1999-12-22  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-trans-setq, comp-trans-setq-default):
-	signal an error if an odd number of arguments is given
-
-1999-12-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.9
-
-	* disassembler.jl (disassemble): escape all control codes when
-	printing, not just newlines
-
-1999-12-11  John Harper  <john dcs warwick ac uk>
-
-	* date.jl (parse-date): fix calculation of day-of-week
-
-	* bytecodes. (op-caar, op-cadr, op-cdar, op-cddr, op-caddr,
-	op-cadddr, op-caddddr, op-cadddddr, op-caddddddr,
-	op-cadddddddr): new instructions
-	* disassembler.jl, gaol.jl: added c..r instructions
-
-	* compiler.jl: optimise constant index nth and nthcdr calls to
-	single c...r instructions where possible
-
-	* compiler-opt.jl (comp-peephole-opt): fixed optimisation
-	looking for `const; const|dup...'
-	(comp-peephole-opt): optimise pairs of car or cdr instructions
-	to a single instruction
-
-	* lisp.jl (caar, ..., cddr, caaar, ..., cdddr): new functions
-
-1999-12-10  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl, debug.jl: use proper readline
-
-	* lisp.jl (in-hook-p): new function
-	(add-hook): if variable is unbound, make it special before
-	setting it
-
-1999-12-07  John Harper  <john dcs warwick ac uk>
-
-	* disassembler.jl, compiler.jl, bytecodes.jl (op-enclose): new
-	instruction
-
-	* lisp.jl (unless): if the condition evaluates true, then
-	return nil, not the value of the condition (this is the
-	behaviour in cl and elisp)
-
-1999-12-06  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (letrec): new macro, as in scheme, creates mutually
-	recursive bindings
-
-1999-12-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.8.1
-
-1999-11-29  John Harper  <john dcs warwick ac uk>
-
-	* lisp-doc.jl, compiler.jl: fixed the documentation functions
-	for unified namespace
-
-1999-11-28  John Harper  <john dcs warwick ac uk>
-
-	* version 0.8
-
-1999-11-25  John Harper  <john dcs warwick ac uk>
-
-	* tilde.jl, tar-file-handler.jl, sort.jl, rep.jl,
-	remote-rep.jl, remote-rcp.jl, remote-ftp.jl, lisp.jl,
-	lisp-doc.jl, gaol.jl, environ.jl, dump.jl, disassembler.jl,
-	debug.jl, compiler.jl, compiler-opt.jl, cgi-get.jl,
-	bytecodes.jl, backquote.jl, autoload.jl: updated for single
-	namespace and scheme-like function semantics
-
-1999-11-21  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl (gaol-add-file-handler, gaol-replace-file-handler):
-	new functions, allow access to be granted to file handlers
-	without letting any operation be performed
-
-1999-11-20  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (string-equal-p, string-less-p): deleted
-
-	* compiler.jl (comp-test-funcall): check if a locally-bound
-	function before warning that it's undefined
-
-1999-11-18  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl: unless it's already bound, make the _ function
-	return it's sole argument (until redefined by gettext module)
-
-1999-11-15  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: wrapped make-timer, rebuild function env after doing
-	a safe require, rebuilding environment affects existing
-	restricted environments
-
-1999-11-11  John Harper  <john dcs warwick ac uk>
-
-	* gaol.jl: new file, provides a restricted environment for
-	untrusted code
-
-1999-11-10  John Harper  <john dcs warwick ac uk>
-
-	* disassembler.jl, compiler.jl, bytecodes.jl: handle lexically
-	scoped functions (new opcodes and special forms). macrolet form
-	is still unimplemented in compiled code
-
-	* tar-file-handler.jl, remote-rep.jl, remote-ftp.jl: updated
-	for lexical scoping
-
-	* lisp.jl (features, featurep, provide, require): defined these
-	in Lisp now (so they get enclosed)
-	(function): this is now a special form
-
-1999-11-01  John Harper  <john dcs warwick ac uk>
-
-	* tar-file-handler.jl (tarfh-alternative-gnu-tar-programs): new
-	variable, a list of alternative programs to check when looking
-	for GNU tar
-
-1999-10-24  John Harper  <john dcs warwick ac uk>
-
-	* version 0.7
-
-1999-10-17  John Harper  <john dcs warwick ac uk>
-
-	* tar-file-handler.jl: read-only access to files stored in tar
-	archives, access files like `foo.tar.gz#tar/bar'; still has
-	some problems, but works well enough
-
-1999-10-13  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: don't add the current directory to the head of the
-	load-path, it's already at the end of the path where it should be
-
-	* lisp.jl (load-all): don't search in the current directory
-	(since it's unpredictable)
-
-	* compiler.jl: fix bug of `last' instruction being thought to
-	require two arguments
-
-1999-09-14  John Harper  <john dcs warwick ac uk>
-
-	* version 0.6
-
-	* environ.jl (unsetenv): new function
-
-1999-09-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.5
-
-1999-08-31  John Harper  <john dcs warwick ac uk>
-
-	* version 0.4
-
-1999-08-27  John Harper  <john dcs warwick ac uk>
-
-	* dump.jl: changed for new string data layout
-
-1999-08-22  John Harper  <john dcs warwick ac uk>
-
-	* version 0.3
-
-1999-08-21  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-batch): new command line option
-	`--write-docs'
-	(comp-compile-top-form): remember any declared variables that
-	haven't already registered, change the error on finding an
-	unregistered constant to a warning
-
-1999-08-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.2
-
-1999-08-03  John Harper  <john dcs warwick ac uk>
-
-	* version 0.1
-
-1999-07-22  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl (rep): clear the cached input when an error occurs
-
-	* debug.jl (debug-rep): implements a proper terminal-based
-	debugger loop
-
-1999-07-07  John Harper  <john dcs warwick ac uk>
-
-	* remote-rep.jl (remote-rep-read-length): fix this for large
-	numbers
-
-1999-07-06  John Harper  <john dcs warwick ac uk>
-
-	* remote-rep.jl, remote-ftp.jl (remote-rep-lookup-file,
-	remote-ftp-lookup-file): new functions, chase symbolic links
-	until the actual file is found
-
-	* remote-rep.jl: new file, mostly copied from remote-ftp, but
-	uses the rep-remote program (rsh'd onto the remote host) for
-	all file access. Supports all file operations (unlike ftp)
-
-	* remote-ftp.jl (remote-ftp-host-user-alist,
-	remote-ftp-default-user): deleted
-	* remote.jl (remote-host-user-alist, remote-default-user): new
-	variables
-	(remote-get-user): new function
-
-1999-07-04  John Harper  <john dcs warwick ac uk>
-
-	* tilde.jl, remote-ftp.jl: handle new operations read-symlink
-	and make-symlink (actually, ftp doesn't do make-symlink)
-
-	* compiler.jl (compile-file): preserve `#! ... !#' at start of
-	file if present
-
-1999-07-02  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl (remote-ftp-empty-cache): new command
-
-1999-06-09  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl (rep): don't use `read' to read an entire form at
-	once, instead use `read-line' to read strings until there's
-	enough to parse a whole form
-
-	* pwd-prompt.jl (pwd-prompt): fixed to actually delete the
-	line-terminating newline, also print a newline before exiting
-
-1999-06-06  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl: generate an intermediate form between Lisp forms
-	and bytecodes, a list of instructions and labels. Then run an
-	optimisation pass (peephole) over the intermediate code before
-	assembling it to bytecodes
-	* compiler-opt.jl: new file, implements the low-level
-	optimisations. Does peephole and constant-vector layout
-	optimisations
-
-	* bytecodes.jl: op-setq now pops the value from the stack.
-	Deleted op-pushi-pair, replaced by op-pushi-neg and
-	op-pushi-pair-pos, for pushing negative and positive values
-	respectively
-	* disassembler.jl: updated for new opcodes
-
-	* pwd-prompt.jl: new file, implement pwd-prompt function for
-	the console
-
-1999-06-03  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: loading a script implies --batch (but not when loaded
-	via the -l option). Don't print the banner until immediately
-	before entering the read-eval-print loop
-
-1999-05-27  John Harper  <john dcs warwick ac uk>
-
-	* cgi-get.jl (cgi-get-params): new file, process the
-	QUERY_STRING from a CGI get command
-
-1999-05-15  John Harper  <john dcs warwick ac uk>
-
-	* date.jl (date-day-of-week): new function, given
-	date/day/month, gives the day of week
-	(parse-date): accept ISO 8601 calendar format
-
-1999-04-28  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-batch): new function
-
-1999-04-19  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-file): minor fix to error handling
-
-1999-03-30  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl (remote-ftp-chmod): make errors give a warning
-	since some (many?) ftpd's don't support it and it's probably
-	mostly harmless
-
-	* compiler.jl (comp-compile-lambda): minor fix
-
-1999-03-17  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl (rep): don't catch 'quit
-
-1999-03-14  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: add the current directory to the load-path
-
-1999-03-12  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: any bare command-line arguments are passed to load
-
-1999-03-10  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (compile-file): ensure that the temporary output
-	file is deleted
-
-1999-03-07  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-lambda): only put the doc-string in
-	the bytecode vector if it wasn't written to the db
-
-	* lisp-doc.jl (documentation): only try to get the value of the
-	function or variable if it's actually bound
-
-1999-03-03  John Harper  <john dcs warwick ac uk>
-
-	* rep.jl: print a message if unknown command-line options are
-	encountered
-
-src/1999-02-28  John Harper  <john dcs warwick ac uk>
-
-	* MAJOR CHANGES: separated all LISP interpreter specific parts
-	into a separate library, librep (Read-Eval-Print)
-
-1999-02-12  John Harper  <john dcs warwick ac uk>
-
-        * tilde.jl: canonicalise the user-home-directory before
-        comparing it against the original default-directory
-
-1999-02-02  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-push-label-addr): new function, replaces
-	comp-get-label-addr
-	(comp-write-raw-op): deleted this function
-
-1999-02-01  John Harper  <john dcs warwick ac uk>
-
-	* rm-mail-dir.jl (rm-mail-dir-auto-scan-hook): new hook
-
-1999-01-31  John Harper  <john dcs warwick ac uk>
-
-	* html-decode.jl: only underline links (anchors with href
-	field). Add anchors to a list that's returned to the caller
-	* html-display.jl (html-display-goto-anchor): new command
-	* find-url.jl: support for anchors specified in URLs
-
-	* bytecodes.jl: several pushi instructions
-	* compiler.jl (comp-write-raw-op): new function
-	(comp-compile-constant): use pushi instructions to compile
-	integers where possible
-	* disassembler.jl (disassemble): support pushi instructions
-
-1999-01-28  John Harper  <john dcs warwick ac uk>
-
-	* find-url.jl (find-file-as-url): new command
-
-	* html-display.jl (html-display): if the given URL is nil, and
-	the source buffer has a file name, set the URL to the file:
-	version of the filename
-
-	* html-decode.jl (html-decode): more bug fixes
-
-1999-01-27  John Harper  <john dcs warwick ac uk>
-
-	* mime-decode.jl (mime-encode-mmencode): new function, wrapper
-	for the base64 and quoted-printable coders, if possible and
-	desirable, then an external `mmencode' program is used to do
-	the translation
-
-	* find-url.jl, html-display.jl: fix which view to display in
-
-1999-01-26  John Harper  <john dcs warwick ac uk>
-
-	* rm-mime.jl: bind the `w' prefix in read-mail mode to the
-	`html-display-map'
-
-	* html-display.jl (html-display-current-link): search up the
-	extent stack correctly
-	(html-display-map): autoload'able
-
-	* mime-decode.jl (mime-decode): handle `text/html' MIME parts
-	by calling html-decode
-
-	* html-decode.jl: more bug fixes
-
-1999-01-25  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl (remote-ftp-close-all): new function
-	(remote-ftp-close-host): made interactive
-
-1999-01-24  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl: misc fixes to try and handle non-successful
-	logins more gracefully; not 100% successful yet..
-
-	* ispell.jl (ispell-kill-process): keep looping while
-	accept-process-output times out, not while it doesn't!
-
-	* html-display.jl (html-display-select): handle URL's that are
-	specified relative to the root of the current server
-
-1999-01-22  John Harper  <john dcs warwick ac uk>
-
-	* html-decode.jl: parse <frameset> sections half-heartedly, and
-	be slightly more clueful about unnested close tags
-
-1999-01-21  John Harper  <john dcs warwick ac uk>
-
-	* find-url.jl (find-url-file, find-url-ftp): detect if a file:
-	URL contains HTML code, if so decode it
-
-	* html-decode.jl (html-decode): bind html-decode-source and
-	html-decode-point to the position of the next item to be
-	parsed, called functions may then alter these
-	(html-decode:script): skip <script> sections
-
-1999-01-20  John Harper  <john dcs warwick ac uk>
-
-	* find-url.jl (find-url-asynchronously): new variable, only
-	find-url-http takes note of it, calling wget asynchronously
-	when it's non-nil
-
-	* html-display.jl (html-display): the OTHER-VIEW parameter may
-	be the actual view to display in, or nil, or anything else to
-	switch to the other view
-
-1999-01-19  John Harper  <john dcs warwick ac uk>
-
-	* html-display.jl (html-display): new function, a mode to tie
-	find-url and html-decode to form a basic web-browser
-
-	* find-url.jl (find-url-http): new function, uses wget to
-	download the url, then if it's html data, html-display to view
-	it
-
-	* html-decode.jl: many bug fixes, implemented most list tags
-
-1999-01-18  John Harper  <john dcs warwick ac uk>
-
-	* html-decode.jl (html-decode): initial version of this module,
-	a basic HTML to editor-buffer translator
-
-1999-01-14  John Harper  <john dcs warwick ac uk>
-
-	* mime-decode.jl (mime-display-part): use name of attachment
-	(if given) as name of buffer
-	(mime-decode-buffer): fix nil-decoder decoding
-
-	* send-mail.jl (mail-setup): when putting an address in the BCC
-	header for the mail-self-blind option, use user-mail-address,
-	not (user-login-name)
-
-	* mail-headers.jl (mail-compare-addresses): new function,
-	compare two mail addresses
-
-	* rm-misc.jl (rm-reply): when following-up a message, only put
-	those address in the CC header that aren't in the To or BCC
-	headers
-
-	* mime-decode.jl (mime-decode): don't display parts whose
-	bodies contain zero lines
-	(mime-decode-insert-stub, mime-save-part): look in content-type
-	param lists for file name, as well as in content-disposition
-	(though content-disposition takes precedence)
-
-1999-01-13  John Harper  <john dcs warwick ac uk>
-
-	* keymap.jl (active-keymaps): dereference symbols in the list
-	of keymaps
-	(map-keymap): deref. symbol in the correct buffer
-	(next-event, read-event, describe-key): miscellaneous fixes
-
-1999-01-12  John Harper  <john dcs warwick ac uk>
-
-	* dired.jl (dired-do-copy): only call summary-update when
-	copying to the displayed directory
-
-	* help.jl (describe-function): handle nil doc string
-
-	* buffers.jl (find-file): expand the file name before doing
-	anything with it, also if it's a directory, call
-	directory-file-name on it
-
-	* remote-ftp.jl: cache more than one directory listing, and
-	expire cached directories after X minutes (default X=5).
-	(remote-ftp-command): instead of just returning t if the
-	command succeeded, signal a file-error if it failed; nothing
-	really checked the return value anyway..
-	(remote-ftp-open-session): if remote-ftp-login fails (i.e.
-	signals an error), close the session before propagating the
-	error
-
-1999-01-11  John Harper  <john dcs warwick ac uk>
-
-	* dired.jl (dired-do-copy, dired-do-rename): set default file
-	name to name of source file
-
-	* prompt.jl (prompt-for-file, prompt-for-directory): when
-	setting prompt-default-value, call expand-file-name on it
-
-1999-01-10  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (save-excursion, save-restriction): use un-interned
-	symbols to store temproary values
-
-	* edit.jl (map-extents-at): macro mapping a function over all
-	extents containing an arbitrary position
-
-	* lisp-mode.jl (lisp-mode): fix mode-defun-header to match
-	macros and defsubsts as well as functions
-
-1999-01-07  John Harper  <john dcs warwick ac uk>
-
-	* mime-decode.jl (mime-display-part): new function, decodes a
-	MIME subpart to a temporary buffer
-	* rm-mime.jl: bind C-RET to mime-display-part in read-mail mode
-
-1999-01-07  John Harper  <john dcs warwick ac uk>
-
-	* tex-mode.jl (tex-mode, latex-mode, plain-tex-mode): make sure
-	that when text-mode-hook is called, the major-mode is set to
-	its final value
-
-1999-01-05  John Harper  <john dcs warwick ac uk>
-
-	* ispell.jl: protect against multiple concurrent-readers
-
-1998-12-21  John Harper  <john dcs warwick ac uk>
-
-	* modes.jl (auto-mode-alist): made .sty suffix use tex-mode
-
-	* diff.jl: some fixes for handling narrowed buffers
-
-	* ispell.jl (ispell-idle-function): minor fix to identifying
-	the region to scan (when the buffer is narrowed)
-
-1998-12-16  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl (cvs-add): new argument WITH-LOG, controlling whether
-	or not to prompt for a log message before adding the file
-
-1998-12-15  John Harper  <john dcs warwick ac uk>
-
-	* mime-encode.jl: fix keymap autoloading problem
-
-1998-12-09  John Harper  <john dcs warwick ac uk>
-
-	* miranda.jl (miranda): take program arguments from variable
-	miranda-program-args (not including file name)
-
-1998-12-08  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl (rcs-callback-with-description): install local keymap
-	_after_ calling text-mode. This loses text-mode's bindings,
-	should really install the rcs bindings as a minor-mode..
-
-1998-12-04  John Harper  <john dcs warwick ac uk>
-
-	* prompt.jl (prompt): only add result to prompt-history if it's
-	a string (amongst other things)
-
-1998-12-01  John Harper  <john dcs warwick ac uk>
-
-	* latin-1.jl (insert-latin-1-character): new function, entry of
-	latin 1 chars by name
-
-	* tex-mode.jl (tex-mode, latex-mode, plain-tex-mode): fix
-	documentation strings
-
-1998-11-29  John Harper  <john dcs warwick ac uk>
-
-	* loadkeys.jl (global-keymap): no longer buffer-local
-
-	* replace.jl (query-replace): use overriding-local-keymap to
-	install the keymap
-
-1998-11-26  John Harper  <john dcs warwick ac uk>
-
-	* mail-dir.jl (insert-mail-item): fix for when no name
-	associated with address
-
-	* tex-mode.jl (latex-mode, plain-tex-mode): added autoload tags
-
-1998-11-25  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (quoted-insert): new command, bound to C-q
-
-	* keymap.jl (next-event): new function
-	(read-event): new optional arg COOKED
-
-1998-11-24  John Harper  <john dcs warwick ac uk>
-
-	* help.jl (describe-function): once more run
-	substitute-command-keys over the documentation
-
-	* ispell.jl: in misspelt words, bind `C-c C-a' to add the word
-	to the personal dictionary, and `C-c C-s' to accept the word
-	for the rest of the Ispell session
-	(ispell-add-word-for-session, ispell-save-dictionary): new
-	commands
-
-1998-11-24  John Harper  <john dcs warwick ac uk>
-
-	* yacc-mode.jl, text-mode.jl, texinfo-mode.jl, tex-mode.jl,
-	summary.jl, shell.jl, sh-mode.jl, send-mail.jl, replace.jl,
-	read-mail.jl, rcs.jl, prompt.jl, perl-mode.jl, page-summary.jl,
-	modes.jl, mime-encode.jl, mail-dir-summary.jl, loadkeys.jl,
-	lisp.jl, lisp-mode.jl, keymap.jl, isearch.jl, info.jl, help.jl,
-	gdb.jl, fill.jl, dired.jl, diff.jl, debug.jl, cvs.jl,
-	c-mode.jl, asm-mode.jl, add-log.jl: updated for new key binding
-	methods
-
-	* ispell.jl (ispell-minor-mode): in the extents of misspelt
-	words, bind `C-c RET' and `LMB-Click2' to a command calling the
-	interactive ispell on the word
-
-1998-11-23  John Harper  <john dcs warwick ac uk>
-
-	* ispell.jl (ispell-strip-word): if a stripped prefix or suffix
-	doesn't match, assume it's a literal string including a hyphen
-
-1998-11-19  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl (rcs-compare-revisions): when the new variable
-	rcs-diff-options is set to the symbol `visual', use the
-	diff-files command to visually display the differences
-
-1998-11-18  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (insert-buffer): new command
-
-1998-11-14  John Harper  <john dcs warwick ac uk>
-
-	* c-mode.jl (c-indent-pos): don't recognize a semi-colon as
-	terminating a statement unless (ignoring following whitespace)
-	it's followed by eol or a comment
-
-1998-11-11  John Harper  <john dcs warwick ac uk>
-
-	* tex-shell.jl (tex-shell-program, tex-shell-program-args): new
-	variables
-
-1998-11-09  John Harper  <john dcs warwick ac uk>
-
-	* tex-mode.jl (latex-mode, plain-tex-mode): added doc strings
-
-	* page-summary.jl: new file, a command to summarise a buffer by
-	the comments at the start of each page
-
-1998-11-07  John Harper  <john dcs warwick ac uk>
-
-	* sort.jl (sort): when merging lists ensure that equal keys
-	retain their original order
-
-1998-11-05  John Harper  <john dcs warwick ac uk>
-
-	* gdb.jl (gdb-frame-face): new variable, the face used to
-	highlight the source line of the current stack frame (instead
-	of using the block)
-
-1998-11-01  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (kill-buffer): call kill-buffer-hook with the
-	current buffer as the buffer being killed, instead of passing
-	it as an argument
-	* server.jl, shell.jl: adapt to new calling method for
-	kill-buffer-hook
-
-1998-10-31  John Harper  <john dcs warwick ac uk>
-
-	* tex-shell.jl (bibtex-file, tex-kill-job,
-	tex-recenter-output-buffer, tex-print, tex-view,
-	tex-show-print-queue): new commands
-
-	* tex-mode.jl (plain-tex-mode): new function, just so there can
-	be a plain-tex-mode-hook really
-
-	* shell.jl (shell-kill-buffer-hook): new function, takes most
-	of shell-mode-kill, but is put in the kill-buffer-hook so that
-	it actually gets called when the buffer is killed..
-
-1998-10-30  John Harper  <john dcs warwick ac uk>
-
-	* prompt.jl (prompt-for-lisp): kludge to use lisp-complete-sexp
-	for completion
-
-	* lisp.jl: add two entries to the format-hooks-alist, `D' and
-	`F' for file-name-directory and file-name-nondirectory
-	respectively
-
-	* modes.jl (auto-mode-alist): add latex-mode entry
-	* tex-mode.jl (latex-mode): derivative of tex-mode, called when
-	the buffer looks to contain LaTeX source
-
-	* tex-shell.jl: initial (very basic) attempt at running TeX in
-	a subshell
-
-1998-10-29  John Harper  <john dcs warwick ac uk>
-
-	* completion.jl (complete-at-point, show-completions): these
-	replace the -buffer- completion commands. They use the list of
-	completion generators completion-hooks to do the real work. The
-	default generator is complete-from-buffer
-	* lisp.jl (lisp-complete-sexp): this is now just a generator,
-	put in the completion-hooks in Lisp buffers
-
-	* prompt.jl (prompt-complete-function,
-	prompt-list-completions-function): deleted. If
-	prompt-completion-function is `t', call complete-at-point
-	(before-prompt-hook): new hook
-
-	* completion.jl (completion-insert): new function to handle
-	inserting from a list of completions at the cursor
-	(complete-from-buffer, show-buffer-completions): new commands
-	* loadkeys.jl (global-keymap): bound complete-from-buffer to
-	M-TAB and show-buffer-completions to M-?
-	* lisp-mode.jl (lisp-complete-sexp): use completion-insert
-
-	* modes.jl (forward-exp, backward-exp): handle negative COUNTs
-
-	* read-mail.jl (rm-fix-status-info): set buffer-status-id in
-	the summary buffer as well (if it exists)
-
-	* completion.jl (completion-abbrev-function): new variable
-	(completion-list): call the above hook on all completions, then
-	only display the abbreviated versions
-
-	* prompt.jl (prompt-abbreviate-filename): new function, put in
-	the completion-abbrev-function when completing in the
-	filesystem
-
-1998-10-28  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (make-backup-file-name): new function, used by
-	backup-file to find the name of the old version
-
-1998-10-26  John Harper  <john dcs warwick ac uk>
-
-	* dump.jl (dump-output-strings): output a zero in the new
-	`next' field of the Lisp_String structure
-
-1998-10-24  John Harper  <john dcs warwick ac uk>
-
-	* completion.jl (completion-setup-view): when not creating a
-	new view, ensure that the view chosen isn't currently selected
-
-	* ispell.jl (ispell-strip-word): try again to fix this function
-
-1998-10-23  John Harper  <john dcs warwick ac uk>
-
-	* rm-mail-dir.jl (rm-mail-dir-scan-messages,
-	rm-mail-dir-scanner): when invoked by C-k, if an address has no
-	real name, prompt for one
-
-1998-10-22  John Harper  <john dcs warwick ac uk>
-
-	* mime-decode.jl (mime-decode-content-disp): check the length
-	of the string before looking for a `;' character
-
-1998-10-20  John Harper  <john dcs warwick ac uk>
-
-	* rm-mime.jl (rm-mime-display-markers): command to redisplay
-	the current message with markers for _all_ MIME parts, bound to
-	"D" in read-mail mode
-
-	* keymap.jl (lazy-bind-keys): macro to bind keys in a package
-	that has possibly not been loaded
-
-1998-10-19  John Harper  <john dcs warwick ac uk>
-
-	* ispell.jl (ispell-strip-word): fixed for words consisting of
-	a root and nothing else
-
-1998-10-14  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-get-address-name): new function
-
-1998-10-13  John Harper  <john dcs warwick ac uk>
-
-	* mime-quoted-printable.jl (mime-encode-quoted-printable):
-	implemented this function
-
-	* modes.jl (mode-line-format): add a `%m' as the first
-	character
-
-1998-10-12  John Harper  <john dcs warwick ac uk>
-
-	* rcs-hooks.jl (rcs-file-p): test if the file is a directory
-	first
-
-	* dired.jl (dired-create-directory): new command, bound to `+'
-	(dired-execute-end): test whether the delete item is a file or
-	a directory, then call delete-file or delete-directory
-	appropriately
-
-	* remote-ftp.jl (remote-ftp-handler): handle make-directory and
-	delete-directory
-	* tilde.jl (tilde-file-handler): handle make-directory and
-	delete-directory
-
-	* buffers.jl (kill-buffer): delete the buffer from the
-	buffer-list even in minibuffer views now (for example, isearch
-	uses with this variable)
-
-1998-10-11  John Harper  <john dcs warwick ac uk>
-
-	* rm-misc.jl (rm-reply): uses the rm-get-msg-header function
-	instead of mail-get-header. This works with decoded MIME
-	messages
-
-	* send-mail.jl: bind `C-c C-m' to the mime-encode-keymap
-
-	* send-mail.jl (mail-send-hook): defvar'd this hook
-
-	* mime-encode.jl: initial attempt at creating MIME messages
-
-	* mime-decode.jl: minor fixes
-	(mime-current-part): new function
-
-1998-10-09  John Harper  <john dcs warwick ac uk>
-
-	* mime-decode.jl (mime-decode-mark-inlines): new variable
-
-	* mime-decode.jl, rm-mime.jl: support for Content-Disposition
-	header, other misc fixes
-
-	* mime-quoted-printable.jl (mime-decode-quoted-printable): this
-	function has now been implemented
-
-1998-10-08  John Harper  <john dcs warwick ac uk>
-
-	* rm-mime.jl, mime-quoted-printable.jl, mime-decode.jl,
-	mime-base64.jl: initial support for decoding of MIME messages.
-	The quoted-printable stuff is unimplemented; various shortcuts
-	in mime-decode as well
-
-	* read-mail.jl (rm-display-current-message, rm-proxy-folder):
-	support for rendering messages to a temporary buffer for
-	display (used for MIME for example)
-
-	* rm-summary.jl (rm-summary-view): never return a buffer, only
-	a view
-
-	* compiler.jl (comp-trans-require): tranform to evaluate
-	embedded require forms before compiling them
-
-1998-10-07  John Harper  <john dcs warwick ac uk>
-
-	* send-mail.jl (sendmail-send-message): when handling FCC
-	headers, temporarily mangle ^From_ to >From_ while saving the
-	message
-
-1998-10-05  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-command-items): use rm-with-summary instead
-	of just switching buffers
-
-1998-10-04  John Harper  <john dcs warwick ac uk>
-
-	* rm-summary.jl, rm-output.jl, rm-mail-dir.jl, read-mail.jl:
-	support for marking messages then operating on the selected
-	messages. Currently only the `C-k' and `s' commands do this
-
-	* cvs.jl: use open-buffer to create buffers
-
-	* summary.jl (summary-unmark-all): call the after-marking
-	vector of each message unmarked
-	(summary-unmark-item): call after-marking even if the message
-	status didn't change
-
-1998-10-02  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl (rcs-call-callback): don't truncate the log message at
-	the cursor position, use all the buffer (less any trailing
-	newlines) 
-
-	* buffers.jl (read-file-into-buffer): assume that the
-	read-file-hook, if successful, sets default-directory
-	* gzip.jl, dired-hooks.jl: the functions put in the
-	read-file-hook now set the default-directory
-
-1998-10-01  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl (rcs-process, rcs-output-buffer): deleted these
-	variables, all processes and buffers are created on demand (to
-	help garbage collection)
-
-1998-09-30  John Harper  <john dcs warwick ac uk>
-
-	* html-style.jl: require maildefs (for user-mail-address)
-
-	* remote-ftp.jl (remote-ftp-prompt-regexp): new variable
-
-	* ispell.jl (ispell-region-1): fix some bugs in how the
-	ispell-ignore-word-hook is used
-
-	* compiler.jl (comp-fold-constants): does what it says, in a
-	simple sort of way
-
-1998-09-29  John Harper  <john dcs warwick ac uk>
-
-	* windows.jl, minor-major.jl, ispell.jl, diff.jl: use `defface'
-	macro to declare/define all faces
-
-	* compiler.jl (comp-compile-cond): where a condition is a
-	constant, force it to be either t or nil. When dead code is
-	detected in conditionals, ignore it correctly
-	(comp-trans-defvar): source transformation to make `defvar'
-	work at other than the top-level
-
-	* lisp.jl (defface): new macro
-	* lisp-mode.jl: set indentation property of `defface'
-
-1998-09-22  John Harper  <john dcs warwick ac uk>
-
-	* sm-mail-dir.jl (expand-mail-aliases): attempts to expand
-	local addresses in the address book, e.g. if I put "john" in a
-	header, it looks for john MY DOMAIN, and if it exists, expands
-	it with the real name
-
-	* mail-dir.jl: minor fixes
-	* mail-dir-summary.jl: miscellaneous minor fixes
-	(mds-edit-field): used to move to or create new fields when
-	editing records
-
-	* help.jl (describe-function): don't pass the documentation
-	through substitute-command-keys anymore
-
-	* maildefs.jl (mail-domain-name): new variable
-
-1998-09-21  John Harper  <john dcs warwick ac uk>
-
-	* mail-dir.jl: aliases are now kept in the mail-address-list
-	variable, they're records with :name and :net-alias fields.
-	This involved changing a few function names..
-
-	* mail-dir-summary.jl: removed the address/alias distinction
-	and added an edit command, this dumps you to a buffer
-	containing a pretty-printed copy of the record, you edit the
-	record (i.e. adding any new fields or whatever) then commit the
-	changes with C-c C-c
-
-	* compiler.jl, dump.jl: only print the name of the source file
-	in the header, not all the useless stuff I used to
-
-	* compiler.jl, bytecodes.jl: op-set and op-fset are now more
-	regular
-
-	* summary.jl (summary-get-index): return nil if the item
-	specified isn't actually displayed
-	(summary-highlight-index): only delete the extent of the
-	highlighted line
-	(summary-update): call delete-all-extents
-	(summary-update-item, summary-goto-item): only proceed if the
-	item is actually displayed
-
-	* read-mail.jl (rm-format-alist): moved the documentation of
-	the default format conversions here (instead of
-	rm-summary-format) 
-	(rm-saved-flags): list of message properties that should be
-	saved with the message (in the x-jade-flags-v1 header) when
-	they're non-nil
-	(rm-auto-delete-rules): deleted
-	(rm-after-import-rules, rm-after-parse-rules): new variables
-	(rm-set-flag, rm-clear-flag, rm-test-flag): deleted
-	(rm-message-put, rm-message-get): replace the flag functions,
-	now a alist of properties for each message
-	(rm-status-alist): map non-nil message properties to strings to
-	put into the staus line
-
-	* rm-restrict.jl: add a load more standard functions as rules,
-	basically all conditionals and most arithmetic operators
-	(defrule): rule bodies may now have more than a single form
-	(put, get): `rules' to access the messsage's plist
-	(attribute): now just a synonym for `get'
-
-	* rm-thread.jl (rm-sort-predicates): added a predicate `score',
-	this sorts by the value of each message's `score' property
-
-	* rm-summary.jl (rm-summary-print-item): if the message has a
-	`summary-face' property use it as the face of the summary line
-
-	* rm-misc.jl, rm-output.jl: use message properties not flags
-
-	* mail-dir.jl: minor fixes for last set of changes
-
-1998-09-18  John Harper  <john dcs warwick ac uk>
-
-	* mail-dir.jl: made the database a lot more general. Each
-	record is now a one-to-many mapping from keys to values.
-	Currently used keys are :net (email addresses) and :name (real
-	names)
-	* mail-dir-summary.jl: fixed for the new database. Needs a lot
-	of work to allow arbitrary fields to be manipulated
-
-	* rm-restrict.jl: fixed a lot of confusion. The
-	rm-rule-function property was being called rm-rule-symbol in a
-	lot of places
-
-1998-09-17  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-format-alist): the %D and %M formats don't
-	do %02d formatting anymore, just %d
-
-1998-09-13  John Harper  <john dcs warwick ac uk>
-
-	* ispell.jl (ispell-ignore-word-hook): new hook, called
-	immediately prior to spell-checking each word, if the hook
-	returns t, don't check the word and assume it's ok
-
-	* tex-mode.jl (tex-spell-ignore-word-hook): don't spell-check
-	any words preceded by a backslash (i.e. TeX commands)
-
-1998-09-12  John Harper  <john dcs warwick ac uk>
-
-	* init.jl: load files for the window- and operating-system,
-	the relevant name prefixed by "ws-" and "os-" respectively
-
-	* ispell.jl (ispell-handle-failure-interactively): highlight
-	the misspelt word in the buffer as well as in the list of
-	options display
-
-	* ws-x11.jl: new file, initialisation for X11, contains
-	functions for the block-status, after-kill, and pre-yank-hook's
-	* edit.jl: moved all X11 specific code to ws-x11.jl
-
-	* edit.jl (mouse-select): only kill the block on a single
-	click, if that click is _inside_ the marked region
-	(mouse-select-drag): same as above, but only when the current
-	mouse position is the same as the position of the first click
-
-1998-09-10  John Harper  <john dcs warwick ac uk>
-
-	* ispell.jl (ispell-highlight-misspellings): support for
-	aborting if input arrives in the middle of spell-checking
-
-1998-09-09  John Harper  <john dcs warwick ac uk>
-
-	* ispell.jl (ispell-add-word-to-dictionary): new command
-	(ispell-cleanup-before-exit): added to the before-exit hook,
-	saves the dictionary and kills the process
-
-1998-09-08  John Harper  <john dcs warwick ac uk>
-
-	* ispell.jl (ispell-minor-mode): spell-checking in idle-time
-	(ispell-set-dictionary): new command
-
-	* ispell.jl: first attempt at interacting with Ispell,
-	currently two commands `ispell-region' and `ispell-buffer'
-
-1998-09-07  John Harper  <john dcs warwick ac uk>
-
-	* info.jl (info-highlight-buffer): end highlighted menu entries
-	only by ":" not by "."
-	(info-keymap): bind "b" to start-of-buffer not
-	goto-start-of-buffer
-
-1998-09-06  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-format-alist): add a `%A' format, like `%a'
-	but with five characters (all attributes) not three. For the
-	`%a' make deleted higher precedence than unread
-
-	* buffers.jl (find-file): if the buffer's name would be null,
-	look for the name of the parent
-
-	* dired.jl (dired-mode): moved the main parts of `dired' to
-	this function. Calling `dired-mode' on a buffer whose
-	buffer-file-name points to a directory puts it into Dired mode
-	* dired-hooks.jl: use the read-, write-, and insert-file hooks
-	instead of the find-file-hook. This allows the buffer to be
-	reverted correctly. Inserting and writing to directories signal
-	errors
-
-1998-09-05  John Harper  <john dcs warwick ac uk>
-
-	* gzip.jl (gzip-write-file): fix stupid bug
-	(auto-compression-alist): add support for bzip2 compression
-
-1998-09-04  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl: make "550" a failure, not a recoverable error
-
-1998-09-02  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl: fixes to password handling while logging in:
-	only caches passwords that are actually valid, has a sane
-	method of retrying failed attempts, and allows the retrying
-	process to be aborted properly
-
-1998-09-01  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl (remote-ftp-command): now transparently
-	reconnects when the server times out
-
-	* diff.jl (diff-backup, diff-auto-save): when prompting, start
-	with the name of the current file
-
-1998-08-31  John Harper  <john dcs warwick ac uk>
-
-	* diff.jl: new file, visual diff mode. Commands `diff',
-	`diff-buffers', `diff-backup' and `diff-auto-save'.
-
-	* replace.jl (query-replace, replace-all): put quotes around
-	the search string when prompting for its replacement
-
-	* help.jl (describe-function): run substitute-command-keys over
-	the documentation string
-
-1998-08-30  John Harper  <john dcs warwick ac uk>
-
-	* info.jl (info-find-node): fix bug with files without indirect
-	lists being reloaded all the time
-
-	* prompt.jl (prompt): set the glyph-table of the title extent
-	to the current glyph table (in case a different table is used
-	for the prompt)
-
-1998-08-29  John Harper  <john dcs warwick ac uk>
-
-	* prompt.jl (prompt-start-of-line): new command, bound to `C-a'
-	in prompts
-
-	* windows.jl (enlarge-view): fix bug of not being able to
-	enlarge minibuffer (unless more than two views are present)
-
-	* prompt.jl: don't use set-status-message to display title.
-	Instead insert the title at the beginning of the prompt,
-	covered by a read-only extent (with prompt-title-face).
-	Also enlarge the minibuffer to two lines temporarily if it's a
-	single line (to avoid being clobbered by messages)
-
-1998-08-28  John Harper  <john dcs warwick ac uk>
-
-	* yacc-mode.jl: new major mode, uses indented-text for yacc
-	grammar, and embeds minor-major c-modes for all C regions
-	* modes.jl (auto-mode-alist): added yacc-mode
-
-	* send-mail.jl (send-mail-find-header): avoid the read-only
-	header-separator
-
-	* minor-major.jl (minor-major-mode, delete-minor-major-mode):
-	new file, allows major-modes to be set for _regions_ of the
-	current buffer (uses extents and the `catch-variables'
-	property)
-
-1998-08-27  John Harper  <john dcs warwick ac uk>
-
-	* buffer-summary.jl: don't print the minor-modes
-
-	* modes.jl (mode-name, minor-mode-alist, mode-line-format): new
-	variables
-	(minor-mode-list, add-minor-mode, remove-minor-mode,
-	minor-mode-installed-p): deleted
-
-	* cvs.jl, edit.jl, fill.jl, rcs.jl: new method of putting minor
-	mode names in mode-line
-
-	* read-mail.jl: put message flags in mode-name, needs more work
-	* rm-summary.jl: change mode-line message
-
-	* rm-summary.jl (rm-summarize): set y-scroll-step-ratio to two
-	in each summary buffer (scroll by half the window)
-
-	* read-mail.jl (rm-auto-sort-key-alist): new variable
-
-	* info.jl (info-locate-file): don't search the current directory
-	(info-find-node): a couple of fixes in file selection
-
-	* gzip.jl (auto-compression-mode): only display message when
-	FORCE-ACTIVE isn't t
-
-1998-08-26  John Harper  <john dcs warwick ac uk>
-
-	* info.jl (info-menu-face, info-xref-face): new variables
-
-	* maildefs.jl (mail-highlight-face): new variable
-
-	* buffers.jl (buffer-read-only-p, set-buffer-read-only):
-	implemented in lisp now
-
-	* info.jl: highlights menus and links in underline-face
-
-	* isearch.jl: highlights the selection in highlight-face
-
-	* maildefs.jl (mail-highlighted-headers): changed
-	documentation, made more general
-
-	* print.jl (print-mode-alist): added more entries
-
-	* prompt.jl (prompt): setq the glyph-table, don't use
-	set-buffer-glyph-table
-
-	* read-mail.jl: add extents for all mail-highlighted-headers
-
-	* send-mail.jl: add a read-only extent covering the
-	mail-header-separator string
-
-	* summary.jl (summary-highlight-index): use an extent
-
-	* windows.jl (underline-face, bold-face, italic-face): more
-	default faces, bold and italic aren't supported yet
-
-1998-08-19  John Harper  <john dcs warwick ac uk>
-
-	* rm-mail-dir.jl (rm-mail-dir-scanner): rewritten. added
-	parameters FOLDER (unused) and ALL-ADDRESSES. Only scan
-	recipients when ALL-ADDRESSES is non-nil
-	(rm-mail-dir-scan-current): prefix arg means scan all addresses
-
-	* read-mail.jl (rm-format): new function, format a string using
-	a message and the mail-local format specifiers
-
-	* rm-misc.jl (rm-citation-format): format string for citation
-	line in quoted messages
-
-	* send-mail.jl (send-mail-mode): set paragraph-separate and
-	paragraph-start to understand the yank-prefix and
-	header-separator
-
-1998-08-18  John Harper  <john dcs warwick ac uk>
-
-	* pwd-prompt.jl (pwd-prompt): no need for dubious hacks
-	anymore, use the prompt-glyph-table variable instead
-
-	* prompt.jl (prompt-complete-function, prompt-list-completions-
-	function): new variables. When non-nil these completely
-	override the prompt-complete and prompt-list-completions
-	functions
-	(prompt-word-regexps): deleted this variable, a waste of space
-	(prompt-glyph-table): new variable, the glyph table to use in
-	prompt buffers
-	(get-prompt-buffer, return-prompt-buffer): deleted
-
-	* lisp-mode.jl (lisp-complete-sexp): new optional parameter
-	ONLY-DISPLAY
-	(lisp-show-sexp-completions): new function, bound to M-?
-
-1998-08-17  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-open-mailbox): bind enable-local-variables
-	to nil while calling find-file. Otherwise a mail message
-	containing a trailing local variables section could cause
-	problems..
-
-1998-08-14  John Harper  <john dcs warwick ac uk>
-
-	* completion.jl (completion-setup-view): if reusing an existing
-	view, make sure that one directly above the minibuffer is used
-
-1998-08-12  John Harper  <john dcs warwick ac uk>
-
-	* dired.jl (dired-find-file, dired-find-file-other-view,
-	dired-display-file): these now find all _selected_ files
-
-1998-08-11  John Harper  <john dcs warwick ac uk>
-
-	* miranda.jl (miranda): ensure that a local-file-name is passed
-	to the subprocess
-
-	* find-autoloads.jl (autoload-do-magic): allow macros to have
-	autoload tags
-	* rm-restrict.jl (defrule): added autoload tag
-
-	* buffers.jl (kill-buffer): fix bug (taking the new current
-	buffer from the buffer-list of the current view, not the view
-	being altered)
-
-	* rm-restrict.jl (sender-alias): new rule, tests if a message
-	was sent by an address in a named alias
-
-	* completion.jl (completion-column-extra): new variable,
-	controls the column width in completion listings
-
-1998-08-10  John Harper  <john dcs warwick ac uk>
-
-	* completion.jl: new file, generalises the old code in
-	prompt.jl for displaying completions
-	* prompt.jl: use the new completion functions
-	* lisp-mode.jl (lisp-complete-sexp): new command bound to M-TAB
-
-	* read-mail.jl (rm-auto-delete-rules): new variable, a list of
-	rules that are applied to newly-received messages. If any
-	match, the message is marked as deleted
-
-	* rm-restrict.jl (rm-apply-rules): new function, similar to
-	rm-apply-rule but takes a list of rules to test
-
-	* remote-ftp.jl (remote-ftp-handler): support for opening
-	remote files with open-file. All access types are supported
-	(read, write, append), a local copy is used so all operations
-	on this copy should work
-
-	* remote.jl (remote-file-handler): slight change to the
-	conventions for working with remote file handles
-
-1998-08-09  John Harper  <john dcs warwick ac uk>
-
-	* help.jl (apropos-variable): quote the query string when
-	displaying results
-
-	* windows.jl (scroll-next-view): pass the other-view an
-	argument `t' to stop it altering the size of any views
-
-	* cvs.jl (cvs-add-change-log-entries): now prompt for the name
-	of the ChangeLog file associated with each directory
-
-1998-08-06  John Harper  <john dcs warwick ac uk>
-
-	* dict.jl (dict-lookup): quote the word being queried
-
-1998-08-02  John Harper  <john dcs warwick ac uk>
-
-	* add-log.jl, buffer-summary.jl, buffers.jl, compile.jl,
-	info.jl: miscellaneous changes for buffer-file-name returning
-	nil if the buffer has no file, not the null string as before
-
-1998-08-01  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (find-file): check that the file exists before
-	testing it's timestamp
-	(save-file): signal an error if the buffer has no file-name
-
-1998-07-31  John Harper  <john dcs warwick ac uk>
-
-	* shell.jl (shell-output-filter, shell-output-limit,
-	shell-echos, shell-last-output): new variables
-	(shell-filter): new function, the default output stream
-	(shell-enter-line): uses telnet.jl's method: if at the end of
-	the buffer, send everything after the position of the last
-	output, otherwise resort to prompt-matching
-
-	* telnet.jl: moved most of the funky output-filtering to
-	shell.jl, password prompt grabbing is now done via the
-	shell-output-filter variable. Also use the shell's send-line
-	function exclusively
-
-1998-07-17  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-lambda): if a list-style
-	interactive decl. is found, see if it might be worth compiling
-	it (if the function is in the `comp-top-level-compiled' list)
-
-1998-07-10  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (read-mail-folder): before adding the new folder
-	to the rm-open-folders list, remove any folders that are no
-	longer pertinent
-	* rm-summary.jl (rm-configure-views): fix the code to ensure
-	that the rm-open-folders list has the correct view for the
-	folder being configured
-
-	* dict.jl (dict-lookup): new file, a simple interface to the
-	dict(1) client (that speaks the Dictionary Server Protocol)
-
-1998-07-09  John Harper  <john dcs warwick ac uk>
-
-	* thesaurus.jl (thesaurus-lookup-word, thesaurus-show-words):
-	new file, two commands for accessing the "th" thesaurus front
-	end
-
-	* edit.jl (mouse-yank-at-point): new variable, when t (the
-	default), yank-to-mouse doesn't move to the mouse position
-	before yanking
-
-1998-07-08  John Harper  <john dcs warwick ac uk>
-
-	* sh-mode.jl (sh-get-basic-indent): skip blank lines
-
-	* read-mail.jl (rm-append-inbox): be sure to return zero if no
-	new messages exist, but no errors occurred (not nil as before)
-	(rm-get-mail-for-box): be sure to return the number of
-	messages, also make sure that all inboxes are used
-
-	* maildefs.jl (mail-find-inboxes): expand inbox names relative
-	to mail-folder-dir if they're not absolute
-
-1998-07-07  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (insert-block): renamed as yank-block; now sets
-	yank-last-item so that yank-next works as would be expected
-	(yank-get-string): removed NOT-BLOCK parameter; under X11 only
-	returns the selection if it's not owned by us (so no yanking
-	unkilled blocks anymore)
-	(yank, yank-rectangle): removed DONT-YANK-BLOCK arg
-	(yank-next): should work correctly when yank-last-item is nil
-	* loadkeys.jl: bound RMB-Click1 to copy-block-as-kill
-
-	* edit.jl (paragraph-start): new variable, finer control over
-	paragraph definition
-	(forward-paragraph): use paragraph start
-	* c-mode.jl, lisp-mode.jl, perl-mode.jl, sh-mode.jl,
-	tex-mode.jl, texinfo-mode.jl: set paragraph-start and
-	paragraph-separate to sensible values
-
-	* dired.jl (dired-directory-files): new variable, defines how
-	the list of files is created
-	(dired): new optional arg, the value of the above variable
-
-1998-07-06  John Harper  <john dcs warwick ac uk>
-
-	* modes.jl (auto-mode-alist): added sh-mode entries
-
-1998-07-04  John Harper  <john dcs warwick ac uk>
-
-	* disassembler.jl (disassemble): fixed for bytecode objects
-	that have less than six elements
-
-	* modes.jl (mode-comment-header): new variable. Provides a
-	simple method of defining how one-line comments are introduced
-	in a file
-	* asm-mode.jl, lisp-mode.jl, texinfo-mode.jl, tex-mode.jl: use
-	mode-comment-header
-
-	* cvs.jl: add autoload tags for most commands
-
-	* rcs.jl (rcs-mode): replaces both the rcs-controlled-buffer
-	and rcs-current-info variables in one fell swoop
-
-	* perl-mode.jl: new file. Inherits a lot of code (and the
-	related problems?) from c-mode
-	* c-mode.jl: recognize $ and @ characters in symbols to help
-	perl-mode, improve comment handling
-	* modes.jl (auto-mode-alist, interpreter-mode-alist): added
-	regexps for perl-mode
-
-	* compile.jl (compile-push-directory-regexp,
-	compile-push-directory-expand): make this work properly (match
-	the `make[X]:' at the start of the line, not just `make:')
-
-	* help.jl, find-autoloads.jl, dump.jl, compiler.jl: change
-	miscellaneous `X-dir' variables to `X-directory' (jade-dir,
-	lisp-lib-dir, ..)
-
-1998-07-01  John Harper  <john dcs warwick ac uk>
-
-	* modes.jl (defun-at-point): check for null mode-defun-header
-
-	* add-log.jl (change-log-date-format,
-	change-log-date-match-format): new variables, controls how the
-	dates in ChangeLog separators are constructed and compared
-
-Mon Jun 29 09:55:55 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl (cvs-add-change-log-entries): new function, adds
-	empty change log entries for all selected files
-
-	* add-log.jl (add-change-log-entry): added two optional args
-	FILE-LIST and FUNCTION-LIST. These define the header of the
-	inserted entry. When called interactively they default to the
-	basename of the current file, and the name of the current
-	function definition
-
-Thu Jun 25 00:50:35 1998  John Harper  <john dcs warwick ac uk>
-
-	* loadkeys.jl: use find-matching-bracket as a command, not
-	called as a function
-
-	* help.jl (apropos-output): new function, used by
-	apropos-function and apropos-variable to format the list of
-	symbols and their documentation
-
-Mon Jun 22 09:22:53 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-add-mailbox, rm-subtract-mailbox,
-	rm-replace-all-mailboxes): check for null mailbox argument
-	(rm-append-save-and-delete-file): new function
-	(rm-append-inbox): cleaned up. Also will append .newmail-FOO
-	files that it finds lying around from previous attempts
-
-	* rm-thread.jl (rm-thread-folder, rm-sort-folder): handle case
-	of an empty folder without signalling an error, just do very
-	little
-
-	* mail-headers.jl (mail-parse-date): correctly handle two-digit
-	years again
-
-Sun Jun 21 01:17:47 1998  John Harper  <john dcs warwick ac uk>
-
-	* find-url.jl (find-url-ftp): implemented by rewriting the url
-	as a remote filename, then calling find-file
-	(find-mailto-url): renamed as find-url-mailto for consistency
-	(find-url-external-command): redirect all standard streams to
-	/dev/null to allow the shell process to exit cleanly
-
-	* sh-mode.jl (sh-indent-line): act on "else" and "elif" tokens
-
-	* gzip.jl (auto-compression-alist, auto-compression-mode):
-	generalised this code, also allow it to be explicitly enabled
-	and disabled
-
-	* info.jl: minor changes for modified gzip.jl
-
-Sat Jun 20 16:15:41 1998  John Harper  <john dcs warwick ac uk>
-
-	* rm-restrict.jl (rm-apply-rule): new function, allows a rule
-	to be applied to a single specified message
-
-	* rm-thread.jl (rm-sort-folder): allow sort keys to specify
-	order of sorting. Misc. other fixes
-	* read-mail.jl (rm-install-messages): if a sort key is defined
-	for the folder, use it
-
-	* rm-output.jl (rm-auto-archive-alist, rm-auto-archive-folder,
-	rm-archive-folder): support for saving messages by matching
-	rules, both interactively, and pre-defined
-	* read-mail.jl, rm-summary.jl: bind "a" to rm-archive-folder
-	and "A" to rm-auto-archive-folder. Change binding of
-	rm-sort-folder to "G"
-
-Fri Jun 19 16:51:54 1998  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl (remote-ftp-output-filter): only display hash
-	characters when remote-ftp-display-progress is t
-
-Wed Jun 17 17:11:10 1998  John Harper  <john dcs warwick ac uk>
-
-	* isearch.jl (isearch-push-match): small fix
-
-Tue Jun 16 12:02:50 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (save-file-as, insert-file): change messages
-	slightly
-
-Sun Jun 14 11:58:46 1998  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl (remote-ftp-bad-msgs): added invalid command
-	message
-	(remote-ftp-invalidate-directory): wholesale invalidation of
-	the directory cache. Called by most commands
-
-	* remote-ftp.jl (remote-ftp-ls-format): new variable
-
-	* remote.jl (remote-file-regexp): only allow sensible
-	characters in user and host names
-
-	* remote-ftp.jl (remote-ftp-host-user-alist): map host names to
-	default users
-	(remote-ftp-default-user): username to use when unspecified
-	(remote-ftp-get-user): new function
-	(remote-ftp-output-filter): display raw hash marks
-	(remote-ftp-get-file-details): use `ls -la' not `dir'
-
-	* remote-ftp.jl: fix remote file copying
-
-Sat Jun 13 11:10:50 1998  John Harper  <john dcs warwick ac uk>
-
-	* remote-ftp.jl (remote-ftp-passwd-alist,
-	remote-ftp-get-passwd, remote-ftp-add-passwd): password caching
-	(remote-ftp-bad-msgs): attempt to differentiate between success
-	and soft-failures
-	(remote-ftp-chmod): attempts to use the `chmod' command
-	(remote-ftp-file-modes): parse mode string to permission bits
-	(remote-ftp-display-progress): when t, use hash marks
-	(remote-ftp-transfer-type): allow binary or ascii transfers;
-	should allow this to be set by file extension
-
-Fri Jun 12 17:34:16 1998  John Harper  <john dcs warwick ac uk>
-
-	* prompt.jl (prompt-next-history, prompt-previous-history):
-	check for (null prompt-history)
-
-	* pwd-prompt.jl (pwd-prompt): bind prompt-history to nil to
-	prevent passwords being stored
-
-	* remote-ftp.jl (remote-ftp-max-sessions,
-	remote-ftp-anon-users, remote-ftp-anon-passwd): new variables
-
-	* remote-ftp.jl: new file, an FTP backend for accessing remote
-	files; seems to work quite well
-
-	* remote-rcp.jl: new file, split from remote.jl. Doesn't work
-	very well
-
-	* mail-headers.jl (mail-parse-date): made a lot more agreeable
-	in what it will parse
-
-	* debug.jl (debug-error-entry): always print backtrace
-
-Wed Jun 10 08:49:52 1998  John Harper  <john dcs warwick ac uk>
-
-	* isearch.jl: many changes. Now uses the minibuffer, highlights
-	the current match, and doesn't use a recursive edit
-
-	* remote.jl: initial attempt at providing remote file access.
-	Currently just a framework and a pathetic example of using rcp
-	to implement a backend
-
-	* cvs.jl (cvs-buffer, cvs-output-buffer): deleted, now we
-	create buffers as required
-	(cvs-buffer, cvs-output-buffer): new functions, find or create
-	the two buffers used by cvs-mode
-	(cvs-default-directory): working directory, needed since there
-	may or may not be a *cvs* buffer
-
-	* shell.jl (shell-mode-kill): uses kill-all-local-variables to
-	clean up after itself
-
-	* gdb.jl: install our own callback function that does some
-	cleanup at process exit. Allows *gdb* to be reclaimed. Also set
-	buffer-status-id to a meaningful string
-
-	* buffers.jl (default-directory): set its permanent-local
-	property
-
-	* rm-misc.jl (rm-forward): fix post-send actions
-
-Mon Jun  8 09:50:29 1998  John Harper  <john dcs warwick ac uk>
-
-	* fill.jl (fill-area): another attempt at fixing this function,
-	I think I may have it now
-
-	* print.jl (print-build-shell-command): ensure that a local
-	file name is used when printing to a file
-
-	* edit.jl (yank-next): initially insert the second most
-	recently yanked item, not the first
-
-	* loadkeys.jl (numeric-arg, negative-arg, universal-arg):
-	progagate the last-command variable
-
-	* c-mode.jl (c-mode): adjust mode-defun-header slightly
-
-	* help.jl: deleted the help-buffer variable, find and
-	initialise the buffer dynamically to help gc
-
-	* buffers.jl (kill-current-buffer): new function
-
-	* mail-dir-summary.jl (mds-alias-buffer, mds-address-buffer):
-	deleted these variables; allow the buffers to be gc'd
-
-	* prompt.jl (y-or-n-p): use the original value of keymap-path
-	plus the special bindings
-
-	* buffers.jl (rename-buffer): new command
-
-Sun Jun  7 14:57:12 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (mouse-select-drag): preserve type of block when
-	dragging status lines
-
-	* compiler.jl: added source transform to handle setq-default
-	special form
-
-	* modes.jl (mode-symbol-regexp, mode-defun-header,
-	mode-defun-footer): new buffer-local variables
-	(forward-exp, backward-exp): don't call goto explicitly, use
-	the `@' interactive flag
-	(symbol-at-point, defun-at-point): new functions, give the
-	current symbol or function-name respectively
-	(start-of-defun, end-of-defun, mark-defun): new functions
-	* loadkeys.jl: C-M-a to start-of-defun, C-M-e to end-of-defun,
-	C-M-h to mark-defun
-	* c-mode.jl, lisp-mode.jl: define the new variables
-
-	* windows.jl (expand-view): fixed
-
-	* help.jl (describe-function, describe-variable): use the value
-	from symbol-at-point as the starting value of the prompt
-
-	* prompt.jl (prompt-for-symbol, prompt-for-lisp,
-	prompt-for-function, prompt-for-variable, prompt-for-command):
-	all now take an extra optional argument, the initial contents
-	of the prompt
-
-	* tilde.jl: use setq-default when fixing default-directory
-
-Sat Jun  6 16:11:57 1998  John Harper  <john dcs warwick ac uk>
-
-	* windows.jl (goto-next-view): next-view now returns inactive
-	minibuffer views, so check for this
-	(scroll-next-view): use other-view instead of next-view, should
-	really be called scroll-other-view
-	(enlarge-view): allow minibuffer views to be sized, now the
-	bottom _two_ views resize into the view above them
-
-	* edit.jl (mouse-pos): add a check with posp
-	(goto-mouse): return nil or t a la translate-pos-to-view
-	(mouse-select): handle selecting a status line
-	(mouse-select-drag): allow dragging status line to resize views
-
-Fri Jun  5 10:21:32 1998  John Harper  <john dcs warwick ac uk>
-
-	* rm-restrict.jl (rm-rule-symbol): made into a macro
-
-	* compiler.jl (compile-file): ensure that the output file ends
-	in .jlc; expand all top level uses of macros. Also change how
-	eval-when-compile works (a default macro definition for it)
-
-	* rm-restrict.jl (defrule): now fully expands the rule. This
-	allows files of defrule forms to be compiled down to bytecode
-	(rm-defrule): renamed as define-rule
-
-	* disassembler.jl (disassemble): fix disassembly of nested
-	bytecode objects
-
-	* info.jl: deleted the info-buffer variable, all state is now
-	local to the *Info* buffer. This allows multiple info sessions
-	to run concurrently, and for all buffers to be gc'd (the info
-	function with a prefix arg creates a new info buffer)
-
-	* compile.jl (compile-buffer): deleted this global variable,
-	allows *compilation* buffers to be garbage collected
-
-Thu Jun  4 14:53:30 1998  John Harper  <john dcs warwick ac uk>
-
-	* prompt.jl (prompt-complete): pass prompt-list-fold-case along
-	to complete-string
-
-	* buffers.jl, bytecodes.jl, compiler.jl, disassembler.jl,
-	environ.jl, keymap.jl, lisp-mode.jl, lisp.jl, prompt.jl,
-	server.jl, tags.jl: excise all traces of the return function
-	and the OP_RETURN instruction
-
-	* sh-mode.jl: new major mode, for bourne shell files
-
-	* modes.jl (interpreter-mode-regexp, interpreter-mode-alist,
-	normal-mode): choose modes by #! string
-
-	* cvs.jl (cvs-find-file, cvs-find-file-other-view): now handle
-	more than one selected file
-
-Wed Jun  3 09:19:34 1998  John Harper  <john dcs warwick ac uk>
-
-	* modes.jl (normal-mode): given an interactive decl
-
-	* rm-summary.jl (rm-summary-print-item): reference
-	rm-summary-format in the message's buffer
-
-	* read-mail.jl: more minor fixes
-
-Tue Jun  2 09:06:16 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl, rm-misc.jl, rm-output.jl, rm-summary.jl,
-	rm-thread.jl: more assorted fixes and enhancements
-
-	* lisp.jl (assoc-regexp): abstracted from get-auto-mode, a
-	function to associate with regexps
-
-	* init.jl: -no-rc option to prevent loading of .jaderc and
-	site-init files
-	* Makefile.in: use -no-rc option
-
-	* rm-mail-dir.jl: use new hook name
-
-Mon Jun  1 11:26:39 1998  John Harper  <john dcs warwick ac uk>
-
-	* mail-headers.jl (mail-parse-address): some reorganisation to
-	allow parsing of address without domains
-	(mail-format-address): allow nil NAME
-	(mail-insert-address-list): new function
-
-	* rm-misc.jl (rm-reply): use message's header cache where
-	possible
-
-	* rm-restrict.jl (rm-rule:attribute): quote the symbol argument
-
-	* read-mail.jl (rm-append-inbox, rm-rebuild-folder): fixed
-
-	* read-mail.jl (rm-open-mailbox, rm-close-mailbox,
-	rm-subtract-mailbox, rm-subtract-all-mailboxes): new functions.
-	Also lots of other fixes, it seems to work quite well now
-
-	* rm-mail-dir.jl: don't bind to `+' anymore (used to add a
-	mailbox), instead use `Ctrl-k'
-
-	* rm-restrict.jl (subject): new rule. Also some fixes
-
-	* rm-summary.jl (rm-summary-view): fixed to _always_ return a
-	view or a buffer
-
-	* rm-thread.jl: fix the `date' sort key
-
-	* read-mail.jl (rm-open-mailboxes): list of buffers, this stops
-	buffers being gc'd while they're still in use (references to
-	buffers are by marks, which are `weak' references)
-
-	* rm-restrict.jl: minor changes, renamed rule functions from
-	`rm-rule-X' to `rm-rule:X', added a `(body REGEXP)' rule to
-	search the body of the message
-
-Sun May 31 12:06:02 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl: more work. pretty much works. getting new mail
-	doesn't though..
-	* rm-misc.jl, rm-output.jl, rm-summary.jl, rm-thread.jl:
-	updated for new read-mail. Mostly untested
-
-	* rm-restrict.jl: allow rules to be defined interactively
-
-	* prompt.jl (prompt-validate-symbol): fixed
-
-	* lisp.jl (identity): new function
-
-	* read-mail.jl: massive changes, there is now a layer between
-	mailbox files and messages: folders. Each folder can contain
-	multiple mailboxes and be restricted to only contain messages
-	meeting a specified restriction rule
-
-	* rm-summary.jl (rm-with-folder, rm-in-folder): moved here from
-	read-mail.jl. All rm-X.jl files need updating for the new
-	read-mail
-
-Sat May 30 12:28:09 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (find-file-read-only): added DONT-ACTIVATE option,
-	like find-file has
-
-	* rm-restrict.jl (rm-filter-by-rule): function to apply a rule
-
-Fri May 29 15:17:38 1998  John Harper  <john dcs warwick ac uk>
-
-	* html-style.jl (html-style-default, html-style-current,
-	html-style-alist, html-style-set-style, html-style-add-style):
-	support for multiple styles
-
-Thu May 28 18:02:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* mail-headers.jl (mail-timezone-alist): moved to maildefs.jl
-	* maildefs.jl (mail-month-alist): added full names, as well as
-	abbreviations
-
-	* rm-restrict.jl (rm-parse-date, rm-rule-sent-date): support
-	for relative dates (i.e. "2 days ago" and so on)
-
-Tue May 26 13:15:11 1998  John Harper  <john dcs warwick ac uk>
-
-	* rm-restrict.jl: new file, rule-based message selection
-
-	* mail-headers.jl (mail-parse-date): initialise values to
-	sensible defaults
-
-	* mail-headers.jl (mail-parse-date): fix epoch-time calculation
-
-Mon May 25 17:12:39 1998  John Harper  <john dcs warwick ac uk>
-
-	* rm-output.jl (rm-output-message): call 'rm-after-import-hook
-
-	* rm-thread.jl (rm-auto-thread-new-messages): new variable
-
-	* lisp.jl (if, and, or): deleted, they're now special forms
-	* compiler.jl (if, and, or): source code transformations to
-	compile these special forms
-
-	* compiler.jl, lisp.jl: support for eval-when-compile
-	construct, though I'm not sure if it has the correct semantics
-	at anything but the top-level?
-
-	* read-mail.jl, rm-summary.jl: removed all of the mail summary
-	code to rm-summary.jl. read-mail.jl still has a few calls to it
-	though (but only if a summary exists). Deletion marks are now
-	stored along with all the other message attributes
-	* rm-misc.jl, rm-output.jl, rm-mail-dir.jl: minor updates to
-	work with separate summary
-
-	* rm-thread.jl (rm-inter-thread-sort-key,
-	rm-intra-thread-sort-key): control over how threads are sorted
-
-	* compiler.jl (comp-compile-top-form): when compiling defvars,
-	if the value is a list but not a constant, compile it to
-	bytecode
-
-	* mail-headers.jl (mail-parse-date): resolve timezone
-	specifications to the difference in minutes they specify
-	(currently I've ignored the single letter `military' zones).
-	Also calculate the time since the epoch (actually create
-	(DAYS . SECONDS) to avoid overflow)
-	(mail-get-actual-subject); function to strip re: prefixes from
-	a subject string
-
-	* maildefs.jl (mail-re-regexp): regexp defining how we strip
-	re: prefixes, moved from rm-misc.jl
-
-	* read-mail.jl (rm-keymap, rm-summary-keymap): bind Ctrl-s to
-	sort the folder, and Ctrl-t to toggle threading
-	(rm-get-actual-subject): new function
-	(rm-invalidate-summary-cache): new function
-
-	* rm-misc.jl (rm-Re-regexp): moved to maildefs.jl
-	(rm-reply): use mail-get-actual-subject
-
-	* rm-thread.jl (rm-thread-using-subject): new variable, when t
-	use subjects to group messages as well as id's
-	(rm-sort-predicates): alist of (KEY . PREDICATE) for sorting
-	folder order
-	(rm-threaded-folder): new variable, t when folder is threaded
-	(rm-thread-folder): misc. fixes, use subjects, sort thread
-	lists, use rm-fix-msg-lists
-	(rm-fix-msg-lists): function to install a list of messages
-	preserving the current message
-	(rm-toggle-threading): new command, toggles between threaded
-	and sorted by location display
-	(rm-sort-folder): new command, sorts display order by key
-
-Sun May 24 13:18:54 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-move-forwards, rm-move-backwards): changed
-	from macros to functions; also they reuse all cons cells
-
-	* rm-thread.jl: initial attempt at message threading, needs a
-	lot of work
-
-	* read-mail.jl (rm-get-message-id, rm-get-in-reply-to,
-	rm-get-references): new functions to use the header cache
-
-	* help.jl (substitute-command-keys): new function, replace
-	strings in mode documentation with keymap descriptions. Mostly
-	compatible with Emacs method of doing this
-	(describe-mode): pass the doc string through the
-	substitute-command-keys function
-
-	* modes.jl (mode-alist): renamed as auto-mode-alist
-	(default-major-mode): new variable, defines the major mode of
-	buffers that otherwise wouldn't have one
-	(get-mode): renamed get-auto-mode
-	(init-mode): renamed normal-mode, simplified the semantics
-
-	* asm-mode.jl, buffer-menu.jl, buffer-summary.jl, c-mode.jl,
-	cvs.jl, debug.jl, dired.jl, gdb.jl, info.jl, lisp-mode.jl,
-	read-mail.jl, send-mail.jl, shell.jl, tex-mode.jl,
-	texinfo-mode.jl, text-mode.jl: rewrote major mode documentation
-	to include keymap formatting directives
-
-	* keymap.jl (map-keymap-recursively): variable controlling
-	whether map-keymap notices sub-keymaps (t by default)
-	(substitute-key-definition): new command, change key bindings
-	to a particular command so that they invoke a different command
-
-Sat May 23 11:30:19 1998  John Harper  <john dcs warwick ac uk>
-
-	* asm-mode.jl, buffer-menu.jl, buffer-summary.jl, c-mode.jl,
-	compile.jl, cvs.jl, debug.jl, dired.jl, fill.jl, gdb.jl,
-	help.jl, info.jl, isearch.jl, keymap.jl, lisp-mode.jl,
-	loadkeys.jl, mail-dir-summary.jl, prompt.jl, rcs.jl,
-	read-mail.jl, replace.jl, send-mail.jl, shell.jl, summary.jl,
-	telnet.jl, tex-mode.jl, texinfo-mode.jl, text-mode.jl: use new
-	names of make-keytab and make-keylist (make-keymap and
-	make-sparse-keymap). Also use new method for inheriting
-	bindings
-
-	* keymap.jl: updated for new key binding structure (uses cons
-	cells instead of a vector)
-
-Fri May 22 10:15:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl, dired.jl, gdb.jl, help.jl, isearch.jl, keymap.jl,
-	loadkeys.jl, rcs.jl, send-mail.jl, tex-mode.jl,
-	texinfo-mode.jl: altered uses of next-keymap-path to take
-	account that it's now a function not a variable
-
-	* keymap.jl (map-keymap): new function, allows a function to be
-	mapped (recursively) over all existing key bindings
-	(print-keymap): defined in terms of map-keymap
-	(where-is): new command, searches the key binding hierarchy for
-	a specified command (using map-keymap)
-	* help.jl: bind where-is to `Ctrl-h w'
-
-	* c-mode.jl: lots of minor fixes, hopefully correcting a lot of
-	mis-indentation; some problems still exist
-
-Wed May 20 17:34:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffer-summary.jl: removed bs-buffer variable, now find or
-	create *buffers* buffer dynamically. This helps garbage
-	collection
-
-Sun May 17 19:51:41 1998  John Harper  <john dcs warwick ac uk>
-
-	* rm-misc.jl (rm-forward): new method of deleting trailing
-	blank lines, this one seems to work
-
-	* send-mail.jl (send-mail-show-output): new variable, when t
-	output from sendmail is always displayed. Replaces
-	sendmail-debug
-
-Sat May 16 23:39:14 1998  John Harper  <john dcs warwick ac uk>
-
-	* mail-dir.jl (mail-dir-auto-expand-aliases): deleted; the user
-	has to put the function in the mail-send-hook manually now
-	(add-mail-alias, add-mail-address): protect against adding null
-	addresses
-
-	* mail-headers.jl (mail-insert-list): be more intelligent when
-	finding the depth to indent continuation lines to--either the
-	column following the name of the header, or the current
-	indentation if inserting in a continuation line
-
-	* sm-mail-dir.jl: bind `Ctrl-c Ctrl-x' to expand any mail
-	aliases in the message's headers (in send-mail mode)
-	(sm-mail-dir-expand-aliases): this now seems to work, and is
-	called expand-mail-aliases. It's not added to mail-send-hook,
-	but is suitable for use in this hook. Given an interactive
-	decl. so can now be called as a command
-
-	* edit.jl (save-restriction): when restoring the original
-	restriction, unrestrict the buffer if there was no original
-	restriction or it's now invalid
-
-Fri May  8 13:03:43 1998  John Harper  <john dcs warwick ac uk>
-
-	* windows.jl (other-view): only enlarge an existing view when
-	the desired size is less than its current size
-
-	* cvs.jl (cvs-show-output-buffer): only call shrink-view-if-..
-	when the real current buffer isn't the *cvs* buffer to avoid an
-	annoying effect
-
-Wed May  6 16:23:46 1998  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl, rcs-hooks.jl, dired.jl, dired-hooks.jl: use autoload
-	mechanism to load -hooks files, rcs-mode also autoloads its
-	main keymap
-
-	* cvs.jl (cvs-keymap): now autoloaded
-
-	* lisp.jl (autoload-variable): new function
-	* find-autoloads.jl: ignores defmacro, but understands defvar
-
-Tue May  5 10:28:10 1998  John Harper  <john dcs warwick ac uk>
-
-	* html-style.jl (html-style-header): optional NO-HEADING arg
-	suppresses the initial heading
-
-	* cvs.jl (cvs-option-alist): remove default options, should be
-	up to the user
-
-	* cvs.jl (cvs-update-file-list): split the completion function
-	out into cvs-update-finished, this function takes a single
-	argument, the _value_ of the hook to call. This is required
-	due to the asynchronicity in relation to the caller of
-	cvs-update..
-
-Mon May  4 12:12:22 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl (cvs-update-file-list): call cvs-after-update-hook on
-	completion
-	(cvs-undo-modification): ensure that buffers aren't reloaded
-	until _after_ the update has completed
-
-	* info.jl: use the buffer-status-id to display the current node
-	name, not the mode-name
-
-Sun May  3 12:22:27 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-next-page, rm-previous-page): detect top and
-	bottom of buffer properly, not just when the cursor is at the
-	top or the bottom
-
-	* buffer-summary.jl: use the standard read-only/modified
-	symbols (as in the status line). Removed the `-' synonym for
-	the `%' command
-
-	* init.jl, compiler.jl: don't use version-and-build-string
-	anymore, but use build-id-string instead
-
-Thu Apr 30 10:43:36 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffer-summary.jl (bs-print-item): substitute `Fundamental'
-	for `Generic'
-
-	* help.jl (lisp-documentation-file): name of the file
-	containing the Lisp library's documentation strings
-	(add-documentation, get-documentation): use the
-	lisp-documentation-file for Lisp documentation
-
-	* dired.jl (dired-do-copy, dired-do-rename): new commands
-
-	* summary.jl (summary-update, summary-update-item): mark the
-	buffer as unmodified before calling the after-update vector
-	(summary-command-items): new function, copied from part of
-	cvs-command-get-files. This returns a list of items for a
-	command to manipulate in some way
-	* cvs.jl (cvs-command-get-files): call summary-command-items
-
-	* cvs.jl (cvs-option-alist): added -v option to status
-	(cvs-keymap): bindings of `t' and `T'
-	(cvs-tag, cvs-tag-directory): new commands
-
-Wed Apr 29 09:39:40 1998  John Harper  <john dcs warwick ac uk>
-
-	* maildefs.jl (mail-summary-lines): renamed as
-	mail-summary-percent, now defines the percentage of the window,
-	not the number of lines
-	* read-mail.jl (rm-configure-views): changed for above switch
-
-	* read-mail.jl (rm-summary-format-alist): new conversions `b',
-	`n' and `N'.
-	(rm-status-format): format string for part of status line
-	(read-mail-folder): don't expand folder name so much
-	(rm-fix-status-info): cache status line formatted text
-	(rm-invalidate-status-cache): for above
-
-	* info.jl (info-read-dir): use insert-file instead of
-	read-file-into-buffer. This doesn't set the buffer's file-name.
-	Also set the file-name to nil, and the buffer as unmodified.
-	(info-prompt): rename list-fun to info-list-fun since it's a
-	dynamic variable
-	(info-list-menu-items): search from the restriction start, not
-	the cursor position
-
-Tue Apr 28 16:05:44 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl: use the new buffer-status-id variable to
-	display current message number with the buffer name
-
-	* cvs.jl (cvs-undo-modification): use cvs-revert-filenames
-	instead of doing it inline
-
-Mon Apr 27 10:21:09 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (buffer-file-modtime): has permanent-local
-	property
-
-	* cvs.jl (cvs-commit-callback, cvs-revert-filenames): files
-	should revert after being committed now
-
-Sun Apr 26 13:39:17 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl: call (window-list), instead of variable
-	window-list
-	* loadkeys.jl, loadmenus.jl, server.jl: use make- and
-	delete-window instead of open- and close-window
-	* windows.jl (window-list, window-closed-hook, open-window,
-	open-window-on-display, close-window): deleted
-
-	* buffers.jl (mildly-special-buffer): deleted this variable
-	(kill-buffer): don't destroy-buffer, just remove it from all
-	buffer-list's. Moved remove-buffer into this function
-	(bury-buffer): use mapc, and fixed to handle views as well as
-	windows
-	(add-buffer): moved here from windows.jl
-	(rotate-buffers-forward, rotate-buffers-backward): deleted
-	(find-file): check if the file being opened has changed, if
-	it's already buffered
-	(check-changes, save-some-buffers): don't look for
-	special-ness, but whether the buffer has no file-name
-	* windows.jl (add-buffer, remove-buffer): deleted
-	* loadkeys.jl: remove references to rotate-buffers-forward and
-	rotate-buffer-backward 
-
-	* modes.jl (kill-mode): renamed as fundamental-mode, since this
-	is what it really does, given an interactive decl
-
-	* compile.jl (compile-parse-errors): fix line numbers being out
-	by one
-
-	* buffer-menu.jl, compile.jl, compiler.jl, cvs.jl, debug.jl,
-	disassembler.jl, gdb.jl, help.jl, info.jl, init.jl, keymap.jl,
-	miranda.jl, prompt.jl, rcs.jl, read-mail.jl, send-mail.jl,
-	shell.jl, summary.jl, telnet.jl: various fixes for loss of
-	buffer-special functions, etc.
-
-	* buffers.jl (open-buffer): always call add-buffer, not just
-	when having to create the buffer
-
-	* windows.jl (add-buffer, remove-buffer): rewritten using mapc
-	instead of iteration. add-buffer won't add the buffer if it's
-	already in the view's list
-
-	* cvs.jl (cvs-buffer): variable pointing to the summary buffer
-	(cvs-update-file-list): install a temporary minor mode whilst
-	updating (the mode's called cvs-update)
-	(cvs-buffer-p): macro to test if the current buffer is the
-	summary buffer
-	(cvs-summary-select-other-view): fixed
-
-Sat Apr 25 14:38:38 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl (cvs-command): handle the `*cvs*' buffer not existing
-
-Fri Apr 24 14:02:50 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl: support for calling CVS commands asychronously,
-	currently, cvs-update, cvs-log, cvs-status,
-	cvs-commit-callback and cvs-diff-cvs take advantage of this
-
-Thu Apr 23 12:02:57 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl (cvs-summary-clean): implemented this command
-
-Wed Apr 22 17:22:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* windows.jl (open-view, close-view): deleted, replaced by
-	split-view and delete-view in views.c
-	(close-other-views): renamed delete-other-views
-	* buffer-menu.jl, buffer-summary.jl, loadkeys.jl, prompt.jl,
-	read-mail.jl: replace open-view by split-view, and close-view
-	by delete-view, etc
-
-Tue Apr 21 11:48:59 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl (cvs-diff-backup, cvs-undo-modification): implemented
-	these commands
-
-	* compile.jl (compile-parse-errors, next-error): rewrote most
-	of these functions. Now tracks changes of directory while
-	compiling (see compile-{push,pop}-directory-regexp variables,
-	by default set up for GNU make)
-
-	* cvs.jl (cvs-command): use (message ... t) instead of (format
-	t ...) to display calling CVS message
-
-Mon Apr 20 00:20:06 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl (cvs-commit-directory): new command, bound to `C'
-
-	* cvs.jl (cvs-summary-mode): defined this function to provide
-	the mode's documentation
-	(cvs-command-get-files): in the summary buffer, when no files
-	are marked, select prefix-arg files, not just one
-
-	* find-url.jl (find-url-alist): deleted the http: method since
-	it's covered by the default action
-
-Sun Apr 19 15:30:07 1998  John Harper  <john dcs warwick ac uk>
-
-	* cvs.jl, autoload.jl: a rudimentary CVS mode, inspired by
-	pcl-cvs.el. Most important shortcoming is lack of control over
-	which revisions are manipulated
-
-	* dired.jl, summary.jl (dired-mark-if): moved from dired.jl to
-	summary.jl, and renamed as summary-mark-if
-
-Sat Apr 18 00:19:49 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (revert-buffer): attempt to leave the cursor in
-	its original position (by saving the surrounding lines, then
-	searching for them). Also added a new optional argument, FORCE,
-	which prevents confirmation from the user being asked for
-
-	* rcs.jl (rcs-command): when REREAD-BUFFER is t, use
-	revert-buffer to achieve this
-
-	* Makefile.in: use JADELISPLIB and JADEDOCFILE to allow proper
-	compilation of Lisp files before they've been installed
-
-Fri Apr 17 14:18:22 1998  John Harper  <john dcs warwick ac uk>
-
-	* tilde.jl (tilde-file-handler): handle the expand-file-name
-	operation separately now, simplify the stuff after the tilde
-	expression
-
-Wed Apr  8 11:59:44 1998  John Harper  <john dcs warwick ac uk>
-
-	* pwd-prompt.jl (pwd-prompt): use unwind-protect to ensure that
-	the old glyph table is re-established
-
-	* telnet.jl (telnet-grab-passwords): variable controlling
-	whether to scan for password prompts, and if so, for how long
-	after the start of the session
-	(rlogin-program): new variable
-	(telnet): new optional arg, USE-RLOGIN
-	(rlogin): new command
-	(telnet-filter): don't try to be clever when telnet-echos is
-	non-nil
-	(telnet-send-line): when telnet-echos is non-nil, delete input
-	immediately after it's sent
-
-Tue Apr  7 10:20:02 1998  John Harper  <john dcs warwick ac uk>
-
-	* telnet.jl (telnet): specifying a port number now works
-
-	* telnet.jl (telnet): spawns a telnet session in a buffer
-
-	* pwd-prompt.jl (pwd-prompt): prompts for a string
-	confidentially. Does this by hacking (literally) prompt.jl to
-	use a special glyph table
-
-	* find-url.jl (find-url-telnet, find-url-mailto): new functions
-
-	* compiler.jl (compile-file): slightly modified comment
-	prefixed to compiled files
-
-	* loadkeys.c: bound "Ctrl-x Ctrl-Meta-f" to find-url
-
-	* shell.jl (shell-command-on-area): don't popup *shell-output*
-	buffer if it's totally empty
-
-	* find-url.jl (find-url): new file, new command, it allows urls
-	to be followed. By default, http urls are redirected to
-	netscape, and file ones are loaded into the editor. ftp and
-	telnet (and others?) are still to be implemented
-
-Sun Apr  5 20:13:42 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (save-some-buffers): print a message if no
-	modified buffers exist on entry
-
-	* compiler.jl (comp-get-lambda-vars): made into a macro; now
-	uses filter instead of a combination of mapcar and delq
-
-	* compiler.jl (comp-compile-funcall): open code constant lambda
-	expressions; this isn't going to be useful with existing code,
-	but it might be in the future (and it's painless..)
-
-Sat Apr  4 19:39:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* file-subst.jl: provide file-subst
-	* html-style.jl: require file-subst
-
-	* edit.jl (mouse-select-drag-block, mouse-select-drag-rect):
-	new functions, calling mouse-select-drag, but not until they've
-	set or cleared the rect-blocks flag
-	* loadkeys.jl: bound Ctrl-Mouse events to mark rectangles
-
-Fri Apr  3 12:38:54 1998  John Harper  <john dcs warwick ac uk>
-
-	* fill.jl (fill-area): hopefully fixed the bug erroneously
-	leaving single words on the last line of the buffer
-
-Thu Apr  2 10:28:19 1998  John Harper  <john dcs warwick ac uk>
-
-	* rm-misc.jl (rm-forward): fix deletion of trailing blank lines
-
-Wed Apr  1 00:47:04 1998  John Harper  <john dcs warwick ac uk>
-
-	* html-style.jl: simplified the default style a lot
-
-	* compiler.jl (comp-compile-mapc): for mapc calls whose
-	function argument is a constant lambda expression, do the
-	looping in byte code and open-code the function call. All other
-	mapc calls use the mapc opcode as before
-
-	* html-style.jl: new file, code to work with file-subst.jl to
-	create web pages to a common style
-
-Tue Mar 31 00:42:31 1998  John Harper  <john dcs warwick ac uk>
-
-	* tilde.jl: new file; a file-handler to expand a tilde (~) at
-	the start of a file name. Understands both ~/ and ~USER/
-
-	* shell.jl: fix TERMCAP entry
-
-	* read-mail.jl, rm-misc.jl, rm-output.jl: more fixes to
-	ensuring correct separation between messages
-
-	* loadmenus.jl: change for new operating-system variable; I
-	don't know why I keep this file...
-
-	* lisp.jl (file-name=): no longer a primitive, this now works
-	by comparing canonical file names
-
-	* init.jl: minor changes to order of loadup; also catch all
-	errors when executing site-local and user config files
-
-	* info.jl (info-find-node): fixed some bugs
-
-	* help.jl (get-documentation, add-documentation): new
-	functions, these replace the old get-doc-string and
-	add-doc-string primitives
-
-	* file-subst.jl: new file, provides a method of generating
-	arbitrary text files from input templates. Allows the full
-	expressiveness of Lisp to be used in expansions. I use this to
-	build all my web pages using the same style
-
-	* environ.jl (getenv, setenv): new file, these functions used
-	to be primitives, now they use the process-environment variable
-
-	* edit.jl: use (eq window-system 'x11) to test for X
-
-	* dired.jl: added `% d' and `% m' commands. Also cleaned up
-	some code. Needs more commands
-
-	* compiler.jl: support for comp-transform property in
-	functions, basically a method for specifying a source code
-	transformation (i.e. macro) to compile the form
-
-	* buffer-summary.jl (bs-print-item): handle oversized fields
-	more elegantly
-
-	* add-log.jl, buffers.jl, compile.jl, compiler.jl, dired.jl,
-	dump.jl, find-autoloads.jl, gdb.jl, gzip.jl, info.jl,
-	mail-dir.jl, maildefs.jl, miranda.jl, print.jl, prompt.jl,
-	rcs-hooks.jl, rcs.jl, read-mail.jl, rm-output.jl, send-mail.jl,
-	shell.jl, tags.jl: changes for new file handling (mainly to
-	support file names relative to the current buffer; includes
-	replacing uses of the file-name-concat function by
-	expand-file-name, and ensuring that subprocesses get given
-	local-file-name's)
-
-Mon Mar 23 09:29:30 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl, rm-misc.jl, rm-output.jl: was checking if
-	number of lines in buffer is zero to see if the file's
-	empty---there's always at least one line (doh!)
-
-	* read-mail.jl (rm-append-inbox): set rm-current-msg-index to
-	zero if we're adding the first message in the folder
-
-Fri Mar 20 13:49:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* dired.jl (dired-print): changed the output format slightly
-	(dired-delete, dired-execute-end): don't confirm deletion one
-	file at a time; record all files to be deleted, then use
-	map-y-or-n-p
-
-Thu Mar 19 09:55:21 1998  John Harper  <john dcs warwick ac uk>
-
-	* info.jl (info-prompt): fix validation function not
-	constructing the list of options
-	(info-menu): when searching for entered menu name, search case
-	insensitively
-
-	* mail-headers.jl (mail-parse-atom): a few minor fixes to allow
-	null strings, comments and addresses to be recognised
-
-Mon Mar 16 15:48:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl, rm-misc.jl, rm-output.jl: miscellaneous fixes
-	to make the message at the end of the file be handled better;
-	also changed how the \n\n separator is inserted between
-	messages
-
-	* compiler.jl, disassembler.jl, bytecodes.jl (op-filter,
-	op-macrop, op-bytecodep): new opcodes
-
-	* buffers.jl (save-some-buffers): rewritten using map-y-or-n-p
-	and filter
-
-	* prompt.jl (map-y-or-n-p): new function, apply y-or-n-p to a
-	list of inputs
-
-Sat Mar 14 16:06:25 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-summary-print-item): use the all-new and
-	enhanced format function to do all dirty work
-
-	* summary.jl (summary-mark-item, summary-mark-delete): when
-	called interactively these now use the prefix arg to find how
-	many items to mark. Also s-mark-delete just calls s-mark-item
-
-	* summary.jl (summary-assoc-item-function): new variable
-	(summary-unmark-all): new command, bound to "U"
-	(summary-execute): always ignore the `mark' symbol, also ensure
-	that any skipped symbols are preserved in the list of those
-	pending
-	(summary-mark-line, summary-map-marked-items): new functions
-	for working with marked items
-
-	* dired.jl (dired-print): works with broken symlinks
-
-Fri Mar 13 15:03:55 1998  John Harper  <john dcs warwick ac uk>
-
-	* summary.jl (summary-next-item, summary-previous-item): handle
-	cursor not being on an item gracefully
-
-	* dired.jl (dired-functions, dired-cursor-column): add an
-	after-move vector to put the cursor in column
-	dired-cursor-column; by default the first character of the file
-	name
-
-	* dired.jl, dired-hooks.jl: first attempt at a dired program
-	* init.jl: load dired-hooks
-
-	* buffers.jl (find-file-hook): renamed as after-read-file-hook.
-	There's now a new hook find-file-hook that can take over almost
-	all find-file functionality
-	* rcs-hooks.jl: use after-read-file-hook, not find-file-hook
-
-	* rcs.jl, rcs-hooks.jl (rcs-set-default-branch): new command,
-	bound to "Ctrl-x v b", sets the default branch of the file to
-	either the currently checked out revision, or the highest (with
-	a prefix arg)
-
-Thu Mar 12 20:23:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* mail-headers.jl (mail-quote-phrase, mail-format-address): now
-	does proper quoting of phrases when necessary
-
-	* mail-dir-summary.jl (mds-alias-functions,
-	mds-address-functions): bind the mds-compose-mail-to-item
-	function to the select tag (i.e. pressing RET)
-	(mds-compose-mail-to-item): make ITEM an argument, but infer
-	the IN-CC arg from current-prefix-arg
-
-Wed Mar 11 09:30:52 1998  John Harper  <john dcs warwick ac uk>
-
-	* maildefs.jl (mail-atom-re): fixed this to be [almost] exactly
-	what RFC-822 specifies. It's now defined exclusively instead of
-	inclusively (how foolish..)
-
-	* mail-headers.jl (mail-parse-address): build the various
-	regexps each call, this works even when mail-atom-re changes
-	behind our back
-
-Tue Mar 10 20:24:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* shell.jl (shell-mode-kill, shell-start-process): when a
-	shell-process exists, check that it's in use before complaining
-
-	* tags.jl (find-tag, visit-tags-file): new file, new commands.
-	Currently only supports etags generated TAGS files
-	loadkeys.jl (global-keymap): find-tag bound to M-.
-
-Mon Mar  9 09:32:33 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-current-message-end): renamed as
-	rm-message-end, with the message as an optional arg
-	* rm-output.jl (rm-output, rm-output-message): some minor fixes
-
-	* read-mail.jl (rm-summary-format, rm-summary-functions):
-	variables to define the structure of summary lines
-	(rm-saved-cache-tags): message cache tags whose contents should
-	persist across calls to the mail reader
-	(rm-kill-subject): new command (bound to `k') that deletes all
-	messages with the same subject as the current message
-	(rm-pipe-message): new command, calls shell-command-on-area for
-	the current message (bound to `|')
-	(rm-msg-): changed the format of the message structure, now
-	very little info is stored explicitly, everything parsed from
-	message headers is stored in the rm-msg-cache slot
-	(rm-cached-form): macro to execute a form whose value may
-	previously have been cached for the message in question
-	(rm-tag-cached-p, rm-invalidate-tag): cache utilities
-	(rm-current-message-end): no longer uses the position of the
-	next message, instead uses the new rm-msg-total-lines field
-	(rm-update-flags): as well as the X-Jade-Flags-v1 header, also
-	outputs X-Jade-Cache-v1 containing persistent items in the
-	message's cache
-	(rm-get-msg-header): wrapper for mail-get-header, but on an
-	arbitrary message
-	(rm-get-senders, rm-get-recipients, rm-get-subject,
-	rm-get-date-vector): wrappers to rm-get-msg-header, but working
-	through the cache
-	(rm-create-summary): call hook read-mail-summary-mode-hook
-	immediately before calling summary-mode
-	(rm-summary-print-item, rm-summary-format-item): functions for
-	formatting summary lines, the line is cached (non-persistently)
-	(rm-invalidate-summary): function to remove the cached summary
-	line
-
-	* rm-mail-dir.jl (rm-mail-dir-scanner): use rm-get-recipients
-	and rm-get-senders when scanning for new addresses
-
-	* mail-dir-summary.jl (mds-sort-list): command (bound to `s')
-	to sort the mail directory lists
-
-	* summary.jl (after-marking): ensure that this function tag is
-	called _before_ the updating takes place
-	(summary-mark-delete): optional arg can specify item
-
-	* maildefs.jl (mail-month-alist): alist of RFC-822 month
-	abbrevs to numeric indices (Jan=1, ...)
-
-	* mail-headers.jl: new file, moved all of the functions that
-	deal with mail headers to this file
-	(mail-parse-address, mail-parse-date): new functions
-
-	* modes.jl, prompt.jl, rectangle.jl: reversed order of NOCASEP
-	and START in calls to string-match
-
-Fri Mar  6 10:51:58 1998  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-defuns, comp-defvars): these are always
-	used now, even if we're not compiling a file (mainly use
-	comp-defuns as a cache of previously seen functions)
-	(comp-compile-funcall): open-code funcall forms with op-call
-
-	* sort.jl (sort): new file, new function, sorts a list
-
-	* summary.jl (summary-mode): install a _copy_ of the functions
-	vector in the buffer, this allows for easier modification later
-
-Wed Mar  4 14:02:40 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (goto-mouse): new function, abstracted from
-	mouse-select, this finds the position and view under the mouse
-	and moves to them
-	(mouse-select-drag): when dragging words, find the start of the
-	word as well as the end
-
-Tue Mar  3 11:53:40 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (kill-ring-size): variable controlling size of kill
-	ring, set to 8 by default
-	(kill-string): examines relative cursor positions to decide
-	whether to prepend of append additive kills
-	(yank, yank-rectangle, yank-next): more or less totally
-	rewritten, may even work properly now? Uses a truly gruesome
-	hack to make undo take some of the load
-	(yank-to-mouse): uses mouse-select to find the mouse position,
-	this means that view switches work correctly
-
-	* edit.jl (next-line, previous-line): new commands for moving
-	up and down lines, preserving the original column position
-	* loadkeys.jl: bind Ctrl-n and Down, and Ctrl-p and Up, to
-	next-line and previous-line respectively
-
-	* windows.jl (open-window-on-display): calls set-current-window
-	on the new window, this allows things like "jadeclient -X -f
-	read-mail" to work as you would expect
-
-	* buffer.jl (maybe-save-buffer): fixed
-
-	* compiler.jl (comp-max-inline-depth): variable controlling
-	maximum nesting of open-coded functions
-	(comp-batch-compile): var controlling whether to print messages
-	to stdout, or to a buffer
-	(comp-inline-env): alist of functions to open-code
-	(comp-defuns): alist of seen functions, and the number of args
-	they require
-	(comp-defvars): list of defvar'd variables
-	(comp-bindings): lexical environment of current form
-	(comp-inline-depth): current inlining nesting
-	(comp-message, comp-error, comp-warning): rewritten
-	(comp-remember-fun, comp-remember-var): functions for recording
-	global variables and functions
-	(comp-test-varref, comp-test-funcall): functions to emit
-	warnings if something looks suspicious
-	(compile-file): initial-pass now scans for all top-level
-	definitions: defun, defsubst, defvar, and defconst.
-	(comp-get-lambda-vars): return the symbols that will be bound
-	by a particular lambda list
-	(comp-compile-inline-lambda): open-codes a function call, used
-	both for constant lambda expressions as the first element of
-	function applications, and for inlining defsubst declared
-	functions
-	(comp-compile-inline-function): defsubst puts this into the
-	compile-fun property of all inline functions
-
-	* lisp.jl (defsubst): new macro, define an inline defun
-	* lisp-mode.jl: Add intentation hint for defsubst
-	* dump.jl: Support (untested as yet) for defsubst functions
-
-	* add-log.jl, buffers.jl, compile.jl, debug.jl, dump.jl,
-	edit.jl, info.jl, isearch.jl, lisp.jl, prompt.jl, rcs.jl,
-	read-mail.jl, replace.jl, rm-misc.jl, tex-mode.jl,
-	texinfo-mode.jl, windows.jl: Minor fixes for bugs found via
-	compiler warning, mainly adding defvars for special variables
-
-	* server.jl (server-find-file): chooses the view to open the
-	file in, rather than the window
-
-Mon Mar  2 17:15:35 1998  John Harper  <john dcs warwick ac uk>
-
-	* windows.jl (open-window-on-display): new command, is to
-	make-window-on-display as open-window is to make-window
-
-Sun Mar  1 11:29:09 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-summary-keymap): quote rm-followup
-
-	* rm-misc.jl (rm-really-burst-message): call replace-last-match
-	instead of the non-existant replace-regexp
-	(rm-reply): only append msg-id to list of references when
-	making new list of references if msg-id is non-nil
-
-Fri Feb 27 12:26:14 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (goto-view-line): new function, bound to Meta-r.
-	Moves the cursor to the start of a line displayed in the
-	current view (similar to C-l, but moving the cursor, not the
-	display)
-	* loadkeys.jl: bound M-r as described above
-
-	* edit.jl (backward-char, backward-tab, backward-line,
-	forward-word, backward-word, forward-paragraph,
-	backward-paragraph, forward-page, backward-page): removed the
-	hacky MOVE argument, replaced by the new @ interactive flag
-	(word-start, mouse-pos): added interactive declarations
-	(goto-start-of-buffer, goto-end-of-buffer): removed
-	(top-of-buffer, end-of-buffer): don't call goto and
-	set-auto-mark explicitly, just use the interactive flags
-	(save-excursion, save-restriction): use ,@ instead of ,
-	* loadkeys.jl (global-keymap): changed M-> and M-< bindings
-
-Wed Feb 25 10:07:41 1998  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl (rcs-init-file): don't check out zero length files, if
-	the file actually is zero bytes in the repository we'll go into
-	an infinite loop
-
-	* c-mode.jl, xc.jl: integrated the XC code with the standard C
-	mode. Of course, there's still a lot of improvements to be made
-	and bugs to be fixed..
-
-	* keymap.jl (read-event): rewritten to use the minibuffer to
-	display the prompt, this means that the cursor also appears in
-	the minibuffer. Also, easier to handle cleanup
-	(describe-key): handle chained bindings better
-
-	* rcs.jl (rcs-display-diffs): renamed as rcs-compare-revisions,
-	when called interactively with a prefix arg, the revisions will
-	be prompted for
-	(rcs-display-log-args): new variable, a list of arguments to
-	pass to rlog
-	(rcs-down-history, rcs-up-history): fixed these functions
-
-Tue Feb 24 12:14:09 1998  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl (rcs-make-backup-files): variable controlling whether
-	or not to make backup files if the file's controlled by RCS
-	(rcs-only-lock-seen-files): variable controlling whether to
-	lock when checking out files whose revision is different from
-	the currently viewed revision
-	(rcs-revision): local variable containing the revision of the
-	buffer, or nil
-	(rcs-version): function renamed as rcs-find-version
-	(rcs-init-file): when called on a file that doesn't exist, or
-	is zero bytes in size, check out the current version
-	(rcs-verify-buffer, rcs-register-buffer, rcs-check-in-buffer,
-	rcs-lock-buffer, rcs-view-revision, rcs-revert-buffer): removed
-	the BUFFER argument, all now operate on the current buffer
-
-	* read-mail.jl (rm-display-current-message): when highlighting
-	headers ensure that any continuation lines are also included
-
-	* maildefs.jl (mail-display-summary): slightly changed
-	semantics -- set to `bottom' means display summary at bottom of
-	display, otherwise non-nil means display at top, nil means
-	don't display (as before)
-
-	* read-mail.jl (rm-configure-views): new function to set up the
-	window configuration, two views mail and summary
-
-	* summary.jl (summary-highlight-index): highlight to the end of
-	the line or the right edge of the display, whichever is greater
-
-Sun Feb 22 15:51:24 1998  John Harper  <john dcs warwick ac uk>
-
-	* dump.jl: enable constant "put" forms to be dumped
-
-Thu Feb 19 00:02:49 1998  John Harper  <john dcs warwick ac uk>
-
-	* lisp-mode.jl (lisp-forward-sexp, lisp-backward-sexp): treat
-	the three characters ` , @ as single quote (i.e. step over them
-	when they occur at the start of a sexp)
-
-	* backquote.jl: don't use (` X), (, X) and (,@ X), the Lisp
-	reader now parses the usual syntax
-
-	* edit.jl (save-restriction): changed to use normal backquote
-	syntax
-	(save-cursor): renamed save-excursion since it does actually
-	save the current buffer as well as the cursor, this is close
-	enough to the usual definition of save-excursion for me
-
-	* rm-output.jl, text-mode.jl: change calls to save-cursor to
-	call save-excursion
-
-Wed Feb 18 23:20:34 1998  John Harper  <john dcs warwick ac uk>
-
-	* backquote.jl: new file, provides pseudo-backquote operation.
-	This file was taken from GNU Emacs 19.34 (originally by Rick
-	Sladkey), with very minor modifications
-
-	* edit.jl (auto-mark): now made buffer-local, i.e. each buffer
-	gets its own auto-mark
-	(goto-mark): added optional arg DONT-SET-AUTO which can inhibit
-	setting the auto-mark before moving
-	(save-restriction, save-cursor): now implemented using
-	backquote, both have been improved, save-restriction now uses
-	marks, both check that the buffer is still resident before
-	reinstalling it
-	(mouse-pos): new function
-	(mouse-select): updated for line wrapping redisplay
-
-	* buffers.jl (goto-mark, set-auto-mark,
-	swap-cursor-and-auto-mark): moved to edit.jl
-
-	* bookmarks.jl (set-bookmark, goto-bookmark, kill-bookmark,
-	kill-all-bookmarks, list-bookmarks): new file, provides named
-	bookmarks
-
-	* windows.jl (shrink-view-if-larger-than-buffer): handle line
-	wrapping redisplay
-
-	* rm-misc.jl (rm-reply): accept null subject lines gracefully
-	(rm-forward): minor changes, also don't put empty lines between
-	the forwarded message and its delimiters
-
-	* loadkeys.jl: removed mark-1, mark-2 and mark-3, and the key
-	bindings to set and goto them
-
-	* isearch.jl (isearch-accept): call set-auto-mark to do it's
-	stuff instead of faking it
-
-	* init.jl: load backquote on startup
-
-	* help.jl (describe-function): updated for compiled bytecode
-	objects
-
-	* fill.jl (unfill-paragraph): new command, changes all newlines
-	withing the current paragraph(s) to spaces
-
-Mon Feb 16 20:29:06 1998  John Harper  <john dcs warwick ac uk>
-
-	* replace.jl (replace-last-match): fixed; I was deleting the
-	matched text before expanding it (doh!)
-
-Thu Feb 12 18:51:44 1998  John Harper  <john dcs warwick ac uk>
-
-	* dump.jl (dump-batch): options --enable-inline-strings and
-	--disable-inline-strings
-	(dump-defvar, dump-defconst): set the property
-	variable-documentation not just documentation (which is wrong)
-
-	* help.jl (documentation): fix for subr built-in variables
-
-Sun Feb  8 14:46:12 1998  John Harper  <john dcs warwick ac uk>
-
-	* windows.jl (scroll-next-view): new command, bound to
-	"Ctrl-Meta-v", scrolls the next view in the window
-	* loadkeys.jl (global-keymap): binding for above
-
-	* rcs.jl (rcs-goto-buffer): display the RCS output buffer in a
-	separate view, and call shrink-view-if-larger-than-buffer
-
-Thu Feb  5 17:32:21 1998  John Harper  <john dcs warwick ac uk>
-
-	* windows.jl (other-view): new interpretation of the LINES
-	optional argument. If LINES is given then it always specifies
-	the size of the returned view (even if the view already
-	exists). If LINES is the symbol t, then the size of an already
-	existing view is never changed. If LINES is nil the size of the
-	returned view and the size of the current view are roughly
-	equal.
-	(enlarge-view, shrink-view): new functions to add or remove
-	lines from the current view, shrink-view just calls
-	enlarge-view with a negative argument
-	(shrink-view-if-larger-than-buffer): new function to reduce the
-	size of the current view to the number of lines in its buffer
-	* loadkeys.jl (ctrl-x-keymap): "Ctrl-x ^" bound to
-	enlarge-view, "Ctrl-x -" bound to shrink-view-if-larger...
-
-	* read-mail.jl (rm-summary-select-item,
-	rm-summary-execute-end): both call other-view with LINES set to
-	t to prevent view resizing
-
-	* shell.jl (shell-command-on-area): when displaying a new
-	buffer, shrink the view to the buffer's size
-
-	* help.jl (help-wrapper): macro to replace the help-setup
-	function. This handles shrinking the view to the size of the
-	final buffer, and leaving the cursor in the original view, not
-	that of the help-buffer
-	* help.jl, keymap.jl: all calls to help-setup translated to use
-	help-wrapper
-
-Wed Feb  4 13:00:03 1998  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-delete-current-message): was sometimes
-	leaving a blank line at the start of mailboxes
-
-Mon Feb  2 00:04:01 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (auto-save-function): use message to display the
-	message not format
-
-Sat Jan 24 17:11:56 1998  John Harper  <john dcs warwick ac uk>
-
-	* keymap.jl (print-keymap): was initialising the array index
-	variable one to high (and thereby accessing past the end of the
-	array)
-
-	* buffers.jl, gzip.jl, read-mail.jl, send-mail.jl: updated for
-	new function names, write-buffer-contents, read-file-contents
-	and insert-file-contents.
-
-	* buffers.jl (find-file): absorbs all functionality of
-	open-file, and gets a new optional arg DONT-ACTIVATE which can
-	be used to prevent the new buffer being installed in the
-	current view.
-	(open-file): deleted
-	(open-file-hook): renamed as find-file-hook
-
-	* dump.jl: new file, provides dumping of compiled Lisp files to
-	an assembler file that can be assembled and linked into a
-	special "jaded" executable. Only forms that are ``constant''
-	are dumped, the rest get put in a FILE.jld file that cmd_load
-	knows when to look for
-
-	* lisp.jl (autoload): when the executable contains dumped data,
-	don't add autoload definitions for any files that were dumped
-	(since they may overwrite the constant definitions), instead
-	load the file there and then (unless it's already been loaded)
-
-	* add-log.jl, buffers.jl, find-autoloads, gdb.jl, rcs-hooks.jl,
-	rcs.jl, server.jl: use find-file instead of open-file
-
-	* compiler.jl, gzip.jl, mail-dir.jl, rm-output.jl,
-	send-mail.jl: use open-file and close-file instead of open and
-	close
-
-	* init.jl: now load autoloads.jl after loading windows.jl and
-	buffers.jl (I can't remember why!?) Also cleaned up how the
-	command-line-args are used, if a function is called via the -f
-	option it's guaranteed that the next argument will be the car
-	of the list
-
-	* debugrc.jl: now catches all errors and prints them before
-	resuming operation. On catching end-of-stream though it quits
-
-	* text-mode.jl (indented-text-mode): explicitly give
-	fill-prefix a buffer-local value, in case fill.jl hasn't made
-	it automatically buffer-local yet
-
-Tue Jan 20 14:28:45 1998  John Harper  <john dcs warwick ac uk>
-
-	* mail-dir-summary.jl (mds-compose-mail-to-item): command
-	(bound to "m") that composes a new mail message with the
-	current item as the recipient (by default in the To: field,
-	prefix arg means put it in the CC: header)
-
-Mon Jan 19 18:22:52 1998  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-top-form): use defun and defmacro
-	again now they can handle bytecode objects
-
-Sun Jan 18 21:59:02 1998  John Harper  <john dcs warwick ac uk>
-
-	* add-log.jl (changelog-mode): explicitly create buffer-local
-	values of fill-prefix and fill-prefix-width, in case fill.jl is
-	not yet loaded
-
-	* lisp-mode.jl (lisp-backward-sexp): if an expression is
-	preceded by #, move onto it.
-
-	* disassembler.jl: only one entry point now: `disassemble',
-	this handles single forms and function/macro definitions.
-	Now by default it outputs to the buffer *disassembly*, and
-	heads the text with some information about the byte code
-
-	* compiler.jl: modifications for byte code subrs. Instead of
-	compiling functions and macros to a lambda list, we compile
-	them to a byte code object. Also don't print newlines between
-	output forms
-
-	* debug.jl: bind to print-escape, not print-escape-newlines
-
-Thu Jan 15 12:38:46 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (paragraph-regexp): renamed as paragraph-separate,
-	this is now a regexp that matches the beginning of a line that
-	separates two paragraphs
-	(page-regexp): renamed as page-start
-	(forward-paragraph, backward-paragraph): totally rewritten,
-	these work properly now. As with all other forward- and
-	backward- functions, forward-paragraph find the character
-	following the end of the paragraph, backward-paragraph finds
-	the character at the start of the paragraph
-	(mark-paragraph): renamed as paragraph-edges, this function now
-	finds the beginning and end of the current COUNT paragraphs.
-	Marks them as a block when called interactively.
-	(transpose-paragraphs): does what you'd expect, bound to `Ctrl-x
-	Ctrl-Meta-t'.
-	(save-cursor): now uses a mark to store the position
-
-	* fill.jl: renamed from fill-mode.jl, this file has been almost
-	completely rewritten
-	(fill-break-re): regexp defining where it's permissable to
-	break lines (by default: space, tab, newline or form-feed)
-	(fill-mode-active): what used to be fill-mode-p
-	(fill-prefix, fill-prefix-width): variable defining the fill
-	prefix of the buffer. A string or a function, see its
-	documentation for details.
-	(set-fill-prefix): new command (bound to `Ctrl-x .') that
-	saves from the start of the line to the cursor as the fill
-	prefix for the buffer
-	(fill-area): new function to fill an arbitrary region of text.
-	Handles a prefix at the beginning of each line
-	(fill-paragraph): now calls fill-area
-	(fill-check-line): rewritten (this is for auto-fill mode)
-	(center-line, center-paragraph): moved from text-mode.jl,
-	untested
-
-	* tex-mode.jl (tex-mode): set paragraph-separate to include
-	"$$" as well as the normal blank lines. Also configures the
-	generic expression handling code to handle TeX syntax a bit
-	better ($..$ as delimiters, comments, don't have an escape
-	character.
-
-	* text-mode.jl (text-mode-init): don't include underscores and
-	hyphens in word syntax.
-	(indented-text-mode): set fill-prefix to text-mode-fill-prefix
-	(text-mode-fill-prefix): function to handle fill prefix as
-	indentation of the previous line.
-	(center-line, center-paragraph): moved to fill.jl
-
-	* loadkeys.jl (global-keymap): `Meta-h' bound to paragraph
-	edges
-	(ctrl-x-keymap): `Ctrl-x Ctrl-Meta-t' bound to
-	transpose-paragraphs, `Ctrl-x .' bound to set-fill-prefix
-	
-	* lisp.jl (function, return): new macros
-
-	* summary.jl (summary-update-item): don't use save-cursor anymore,
-	now that uses marks it screws things up
-
-	* compiler.jl (comp-inc-stack): rewritten as a macro, and given
-	an optional argument N.
-	(comp-compile-constant): checks if FORM is nil or t, and uses
-	the special opcodes if it is
-
-	* add-log.jl, asm-mode.jl, buffer-menu.jl, buffers.jl,
-	c-mode.jl, edit.jl, gdb.jl, lisp-mode.jl, modes.jl,
-	read-mail.jl, rm-misc.jl, send-mail.jl, shell.jl, summary.jl,
-	tex-mode.jl, texinfo-mode.jl, text-mode.jl, xc.jl: change calls
-	to eval-hook to use call-hook instead Note that read-file-hook,
-	write-file-hook, insert-file-hook, auto-save-hook,
-	read-mail-delete-message-hook, mail-yank-hooks are all "or"
-	style hooks
-
-Wed Jan 14 18:02:21 1998  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.jl, disassembler.jl: opcode changes for new
-	exception handling
-	* compiler.jl (comp-get-label-addr): returns the pc of a
-	previously-set label
-	(comp-compile-catch, comp-compile-unwind-protect,
-	comp-compile-error-protect): modified for new exception
-	handling mechanisms. error-protect renamed as condition-case.
-
-	* isearch.jl, lisp-mode.jl, read-mail.jl, xc.jl: changed
-	error-protect to condition-case
-
-Tue Jan 13 00:03:25 1998  John Harper  <john dcs warwick ac uk>
-
-	* add-log.jl (changelog-mode): new major mode
-	* modes.jl (mode-alist): added changelog-mode
-
-Mon Jan 12 12:48:41 1998  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.jl, compiler.jl, disassembler.jl (op-max, op-min):
-	new instructions
-
-	* mail-dir.jl: new file, provides an email directory, both of
-	addresses to names, and aliases to addresses
-
-	* mail-dir-summary.jl (list-mail-addresses, list-mail-aliases):
-	new file, uses summary-mode to display the email directory
-	information. Also allows interactive editing of the directory.
-
-	* rm-mail-dir.jl: hooks to interface the mail-dir with
-	read-mail mode. Adds a new command `+' when reading mail that
-	allows the address of the sender to be added to the directory.
-	Also has facilities for doing this (semi-) automatically
-
-	* sm-mail-dir.jl: hooks for send-mail mode. Two new commands,
-	`Ctrl-c a' inserts an address from the directory (in the style
-	defined by mail-address-style); `Ctrl-c Ctrl-a' inserts an
-	alias definition. Also has support (untested as yet) for
-	expanding aliases automatically prior to a message being sent
-
-Sun Jan 11 13:21:55 1998  John Harper  <john dcs warwick ac uk>
-
-	* maildefs.jl (mail-format-address): function to create a string
-	with name and address parts, formatted according to
-	mail-address-style.
-	* send-mail.jl (sendmail-send-message): use mail-format-address
-
-	* lisp.jl (eval-after-load): new function, adds entries to
-	after-load-alist (see `load' command)
-
-	* buffers.jl: reorganised this file so that similar functions
-	are grouped together
-	(save-and-quit): optional arg NO-QUERY, when t don't bother
-	asking whether any unsaved files should be saved.
-	(before-exit-hook): hook called by save-and-quit before exiting.
-	(split-line-indent): deleted this function
-	(goto-line): moved to edit.jl
-
-	* prompt.jl (prompt-from-list): new optional arg DONT-VALIDATE;
-	when t no validation function is installed, and hence strings
-	that aren't in the supplied list may be entered.
-
-Fri Jan  9 11:09:51 1998  John Harper  <john dcs warwick ac uk>
-
-	* replace.jl (query-replace-rest): still invoked the
-	replace-regexp function which has been deleted.
-	(query-replace-keymap): bound Ctrl-g to quit
-	(replace-string, replace-all, query-replace): minor doc-string
-	changes
-
-Thu Jan  8 15:48:32 1998  John Harper  <john dcs warwick ac uk>
-
-	* compile.jl: general clean-up. Removed the compile-command,
-	compile-default-command dichotomy, instead compile-command is
-	left global (any attempt to set it in a "Local Variables:"
-	section will make a local value). Also made the grep command
-	prompt for the whole command string, not just the arguments;
-	grep-buffer has been made to work again.
-
-Sun Jan  4 23:48:31 1998  John Harper  <john dcs warwick ac uk>
-
-	* modes.jl (add-minor-mode): changed the optional arg NO-KEYMAP
-	to be the argument KEYMAP--the keymap of the minor mode being
-	installed.
-	(remove-minor-mode): new optional arg KEYMAP--the keymap to be
-	removed along with the minor mode
-	(minor-mode-keymap): this variable removed
-	(minor-mode-installed): renamed as minor-mode-installed-p
-
-	* edit.jl (overwrite-mode): changes for new minor mode style,
-	also changed the variable overwrite-mode-p to
-	overwrite-mode-active
-
-	* rcs.jl (rcs-init-file): updated for new minor mode
-	conventions
-
-Sat Jan  3 21:03:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* keymaps.jl (km-print-list): when recognising
-	next-keymap-path being set, check that the thing it's being
-	set to is a list, before adding it to the list of maps to print
-
-	* gdb.jl (gdb-output-filter, gdb-redisplay-frame): put the
-	cursor at the indentation position of the line, not at the end.
-
-Sun Dec 21 02:51:44 1997  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl, info.jl: fix timestamp usage (now a cons cell)
-
-	* buffers.jl (revert-buffer): delete the auto save file
-	_before_ loading the original, to remove the annoying `auto
-	save is newer..' message
-
-Sat Dec 20 00:16:47 1997  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.jl, compiler.jl, disassembler.jl (op-pos,
-	op-posp): new opcodes, for `pos' and `posp' respectively
-
-	* lisp.jl (pos-col, pos-line): new macros
-
-	* buffers.jl (auto-save-file-newer-p, file-newer-than-file-p):
-	both use the new function time-later-p to compare time stamps
-
-Wed Dec 17 12:34:26 1997  John Harper  <john dcs warwick ac uk>
-
-	* modes.jl (init-mode): fixed '-*-X-*-' not being recognised
-
-Tue Dec 16 12:01:45 1997  John Harper  <john dcs warwick ac uk>
-
-	* lisp.jl (or, and): new macros, in place of the old special
-	forms of the same name
-	(prin1-to-string, read-from-string): both defined as macros
-	instead of functions
-
-	* compiler.jl (comp-compile-cond): optimise case where the
-	last condition list has no action associated with it--just
-	fall out the bottom with the condition itself as the value
-	(comp-compile-or, comp-compile-and): deleted
-
-Mon Dec 15 10:49:06 1997  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl (comp-compile-while): now puts conditional branch
-	at the top of the loop to reduce the number of branches
-	executed, uses the new opcode jpt
-	* bytecodes.jl (op-jpt, op-jpn): new opcodes, jump-and-pop-if-t
-	and jump-and-pop-if-nil
-	* disassembler.jl (dis-opcode-vector): added entries for the
-	above two opcodes
-
-Sun Dec 14 15:47:25 1997  John Harper  <john dcs warwick ac uk>
-
-	* Makefile: now compiles the Lisp files in two runs; the first
-	uses the compiler to bootstrap itself, the second uses the
-	compiled compiler to build everything else
-	* compiler.jl (compile-compiler): small function to aid the
-	above process
-
-	* rectangle.jl (insert-rectangle, copy-rectangle,
-	delete-rectangle, cut-rectangle): new file, replacing
-	src/editrect.c. The functions have slightly different names,
-	but not much has changed
-	* edit.jl: change all calls to X-rect to be X-rectangle
-
-	* Many changes to almost all files, adapting to the changes
-	mentioned under the same date in src/ChangeLog. There's sure
-	to be some fallout still to be fixed.
-
-	* edit.jl (backward-char, backward-tab, backward-line,
-	split-line, goto-start-of-buffer, goto-end-of-buffer,
-	top-of-buffer, bottom-of-buffer): new functions
-	(left-char, right-char): new macros
-
-	* init.jl: now uses version-string when printing the startup
-	banner
-
-	* replace.jl (replace-last-match): function that replaces the
-	most recently matched regular expression with the expansion of
-	its argument
-	(replace-string): replaces one string with another at a
-	specified position
-
-Wed Nov 26 00:34:32 1997  John Harper  <john dcs warwick ac uk>
-
-	* maildefs.jl (mail-default-headers): Added an "X-Mailer"
-	line
-	(mail-summary-lines): reduced to eight
-	(mail-parse-list, mail-parse-group, mail-parse-atom): the
-	second and third functions are new, split off from
-	mail-parse-list. It's now possible to read "groups" of
-	expressions---things not separated by commas. A new optional
-	arg to mail-parse-list controls this
-	(mail-get-header): option to read a list of groups, not a list
-	of comma-separated expressions
-	(mail-insert-list): option to suppress comma-separators
-
-	* send-mail.jl (mail-setup): now puts the subject immediately
-	after the recipients. Also inserts the REFERENCES arg as a
-	list of groups
-
-	* rm-misc.jl (rm-reply): read and generate the "References:"
-	header
-
-Tue Nov 25 12:01:51 1997  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (delete-blank-lines): rewritten to be compatible
-	with Emacs' command of the same name, remove the infinite
-	loop bug as well
-
-	* summary.jl: new optional action `current'; if this is
-	provided by the back-end it should return the index of the
-	currently selected item
-
-	* read-mail.jl (rm-display-current-message): new optional arg
-	no-summary-update; controls whether or not to update the
-	current summary item
-	(rm-delete-messages): fixed some bugs, also now tracks how
-	many messages have been moved through, so that when it has
-	finished the current message is as close as possible to the
-	current message on entry
-	(rm-summary-current-item, rm-summary-functions): provide a
-	`current' action
-
-Fri Nov 21 12:27:10 1997  John Harper  <john dcs warwick ac uk>
-
-	* compiler.jl: change '%' to use op-rem and 'mod' to use op-mod
-	(comp-compile-transitive-relation): new function to compile
-	>, >=, <, and <=. Needed since these functions can now take
-	more than two arguments	
-
-	* disassembler.jl: Update for op-mod/op-rem stuff
-
-	* compiler.jl (compile-file): emit a validate-byte-code form
-	* bytecodes.jl (bytecode-major, bytecode-minor): define
-	instruction set described
-
-Thu Nov 20 19:07:24 1997  John Harper  <john dcs warwick ac uk>
-
-	* info.jl (info-find-node, info-read-dir): fixed a couple of
-	minor bugs
-
-Wed Nov 19 10:32:03 1997  John Harper  <john dcs warwick ac uk>
-
-	* miranda.jl (miranda): new command; runs a Miranda session in
-	the other view, prompting for the script to use beforehand.
-
-	* summary.jl (summary-add-pending-op): now dispatches the
-	function vector `after-marking'
-	(summary-mark-delete): doesn't dispatch `after-marking' since
-	the above change takes care of it
-	(summary-quit): only bury the current buffer if the function
-	vector `on-quit' doesn't exist; otherwise the `on-quit'
-	function must handle everything
-
-	* buffer-summary.jl (bs-quit): new function, bound to the
-	summary's `on-quit' vector
-	(buffer-summary): don't use goto-buffer to install the
-	summary, to avoid the buffer-list being modified just use
-	set-current-buffer
-	(bs-select-item, bs-select-two-views): don't bury-buffer the
-	summary, just call bs-quit
-	(bs-mark-save): don't call summary-next-item, it's now called
-	indirectly by add-pending-op (and the `after-marking' vector)
-
-	* buffers.jl (open-buffer): new optional arg ALWAYS-CREATE.
-	When t, an already-existing buffer is never returned.
-
-	* compiler.jl (comp-warning): call add-buffer, if necessary,
-	to add the compiler output buffer to each views list of buffers
-	* gdb.jl, info.jl, rcs.jl, send-mail.jl, shell.jl: use
-	open-buffer not make-buffer to create buffers; ensuring they're
-	in the buffer-lists of all views.
-
-	* prompt.jl (prompt-for-file): new optional arg HISTORY-LIST
-
-	* maildefs.jl (prompt-for-folder): new function to prompt for
-	a mail folder; uses its own history list and fills in defaults
-	sensibly.
-
-	* read-mail.jl (rm-next-undeleted-message,
-	rm-previous-undeleted-message): commands to remove some of the
-	overloading on rm-next-message and rm-previous-message
-	(rm-next-message, rm-previous-message): the arg
-	DONT-SKIP-DELETED has had the DONT- removed, and therefore the
-	meaning reversed
-	(rm-keymap): bind "s" to rm-output
-	(read-mail-folder): use prompt-for-folder
-	(rm-command-with-folder, rm-command-in-folder): macros to call
-	a command in the folder buffer, used by rm-summary-keymap
-
-	* rm-output.jl (rm-output): new command to save the next COUNT
-	messages to another folder. Special action is taken if the
-	destination folder is currently in a buffer; even more special
-	action occurs if this buffer has read-mail-mode as its major
-	mode (the new messages are added to the buffer's list of
-	message structures). This hasn't really been tested yet.
-	
-Sun Nov 16 01:27:32 1997  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (mouse-select): now handles views properly, i.e.
-	activate the view that the mouse was clicked in
-
-Thu Nov  6 15:37:27 1997  John Harper  <john dcs warwick ac uk>
-
-	* print.jl (print-buffer, print-buffer-to-file,
-	print-buffer-to-printer, print-area, print-area-to-file,
-	print-area-to-printer): commands to print text, by default
-	using the GNU `enscript' command.
-
-	* prompt.jl (prompt-for-string): START arg wasn't being used
-	correctly.
-
-Mon Nov  3 01:33:51 1997  John Harper  <john dcs warwick ac uk>
-
-	* edit.jl (mouse-select, mouse-double-select,
-	mouse-select-drag): implement dragged selections
-	* (global-keymap): new left mouse button bindings for
-	drag-select
-
-	* edit.jl (mark-block): does no extra refresh, it's not
-	necessary anymore
-	(mark-page): forces non-rectangular blocks
-
-Sun Nov  2 11:01:25 1997  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-delete-messages): if we can't display the
-	old current message; try to display the last message in the
-	folder
-
-Sat Nov  1 12:54:05 1997  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-build-message-struct, rm-update-flags):
-	flags are now remembered via the "X-Jade-Flags-v1" header
-	(rm-display-current-message): looks for a header matching the
-	`mail-highlighted-headers' regexp, and highlights it
-	* maildefs.jl (mail-highlighted-headers): regexp matching
-	headers to highlight
-	* rm-misc.jl (rm-reply, rm-forward): the callback functions to
-	set the necessary flags work properly now
-
-	* shell.jl (shell-command-on-area): new arg DELETEP which is
-	passed to call-process-area. When INSERTP and DELETEP are both
-	t output replaces the input region
-	(shell-command-on-buffer): new command, similar to
-	shell-command-on-area, but over the whole buffer.
-
-	* loadkeys.jl (ctrl-x-keymap): bound `shell-command-on-buffer'
-	to `Ctrl-x |'
-
-Tue Oct 28 15:09:17 1997  John Harper  <john dcs warwick ac uk>
-
-	* shell.jl (shell-command, shell-comand-on-area): commands to
-	run shell commands in a user-friendly manner
-
-	* loadkeys.jl (global-keymap): `M-!' and `M-|' bound to
-	shell-command and shell-command-on-area respectively
-
-	* rcs.jl (rcs-command): now directs error output to the *rcs*
-	buffer no matter what the OUTPUT-STREAM parameter is
-
-Sun Oct 19 19:20:49 1997  John Harper  <john dcs warwick ac uk>
-
-	* loadkeys.jl: Bound sensible commands to "Insert" 
-	(overwrite-mode), "Home", "End", "Prior" and "Next".
-
-	* tex-mode.jl: `Ctrl-c Ctrl-c m' now inserts "\emph{}", fixed
-	some bugs in tex-insert-end and tex-insert-braces
-
-Thu Oct 16 15:33:35 1997  John Harper  <john dcs warwick ac uk>
-
-	* rm-misc.jl (rm-reply): now looks for a "Reply-To" header as
-	it should, and ensures that the initialised message is marked
-	as being unmodifed
-
-Wed Oct 15 23:15:43 1997  John Harper  <john dcs warwick ac uk>
-
-	* send-mail.jl (mail-setup, send-mail-signature): now
-	inserts "\n-- \n" before signatures as it should do, instead
-	of "\n--\n"
-
-	* read-mail.jl (rm-enforce-msg-separator): now assumes that
-	the cursor is at the position to insert at
-
-	* rm-misc.jl (rm-burst-message, rm-really-burst-message): now
-	works properly, and handles both RFC-934 _and_ RFC-1153
-	encapsulation schemes; seems to work ok..
-
-	* prompt.jl (prompt-validate-from-list): ensures that the
-	symbol `t' is returned, not just any old t value
-
-Tue Oct 14 00:53:27 1997  John Harper  <john dcs warwick ac uk>
-
-	* summary.jl (summary-update-item): now calls after-update
-	function after doing its stuff
-
-	* rm-misc.jl (rm-forward): now quotes "^-" properly
-	(rm-burst-message): new command to unburst digests, should
-	also handle sensibly forwarded messages
-
-	* read-mail.jl (rm-enforce-msg-separator): new function to
-	ensure "\n\n" exists when inserting new messages. Minor other
-	fixes.
-
-Sun Oct 12 21:06:30 1997  John Harper  <john dcs warwick ac uk>
-
-	* modes.jl (generic-forward-exp, generic-backward-exp): two
-	functions to provide expression handling for many common types
-	of code. Installed by default in mode-forward-exp and
-	mode-backward-exp.
-
-Wed Oct  8 11:56:17 1997  John Harper  <john dcs warwick ac uk>
-
-	* tex-mode.jl: initial revision; a simple mode for editing TeX
-	and LaTeX. Derived from texinfo.jl with the bonus that
-	tex-insert-braces works properly with negative args.
-
-	* modes.jl (mode-alist): added tex-mode, some other minor
-	changes
-
-Tue Oct  7 12:10:23 1997  John Harper  <john dcs warwick ac uk>
-
-	* rcs.jl (rcs-initial-comment): new variable controlling if an
-	initial description of a registered file is prompted for
-	(rcs-command): new optional argument OUTPUT-STREAM
-	(rcs-register-buffer, rcs-check-in-buffer, rcs-lock-buffer):
-	now allow the revision number to be specified (by typing 
-	`Ctrl-u' before calling the command.)
-	(rcs-view-revision): new command to display an arbitrary
-	revision of the current buffer. Since stdout and stderr are
-	linked when getting output from processes, this includes some
-	unsightly header information.. (for now)
-
-	* rcs-hooks.jl (rcs-keymap): moved here from rcs.jl so that the
-	`Ctrl-x v ...' bindings work from startup
-
-	* loadkeys.jl (global-keymap): `Ctrl-l' now bound to
-	center-display not centre-display
-
-	* prompt.jl (prompt-list-fold-case): new variable controlling
-	whether or not prompt-complete-from-list and
-	prompt-validate-from-list ignore case
-
-	* info.jl (info-find-node): set info-file-name here; this
-	seems to fix the weird history problem.
-	(info-prompt): let prompt-list-fold-case be t
-
-Sun Oct  5 22:04:56 1997  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-after-marking): won't move to the next
-	message when it doesn't exist
-
-Fri Oct  3 11:28:34 1997  John Harper  <john dcs warwick ac uk>
-
-	* rm-misc.jl (rm-default-yank-function): fixed [yet] again,
-	hopefully it now deletes only _blank_ trailing lines.. 
-
-Thu Oct  2 00:06:54 1997  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl: don't search for mail-message-start in
-	case-folding mode, this isn't a good idea
-
-	* prompt.jl (prompt-complete-symbol): now regexp-quote's the
-	word to be completed, this allows things like "let*" to work
-	properly.
-
-Wed Oct  1 17:04:00 1997  John Harper  <john dcs warwick ac uk>
-
-	* summary.jl (summary-highlight-index): allows the
-	highlighting of a single item (via the block marks).
-	(after-update): new action
-
-	* read-mail.jl: uses summary-highlight to mark the current
-	message, not the "->" insertion.
-
-	* send-mail.jl (send-mail-signature): now works properly when
-	a signature already exists
-
-	* read-mail.jl (rm-coalesce-visible-headers): when working on
-	the headers end the restriction at the blank line following
-	the last header. This prevents us hitting the end of the
-	buffer when parsing the last header
-
-	* rm-misc.jl (rm-default-yank-function): now properly deletes
-	all trailing blank lines (not just empty lines)
-
-	* summary.jl: added some more actions, after-marking,
-	after-move, and on-quit. Removed the summary-after-execute
-	hook since it was redundant.
-
-	* buffer-summary.jl: defines an after-marking action that
-	simply moves to the next item in the display
-
-	* read-mail.jl: uses the after-marking action to move to the
-	next message. If the current message was the one just marked,
-	and rm-move-after-deleting is t select this message as well.
-	Unfortunately this stops Ctrl-d moving backwards, have to fix
-	this at some point
-
-Sun Sep 28 13:58:33 1997  John Harper  <john dcs warwick ac uk>
-
-	* buffer-summary.jl (bs-mark-save): advances to next item
-	explicitly	
-
-	* info.jl (info-prompt): don't define prompt-word-regexps,
-	they should be okay by default
-
-	* prompt.jl: now does history recall, three history lists by
-	default: files, symbols and others. Also some more support
-	for default values, stored at history item -1. Alsi fixed M-?
-	command, and bound it to M-/ as well
-
-	* summary.jl (summary-unmark-item): new optional arg
-	MOVE-AFTER-P; whether or not to move to the next item
-	(summary-update-item): don't trash cursor position anymore
-	(summary-mark-delete): move to the next item explicitly
-
-	* read-mail.jl (rm-message-count): variable storing the number
-	of messages in the folder
-	(rm-keymap): fixed `d' and `Ctrl-d' bindings, added `N' and 
-	`P' bindings for moving through deleted messages, added `u'
-	binding to unmark deleted messages
-	(rm-last-folder): stores name of last read folder. Used when
-	prompting for folders by read-mail-folder
-	(rm-fix-status-info): function to set the minor-mode-names
-	list to something describing the status of the current
-	message; this isn't always updated when it should be yet
-	(rm-summary-keymap): added `N' and `P' bindings, removed `d', 
-	`DEL' and `Ctrl-d' bindings; handled by summary.jl
-
-	* send-mail.jl (mail-setup): promoted to be a command. Now
-	displays the mail buffer while asking if it's okay to lose its
-	contents. Calls the text-mode-hook to enable auto-fill or
-	whatever
-	* loadkeys.jl (ctrl-x-keymap): bound `x' to mail-setup
-
-	* rcs.jl (rcs-callback-with-description): Made the mode line
-	description a lot shorter so that it fits in the window. Also
-	invoke text-mode
-
-	* rm-misc.jl (rm-forward): new argument ALL-HEADERS-P, takes
-	it value from the raw prefix argument. Controls whether all
-	headers or just those that are visible are included. Also now
-	leaves the cursor in the ^To: field when no recipients are
-	specified
-
-	* read-mail.jl (rm-summary-keymap): calls rm-forward with the
-	prefix-arg
-
-	* fill-mode.jl (fill-paragraph): first attempt at this. Not
-	particularly robust yet
-	* loadkeys.jl (global-keymap): `Meta-q' bound to
-	fill-paragraph
-
-	* edit.jl (forward-word): doesn't trash its POS argument
-	anymore.
-
-Sat Sep 27 17:19:54 1997  John Harper  <john dcs warwick ac uk>
-
-	* debug.jl (debug-entry): let print-escape-newlines be t
-
-	* edit.jl (capitalize-word): works more intuitively when COUNT
-	is positive now.
-
-Fri Sep 26 15:21:52 1997  John Harper  <john dcs warwick ac uk>
-
-	* read-mail.jl (rm-auto-next-message, rm-move-after-deleting):
-	two new configuration variables
-	(rm-next-page, rm-previous-page): commands for paging
-	(rm-mark-message-deletion): switches message afterwards
-
-	* read-mail.jl: Added reply, followup and forward commands.
-	Removed the rm-always-with-X macros; now includes each command
-	in the summary buffer that needs to run in the folder with
-	rm-with-folder.
-	(rm-in-folder): new macro
-	(rm-summary-buffer): don't set mildly-special buffer, instead
-	destroy-buffer it manually on exit
-
-	* send-mail.jl (mail-setup): Many fixes. Changed a lot of mail-
- 	symbol prefixes to send-mail-.
-	Removed mail-buffer-in-use variable, inferred from whether the
-	buffer is read-only
-
-	* maildefs.jl (mail-yank-hooks, mail-reply-prefix,
- 	mail-fill-column): new variables
-	(mail-parse-list): returns the list in the order the items
- 	actually occur
-	(mail-find-header): can optionally specify the position to start
- 	searching
-	(mail-get-header): when LISTP is t, will look for multiple headers
- 	of the same name
-	(mail-insert-list): inserts a list of strings (separated by
- 	commas), filled to the mail-fill-column. New lines are indented a
- 	la RFC-822
-	
-	* edit.jl (forward-page,backward-page): don't move the cursor
- 	by default; only when optional third arg is non-nil
-	(capitalize-word): now has a COUNT arg -- which word to change
-	(transpose-lines): new command
-	(delete-blank-lines): new command
-
-	* loadkeys.jl (ctrl-x-keymap): "Ctrl-o" bound to
- 	delete-blank-lines, "Ctrl-t" bound to transpose-lines
-	
-Thu Sep 25 11:25:22 1997  John Harper  <john dcs warwick ac uk>
-
-	* buffers.jl (fix-local-variables): fixed
-
-	* maildefs.jl, read-mail.jl: try to be more intelligent when
-	locating files
-
-Wed Sep 24 11:13:28 1997  John Harper  <john dcs warwick ac uk>
-
-	* maildefs.jl (mail-default-folder, mail-spool-files,
-	movemail-program): new configuration variables. Note that
-	movemail-program defaults to undefined.
-	(mail-find-inboxes): returns a list of possible spool files
-	for a particular mail folder
-
-	* read-mail.jl: lots of new features; including the ability to
-	read mail from spool files :-)  Lots of other things that were
-	needed before the thing is usable.
-
-	* buffers.jl (goto-buffer): new optional argument VIEW,
-	defining the view whose buffer should be changed
-
-	* add-log.jl (add-change-log-entry): now surrounds the mail
-	address with angled brackets
-
-	* edit.jl (after-kill-hook): called after changing the
- 	kill-ring. Used under X11 to install the current-kill as the
- 	primary selection
-	(yank): won't yank the current selection if it's owned by Jade
-
-Tue Sep 23 10:38:29 1997  John Harper  (john dcs warwick ac uk)
-
-	* edit.jl (page-regexp, forward-page, backward-page,
-	mark-page, restrict-to-page): page handling code. Pages are
-	delimited by ^L
-	* loadkeys.jl (ctrl-x-keymap): `Ctrl-p' is mark-page,
-	`[' is backward-page, ']' is forward-page
-
-	* edit.jl (save-cursor): macro to preserve the current cursor
-	position
-	* lisp-mode.jl: added indentation hint for save-cursor
-
-	* add-log.jl (change-log-address, change-log-name): removed
-	these two variables, they're replaced by user-mail-address and
-	(user-full-name) respectively
-
-Mon Sep 22 17:56:06 1997  John Harper  (john gem dcs warwick ac uk)
-
-	* loadkeys.jl (ctrl-x-n-keymap): new keymap, hooked to `Ctrl-x
-	n'. Three commands "n" restrict to the current block, "w"
-	unrestrict, and "p" restrict to a page (unimplemented) 
-
-Mon Sep 22 00:13:43 1997  John Harper  (john orcrist)
-
-	* read-mail.jl: changed the way summaries are used. Now a
-	summary buffer always exists for each mail buffer, but maybe
-	not displayed. Also unified some of the summary/mail buffer
-	commands
-
-	* maildefs.jl (mail-display-summary): new option; displays a
-	summary as soon as a mail buffer is entered
-
-	* compiler.jl: Correctly handles macros defined after they're
-	used. The compiler now does two passes through each file it
-	compiles --- the first builds the macro environment, the
-	second does the actual compilation
-
-Sun Sep 21 00:34:39 1997  John Harper  (john orcrist)
-
-	* send-mail.jl: new file provides means to send mail messages.
-	Currently only via sendmail(8) but hooks allow customisation.
-
-	* maildefs.jl: central definition of all mail configuration
-	variables, both for reading and sending, and a few mail
-	utility functions. I've tried to keep the configuration
-	options as compatible with Emacs as possible.
-
-	* read-mail.jl: moved configuration parameters to maildefs.jl
-	Also added a `replied' attribute to the message structure;
-	it's set when the message contains a ^Replied: header; how can
-	this be made compatible with VM?
-
-	* windows.jl (close-view, close-other-views): make sure that
-	the minibuffer view isn't closed
-
-	* edit.jl (save-restriction): new macro, preserves the current
-	buffer's restriction
-	* lisp-mode.jl: Added indentation hint for save-restriction
-
-Sat Sep 20 00:22:52 1997  John Harper  (john orcrist)
-
-	* c-mode.jl, lisp-mode.jl: minor changes for new regexp code
-
-	* gdb.jl (gdb-redisplay-frame): doesn't redisplay the frame in
-	the current view when it's a buffer running gdb; uses the
-	other-view instead
-
-	* read-mail.jl (mail-header-name): this variable is defined in
-	both read-mail.jl and send-mail.jl
-
-	* read-mail.jl: a couple of fixes for the new regexp code,
-	also fixed the rm-summary-update-current function
-
-Fri Sep 19 00:49:09 1997  John Harper  <john dcs warwick ac uk>
-
-	* info.jl: a couple of minor fixes for the new regexp code
-
-Wed Sep 17 00:33:16 1997  John Harper  (john orcrist)
-
-	* read-mail.jl: added support for deleting messages; also now
-	handles an empty folder
-
-	* summary.jl: added `execute-start' and `execute-end' function
-	vectors that surround the guts of summary-execute.
-
-Tue Sep 16 01:55:37 1997  John Harper  (john orcrist)
-
-	* summary.jl: removed `n' and `p' keybindings, leave them for
-	customisation by the deriving summary modes
-	(summary-update, summary-update-item): print the newline
-	themselves now.
-	* summary.jl: various other stuff
-
-	* read-mail.jl: works a lot better now, the summary buffer
-	works properly, tracking the mail buffer..
-
-	* buffer-summary.jl (bs-print-item): doesn't print newline
-
-Sun Sep 14 00:21:53 1997  John Harper  (john orcrist)
-
-	* windows.jl (other-view): new optional argument LINES, how
-	many lines to give a newly created view. Does nothing in the
-	case that the other view already exists.
-
-	* buffer-summary.jl (buffer-summary-mode): new function that
-	only contains a documentation string, for the mode.
-
-Sat Sep 13 18:25:13 1997  John Harper  (john orcrist)
-
-	* summary.jl: new file provides a generic menu system.
-	Somewhat like the buffer-menu, it can be customised to suit
-	whatever is being represented underneath. For example it will
-	be able to provide the summary view of the mail reader
-
-	* buffer-summary.jl: new file, replicates what buffer-menu.jl
-	does, but using summary.jl for all the complex stuff.
-
-	* read-mail.jl: first go at a basic mail reader. Currently it
-	just parsers BSD style mailboxes, doesn't manipulate them at
-	all.
-
-Sun Sep  7 16:17:39 1997  John Harper  (john orcrist)
-
-	* buffers.jl (read-file-into-buffer): now clears the buffer
-	before doing anything
-
-	* info.jl: much updated. Now uses the restriction feature,
-	which in turn allows compressed files to be read. May also be
-	less brain-damaged on Info files without tag tables.
-
-Sat Sep  6 13:34:23 1997  John Harper  (john orcrist)
-
-	* gdb.jl: Now displays source code in a different view of the
-	current window; not a different window
-
-	* rcs.jl (rcs-command): when rereading the buffer try to
-	preserve the current cursor position (in a particularly
-	non-bullet-proof manner)
-
-	* rcs.jl (rcs-down-history, rcs-up-history): functions (bound
-	to Meta-p and Meta-n respectively) used in the RCS callback
-	buffer to recall the previously entered descriptions
-
-	* All files are now under RCS control except for autoload.jl
-
-Fri Sep  5 20:22:12 1997  John Harper  (john orcrist)
-
-	* rcs.jl (rcs-version): fixed version numbers containing zeros
-	not being recognized (regexp [1-9] not [0-9]!)
-
-	* rcs-hooks.jl: new file, contains the function installed in
-	the open-file-hook to recognize RCS controlled files. This
-	loads rcs.jl when the first is found.
-
-	* rcs.jl (rcs-file-p): moved to rcs-hooks.jl
-
-Thu Sep  4 00:13:55 1997  John Harper  (john orcrist)
-
-	* ring.jl (set-ring-head): was setting the next free position,
-	not the previously accessed slot
-
-	* prompt.jl: now displays messages in the status line after
-	the title message
-
-Wed Sep  3 20:39:34 1997  John Harper  (john orcrist)
-
-	* bytecodes.jl, compiler.jl, disassembler.jl: Moved all byte
-	code definitions from the compiler to bytecodes.jl. Also many
-	of the opcodes have been renamed. op-setq and op-set
-	(previously op-vsetc and op-vset) now leave the set value on
-	the stack.
-
-Tue Sep  2 23:43:49 1997  John Harper  (john orcrist)
-
-	* compiler.jl: uses the new bind-{buffer,view,window} opcodes
-	when compiling with-{buffer,view,window} special forms.
-	Also modified compilation of unwind-protect to use the new
-	binding mechanism
-
-	* disassembler.jl: updated for new opcodes
-
-Mon Sep  1 21:54:24 1997  John Harper  (john orcrist)
-
-	* lisp.jl (if, when, unless): new macros, defined in terms of
-	cond.
-
-	* compiler.jl: fine-tuned the comp-compile-cond function; this
-	now produces exactly the same code as the specialist if, when
-	and unless functions. This is why they're now macros
-
-Sun Aug 31 10:49:45 1997  John Harper  (john orcrist)
-
-	* buffer-menu.jl: now understands multiple views; defines
-	the commands `1', `2', and `o' accordingly. Still displays
-	itself in the current view, no matter what that is.
-
-	* compiler.jl (op-viewp, op-swap-view, op-current-view,
-	op-swap2): new opcodes. `swap2' makes the top of the stack
-	be beneath the next two stack values. `swap-buffer' now
-	takes two arguments the buffer and the current view, and
-	leaves them both on the stack. This is incompatible with
-	old code!
-	(comp-top-level-compiled): added `with-view' to the list
-	(comp-compile-with-form): meta function to compile
-	`with-window' and `with-view'.
-	(comp-compile-with-buffer): uses new form of swap-buffer.
-
-	* disassembler.jl (dis-opcode-vector): added new instructions.
-
-	* edit.jl (forward-word, word-start): tries to handle hitting
-	the start of the buffer more gracefully.
-
-	* edit.jl (x11-block-status-function): new function, added to
-	the `block-status-hook' when in X11. It sets up the current
-	block as the current primary selection when necessary.
-
-	* edit.jl (kill-ring, kill-string, killed-string): the new
-	variable `kill-ring' is a ring-buffer (see ring.jl) holding
-	killed text.
-	(yank, yank-rectangle, yank-next): now use the kill-ring; 
-	`yank-next' allows the contents of the kill-ring to be cycled
-	through (but not with rectangles yet).
-
-	* help.jl (help-setup): switches to the `other-view'
-
-	* info.jl (info-prompt): uses the new minibuffer `prompt'
-	instead of `prompt2'
-
-	* init.jl: '(load prompt)' removed; the prompt functions are
-	now autoloaded.
-
-	* lisp-mode.jl: added hints for `with-view'
-
-	* loadkeys.jl ("Meta-y"): bound to `yank-next'
-	("Ctrl-x 0", "Ctrl-x 1", "Ctrl-x 2", "Ctrl-x o"): now work
-	with views
-	("Ctrl-x 4 ..."): now works in the `other-view'
-
-	* ring.jl (make-ring, ring-capacity, ring-size, add-to-ring,
-	get-from-ring, set-ring-head): New file, provides a ring-
-	buffer type.
-
-	* prompt.jl (prompt2): renamed as `prompt' and made to work
-	with in the minibuffer view. Completions in a separate view.
-	(prompt, prompt-for-directory, prompt-for-buffer,
-	prompt-for-symbol, prompt-for-lisp, prompt-for-function,
-	prompt-for-variable, prompt-for-command, prompt-for-string,
-	prompt-for-number): all autoloaded now
-
-	* prompt.jl (yes-or-no-p, y-or-n-p): moved here from ask.jl,
-	both autoloaded anyway so makes no difference.
-
-	* windows.jl (open-view, close-view, close-other-views,
-	in-other-view, goto-other-view, other-view, goto-next-view):
-	new functions to provide some level of interface to views.
-	open and close should be used instead of make and destroy.
-        (add-buffer, remove-buffer): now cycles through every view in
-	every window, since `buffer-list' is now view-local.
-
-Mon Aug 25 00:42:24 1997  John Harper  (john orcrist)
-
-	* rcs.jl: New file providing a particularly simple interface
-	to RCS. Do (require 'rcs) to install it.
-
-Sun Aug 24 20:43:30 1997  John Harper  (john orcrist)
-
-	* buffers.jl (read-file-into-buffer): new function, split off
-	from open file to handle initialisation when loading a file.
-	(revert-buffer): calls read-file-into-buffer
-
-	* edit.jl (toggle-buffer-read-only): new function
-	(toggle-read-only-function): new hook
-
-	* buffers.jl (maybe-save-buffer): new function, asks whether or
-	not to save a buffer if it contains unsaved modifications.
-
-Sun Jun 25 12:01:01 1995  John Harper  (jsh orcrist)
-
-	* gzip.jl (gzip-uncompress): Checks if a file exists before
-	attempting to expand it -- this allows non-existent files with
-	names ending in .gz or .Z to be edited properly.
-
-Tue Mar 21 16:33:04 1995  John Harper  (jsh orcrist)
-
-	* help.jl (help-prompt-keymap): Got rid of the incorrect
-	`Ctrl-i' binding.
-
-Mon Mar 20 19:29:01 1995  John Harper  (jsh orcrist)
-
-	* text-mode.jl (word-count-area): New function to count the
-	number of words in a region of text, bound to `Meta-=' in the
-	text-mode-keymap.
-
-Fri Jan 13 18:07:56 1995  John Harper  (jsh orcrist)
-
-	* info.jl (info-parse-menu-line): Now ignores spaces between
-	the name of the node and the `::' in a menu line.
-
-Thu Jan 12 16:19:21 1995  John Harper  (jsh orcrist)
-
-	* c-mode.jl (c-backslash-area): General fixes.
-
-	* edit.jl (just-spaces): Doesn't miss the space at the
-	beginning of a line anymore.
-
-Wed Jan 11 14:42:58 1995  John Harper  (jsh orcrist)
-
-	* info.jl (info-visit-file): Command to prompt for a file then
-	load it into Info.
-
-Thu Jan  5 00:03:37 1995  John Harper  (jsh orcrist)
-
-	* loadkeys.jl: `Ctrl-x Ctrl-q' is now the key sequence to
-	toggle read-only-ness
-
-Mon Jan  2 15:32:32 1995  John Harper  (jsh orcrist)
-
-	* loadmenus.jl: Changed the ``Print Keymap'' item to call the
-	describe-keymap command
-
-Tue Dec 27 15:08:14 1994  John Harper  (jsh orcrist)
-
-	* xc.jl (xc-indent-pos): Doesn't recognize do_... as a `do while'
-	statement anymore.	
-
-Sat Dec 24 15:10:38 1994  John Harper  (jsh orcrist)
-
-	* c-mode.jl (c-backward-exp): Hopefully I've fixed the infinite
-	loop which used to happen when the start of some files was reached.
-
-Wed Dec 21 00:18:28 1994  John Harper  (jsh orcrist)
-
-	* c-mode.jl (c-backward-exp): Doesn't get confused when it
-	finds punctuation in the middle of an expression.
-
-	* buffer-menu.jl: The key table now binds `LMB-Off' to `nop' to
-	avoid it getting caught by the unbound-key-hook thing (and
-	being really annoying).	
-
-	* edit.jl (nop): New command, does absolutely nothing.
-
-Tue Dec 13 20:56:11 1994  John Harper  (jsh orcrist)
-
-	* c-mode.jl (c-mode-ctrl-c-keymap): Now this binds `c-backslash-area'
-	to `Ctrl-c Ctrl-\' as it should have done before
-
-Sat Nov 26 18:00:55 1994  John Harper  (jsh orcrist)
-
-	* fill-mode.jl: `RET' is also made to check whether the line
-	needs to be broken, as well as `SPC'.
-
-	* xc.jl (xc-indent-pos): Fixed the regexp used to match goto
-	labels, it now checks the character after the colon to be
-	white space of eol.
-
-Sun Nov 13 19:49:54 1994  John Harper  (jsh orcrist)
-
-	* compile.jl (compile): unless an argument is given the command is
-	*always* prompted for. Whatever the command is that is eventually
-	executed is, it's stored in the `compile-command' variable.
-
-	* buffers.jl (revert-buffer): doesn't ask if you want to revert
-	to the most recent auto-save; use `recover-file' to do that!
-
-	* xc.jl (xc-indent-pos): now indents `{' properly (I fixed a
-	couple of typos -- `exp-ind' for `exp-pos')
-
-Tue Nov  8 09:22:19 1994  John Harper  (jsh orcrist)
-
-	* lisp.jl (require): this can now be called interactively --
-	it prompts for its first argument (the feature symbol).
-
-Mon Nov  7 17:47:43 1994  John Harper  (jsh orcrist)
-
-	* buffer-menu.jl (bm-list-buffers): now prints the mode name
-	properly; i.e. chains through the list of minor mode names,
-	printing each in turn.
-
-	* fill-mode.jl (fill-mode-spc): takes account of the glyph
-	position of the cursor, not the char position. Also the hack to
-	auto indent indented-text-mode buffers properly works even if
-	the previous line wasn't indented at all.
-
-Thu Oct 27 23:24:42 1994  John Harper  (jsh orcrist)
-
-	* asm-mode.jl: removed the `.' command. Also `RET' deletes
-	any trailing TAB or SPC characters from the end of the line it
-	breaks.
-
-Wed Oct 26 17:51:47 1994  John Harper  (jsh orcrist)
-
-	* gdb.jl (gdb): changed `kill-all-buffer-variables' to
-	`kill-all-local-variables' -- now it works!
-
-Sun Oct 23 20:03:38 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl: added some warnings
-
-	* compiler.jl (compile-function): New command
-	
-Fri Oct  7 15:12:56 1994  John Harper  (jsh orcrist)
-
-	* Version 3.2 released
-
-Wed Oct  5 16:31:39 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (transpose-items): now this actually does what it
-	says it does
-
-Tue Oct  4 00:33:37 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (fix-local-variables): new function; scans the
-	end of a newly-loaded buffer for Emacs-style local variable
-	definitions. Called from `open-file'.
-
-Mon Oct  3 17:59:44 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (recover-file): sets the `modified' flag
-
-Sun Oct  2 15:17:26 1994  John Harper  (jsh orcrist)
-
-	* fill-mode.jl (fill-mode-spc): this now auto-indents the newly
-	created line when the major mode is indented-text-mode.
-
-	* xc.jl: many improvements.
-
-	* c-mode.jl (c-forward-exp, c-backward-exp): cpp lines don't
-	count as an expression anymore
-
-Sat Oct  1 16:41:42 1994  John Harper  (jsh orcrist)
-
-	* modes.jl: expression functions now use word syntax if expressions
-	aren't defined in the buffer
-
-Wed Sep 21 15:12:26 1994  John Harper  (jsh orcrist)
-
-	* c-mode.jl (c-forward-exp, c-backward-exp): minor fixups plus
-	cpp lines are now recognised
-
-Tue Sep 13 20:55:14 1994  John Harper  (jsh orcrist)
-
-	* shell.jl: now sets the termcap environment variables correctly
-
-Sat Sep  3 15:23:02 1994  John Harper  (jsh orcrist)
-
-	* gzip.jl (gzip-insert-file): this hooks into `insert-file-hook'
-	so inserted files can be decompressed
-
-	* buffers.jl (insert-file): now calls the hook `insert-file-hook'
-
-	* buffers.jl, gzip.jl: the read-file-hook now has to set the
-	modtime of the buffer
-
-Thu Sep  1 20:12:18 1994  John Harper  (jsh orcrist)
-
-	* ask.jl (y-or-n-p): now resets its values in the proper buffer
-
-Wed Aug 31 20:26:36 1994  John Harper  (jsh orcrist)
-
-	* buffer-menu.jl (bm-select-buffer): now burys the buffer-menu
-	buffer
-
-	* loadkeys.jl, windows.jl (window-closed-hook): since this was
-	renamed (from `close-gadget-hook') it's a good time to put it
-	in a better place
-
-Tue Aug 30 11:05:09 1994  John Harper  (jsh orcrist)
-
-	* help.jl (describe-function): now prints a macro's arguments
-	properly
-
-Tue Aug 23 17:51:19 1994  John Harper  (jsh orcrist)
-
-	* disassembler.jl (disassemble-fun): now knows about interactive
-	declarations
-
-	* compiler.jl, disassembler.jl (op-logxor-2): new opcode
-
-Thu Aug 18 16:29:30 1994  John Harper  (jsh orcrist)
-
-	* shell.jl (shell-start-process): the default output stream
-	is now `(BUFFER . t)' not `BUFFER'
-
-	* edit.jl (set-variable, show-variable): both removed;
-	`set' can be called interactively and `describe-variable'
-	can be used to see the value of a variable
-
-Tue Jul 19 16:56:46 1994  John Harper  (jsh orcrist)
-
-	* lisp.jl (eval-and-print): interactive version of eval
-
-Mon Jul 18 21:45:29 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (transpose-items): new function to swap items of text
-	defined by two functions
-	(transpose-words, transpose-chars): commands using the above; bound
-	to Meta-t and Ctrl-t respectively
-	* modes.jl (transpose-exps): new command, bound to Ctrl-Meta-t
-
-Sun Jul 17 13:04:59 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (just-one-space): renamed to `just-spaces', now
-	takes a COUNT arg; the number of spaces wanted.
-	(no-spaces): new command, bound to Meta-\
-
-Sat Jul 16 17:47:57 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl (compile-file): only selected top-level forms are
-	compiled -- those which may(?) benefit from it
-
-Wed Jul 13 18:19:35 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl: added op-eql
-
-Tue Jul 12 13:06:14 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl: many more opcodes added.
-	* disassembler.jl: synchronised with the above additions
-
-Mon Jul 11 19:50:48 1994  John Harper  (jsh orcrist)
-
-	* c-mode.jl (c-backward-exp): better method of skipping comments;
-	doesn't loop for ever anymore :-)
-
-	* edit.jl: many more commands use the prefix argument now
-	(kill-line): can now kill backwards and uses the prefix-arg to
-	specify the number of lines to kill
-
-Wed Jul  6 19:45:35 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (buffer-list): removed, now in ../src/windows.c
-
-Tue Jul  5 18:19:40 1994  John Harper  (jsh orcrist)
-
-	* ask.jl (ask-yes-or-no): renamed as `yes-or-no-p'
-	(ask-y-or-n): renamed as `y-or-n-p'
-
-Sun Jul  3 15:18:44 1994  John Harper  (jsh orcrist)
-
-	* debug.jl: now uses a (semi-) proper mode `debug-mode'
-
-	* help.jl (describe-function): now prints the name of the function
-	and, if it's not a subr, its argument specification
-
-	* compiler.jl: defconst forms handled (more) properly now
-
-	* All occurrences of `file-length', `file-name', `set-file-name',
-	`file-start', `goto-file-start', `file-end' and `goto-file-end'
-	have been replaced by their new names (see ../src/ChangeLog for
-	more details).
-
-Fri Jul  1 17:52:41 1994  John Harper  (jsh orcrist)
-
-	* prompt.jl (prompt-file-exclude): under UNIX the `.' and `..'
-	directory nodes are ignored
-
-	* info.jl (info-find-node): uses the `inhibit-read-only' variable
-	instead of manually calling `set-buffer-read-only' all the
-	time.
-
-Thu Jun 30 21:59:20 1994  John Harper  (jsh orcrist)
-
-	* buffer-menu.jl: new file
-
-Tue Jun 28 15:03:20 1994  John Harper  (jsh orcrist)
-
-	* help.jl (describe-variable): takes the value of the variable from
-	the buffer which was active when this command is called.
-
-	* shell.jl (shell-whole-line): new option; shell-send-line sends the
-	*whole* line.
-
-Fri Jun 24 21:46:46 1994  John Harper  (jsh orcrist)
-
-	* xc.jl: experimental indentation functions for C mode; these
-	give much better indentation but are a tad slower...
-
-Thu Jun 23 20:33:41 1994  John Harper  (jsh orcrist)
-
-	* All packages which define esc keymaps have had them put into
-	their main keymaps (with each key Meta-qualified).
-
-Tue Jun 21 22:12:29 1994  John Harper  (jsh orcrist)
-
-	* prompt.jl: attempts to only record undo information for user edits,
-	not completions
-
-Sat Jun 18 18:21:31 1994  John Harper  (jsh orcrist)
-
-	* texinfo-mode.jl (texinfo-insert- end): now tries to find
-	what is being ended.
-
-	* c-mode.jl (c-forward-exp, c-backward-exp): expression handling
-
-	* modes.jl (mode-indent-function, indent-area): hooks for
-	doing indentation
-	(mode-forward-exp, mode-backward-exp, forward-exp, backward-exp,
-	kill-exp, backward-kill-exp): expression handling
-
-Thu Jun 16 21:22:56 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (mildly-special-buffer): controls whether kill-buffer
-	will actually nuke a `special' buffer
-
-Wed Jun 15 19:46:55 1994  John Harper  (jsh orcrist)
-
-	* gdb.jl: interface to gdb; highlights the source of the current
-	frame plus some other nice stuff
-
-Mon Jun 13 01:09:09 1994  John Harper  (jsh orcrist)
-
-	* shell.jl: simple interface to a shell subprocess
-
-	* modes.jl (init-mode): tries -*-X-*- before mode-name
-
-	* gzip.jl: provides editing of gzipped files
-
-Sun Jun 12 02:15:18 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (write-file-hook): order of arguments changed (to
-	match read-file-hook
-	(backup-file): new function
-
-	* loadkeys.jl (user-keymap): keymap hung from `Ctrl-c', intended
-	for user bindings
-
-Fri Jun 10 13:58:20 1994  John Harper  (jsh orcrist)
-
-	* latin-1.jl: This now looks like a minor mode. The function
-	`latin-1-mode' toggles the Latin-1 character in *all* buffers.
-
-	* lisp-mode.jl: functions to eval Lisp in a buffer now use sexps
-	not paragraphs
-	(lisp-forward-sexp, lisp-backward-sexp): now understands #<...>
-	style expressions
-	(lisp-indent-pos): now notices when there are no previous sexps to
-	indent against.
-
-	* keymap.jl (read-event): new function
-	(describe-key): interactive command to print the command that is
-	bound to an entered key sequence
-
-Thu Jun  9 22:13:27 1994  John Harper  (jsh orcrist)
-
-	* info.jl: where regexps are made with concat the necessary strings
-	are regexp-quote'd
-
-	* keymap.jl (print-keymap): function to print the contents of
-	a list of keymaps
-
-Wed Jun  8 20:55:36 1994  John Harper  (jsh orcrist)
-
-	* help.jl (describe-variable): now works with unbound variables
-
-Tue Jun  7 20:32:18 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (just-one-space): new command, bound to `ESC SPC'
-
-Mon Jun  6 19:55:58 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (write-file): new backup option `else-backup-by-copying'
-	when it's unsafe to rename the file it's copied instead
-
-	* add-log.jl (log-in-same-day-p): changed `substr' to `substring'
-
-	* init.jl: uses file-concat to make the .jaderc file's path
-
-	* modes.jl (mode-alist): fixed some case confusion
-
-Sun Jun  5 17:53:59 1994  John Harper  (jsh orcrist)
-
-	* lisp-mode.jl (lisp-indent-pos): rewritten, now this works properly!
-
-Sat Jun  4 19:29:19 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (yank-to-mouse): new function, bound to the middle mouse
-	button
-
-	* buffers.jl (bury-buffer): new function
-
-Fri Jun  3 20:41:00 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (kill-string, kill-area, copy-area-as-kill): new functions
-	plus some other functions have been rewritten/created to use them
-	(yank, yank-rectangle): new functions
-
-	* info.jl (info-read-dir): deletes all lines before the first `file:'
-	line
-
-Thu Jun  2 12:29:41 1994  John Harper  (jsh orcrist)
-
-	* Version 3.1 released
-
-Wed Jun  1 21:04:22 1994  John Harper  (jsh orcrist)
-
-	* info.jl (info-read-dir): discards the preamble of all supplementary
-	dir files
-
-Wed May 25 20:52:31 1994  John Harper  (jsh orcrist)
-
-	* lisp-mode.jl (lisp-forward-sexp, lisp-backward-sexp): new functions
-
-Tue May 24 21:25:34 1994  John Harper  (jsh orcrist)
-
-	* disassembler.jl: now uses a lookup table to get the names of
-	opcodes.
-
-	* compiler.jl (compile-file): Compiles top-level forms now (except
-	for defX and require). Also writes a header to the compiled file.
-
-	* compiler.jl: Changed the names of the conditional jump instructions
-
-Mon May 23 19:16:16 1994  John Harper  (jsh orcrist)
-
-	* texinfo-mode.jl: TAB inserts spaces now
-
-	* Changed lots of stuff to cope with coordinate origin at (0,0)
-
-	* info.jl (info-locate-file): now tries the lowercase version of
-	the filename
-
-Sun May 22 23:20:19 1994  John Harper  (jsh orcrist)
-
-	* info.jl (info-read-dir): function to read all `dir' files in the
-	info-directory-list
-
-Sat May 21 19:57:51 1994  John Harper  (jsh orcrist)
-
-	* windows.jl (in-new-window, goto-new-window): new
-
-	* modes.jl: support for inserting comments
-
-	* help.jl (describe-mode): works now
-
-	* asm-mode.jl: new file
-
-Thu May 19 21:40:29 1994  John Harper  (jsh orcrist)
-
-	* fill-mode.jl (fill-mode-spc): deletes the trailing space it leaves.
-	(set-fill-column): now uses the glyph position of the cursor.
-
-Sun May 15 23:14:12 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl (compile-file, compile-directory): now prompt for
-	their argument if necessary. Also new instruction `return'.
-	
-	* replace.jl: new file, user commands for replacing, `replace-all'
-	replaces all occurrences of a regexp after the cursor, and
-	`query-replace' an Emacs style interactive replace. Both these
-	commands work on regexps not strings.
-
-Sat May 14 18:47:31 1994  John Harper  (jsh orcrist)
-
-	* isearch.jl: new file, provides an Emacs'ish incremental search
-
-Thu May 12 20:42:57 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl: bytes no longer have their high-bit set -- this
-	means bigger arguments are possible. Generates forms which
-	call `lisp-code2'.
-
-Wed May 11 00:02:10 1994  John Harper  (jsh orcrist)
-
-	* find-autoloads.jl: reorganised, also now copies any forms
-	after the `;;;###autoload' marker.
-
-Tue May 10 23:28:41 1994  John Harper  (jsh orcrist)
-
-	* init.jl: `loadkeys.jl' is now loaded before `autoload.jl'
-
-Sun May  8 19:39:00 1994  John Harper  (jsh orcrist)
-
-	* info.jl: double-clicking the left mouse button selects menu
-	items and xrefs.
-
-Sat May  7 13:55:37 1994  John Harper  (jsh orcrist)
-
-	* latin-1.jl: new file, makes the default glyph-table use Latin1
-	character set
-
-Fri May  6 22:25:03 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (save-file-as): tried to delete the auto-save'd file
-	itself, failed if it didn't exist
-
-Tue May  3 20:48:04 1994  John Harper  (jsh orcrist)
-
-	* Changed occurrences of `goto' to `goto-char' or `goto-glyph'
-
-Mon May	 2 10:37:04 1994  John Harper  (jsh orcrist)
-
-	* debug.jl: changed keybindings
-
-	* lisp.jl (format-string): renamed as format-to-string
-	(prin1-to-string): new function
-
-Sun May	 1 09:45:16 1994  John Harper  (jsh orcrist)
-
-	* prompt.jl (prompt-complete-filename): Discards files which match
-	the regexp `prompt-file-exclude'
-
-	* info.jl (info-parse-ref): didn't work if the *Note was the last
-	thing on the line
-
-	* find-autoloads.jl: new file
-
-	* help.jl: `documentation' and `document-var' functions moved
-	here from lisp.jl
-
-	* lisp.jl (require): optional second arg, the file to load the
-	feature from
-
-Sat Apr 30 21:40:11 1994  John Harper  (jsh orcrist)
-
-	* loadsyms.jl: renamed as autoload.jl, more sensible
-
-	* compiler.jl (compile-directory): new arg, EXCLUDE-LIST
-	(compile-lisp-lib): takes advantage of the above new arg to
-	compile-directory
-
-Fri Apr 29 23:20:58 1994  John Harper  (jsh orcrist)
-
-	* info.jl (info-parse-menu-line): *another* bug fixed
-
-	* server.jl: code to handle client/server stuff
-
-Fri Apr 29 11:32:56 1994  J.S.Harper  (jsh raven ukc ac uk)
-
-	* prompt.jl: You can now double click the lmb to select a completion
-
-Thu Apr 28 21:15:30 1994  John Harper  (jsh orcrist)
-
-	* info.jl (info-parse-menu-line): didn't allow punctuation in
-	file names
-
-Thu Apr 28 10:59:05 1994  J.S.Harper  (jsh raven ukc ac uk)
-
-	* texinfo-mode.jl (texinfo-mode): now calls `text-mode-hook'
-
-	* init.jl: now loads files properly
-
-Thu Apr 28 01:20:58 1994  John Harper  (jsh orcrist)
-
-	* text-mode.jl (text-mode-indent-tab): this works properly now
-
-Wed Apr 27 22:34:14 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (overwrite-mode): moved from overwrite-mode.jl
-
-Tue Apr 26 01:04:18 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (auto-save-mode): minor-mode interface to toggle
-	auto-saving buffers.
-
-	* fill-mode.jl: new minor-mode
-
-Mon Apr 25 20:57:51 1994  John Harper  (jsh orcrist)
-
-	* overwrite-mode.jl: new minor-mode (the first!)
-
-	* modes.jl (add-minor-mode, remove-minor-mode): support for minor-
-	modes.
-
-	* buffers.jl (write-file): remembers the modes of the file and resets
-	them after the file has been saved.
-
-Sun Apr 24 11:33:30 1994  John Harper  (jsh orcrist)
-
-	* edit.jl (capitalize-word): new function, bound to `ESC c'
-
-	* *-mode.jl: new way of working to allow the user to just call the
-	mode's function, possibly when a different mode is already in effect.
-	Every mode must check for a non-nil `major-mode-kill' when it starts,
-	calling this function if necessary.
-
-	* text-mode.jl: new file
-
-	* help.jl (describe-variable): says whether var is buffer-local,
-	window-local or global, and whether it's a constant.
-
-	* add-log.jl: fixed problem of null strings not being treated as
-	directories. Also added some defvar's to override the stuff that
-	gets put into the header.
-
-	* prompt.jl: When prompting for a file now copes with `~' characters
-
-	* disassembler.jl (disassemble): sets `disk-tab' as well as `screen-tab'
-
-	* info.jl (info-read-tags): didn't close the file it opened, this
-	is now done in an unwind-protect for safety.
-
-Sat Apr 23 20:06:15 1994  John Harper  (jsh orcrist)
-
-	* lisp.jl (defvar, defconst): these are now special-forms
-
-	* compiler.jl (comp-compile-file-form): now does macro-expansion
-	of top-level forms.
-
-	* info.jl (info-has-tags-p): new var, set when a tag-table is loaded.
-	If a file doesn't have a tag-table the whole file is loaded. This is
-	mainly so the `dir' file can be edited by hand.
-	(info-directory-list): replaces `info-directory', a list of directorys
-	to search.
-	(info-parse-menu): didn't like punctuation in comments
-	(info-goto-link, info-next-link, info-prev-link): for moving around
-	menus and refs, bound to RET, TAB and SHIFT-TAB respectively.
-	(info-parse-ref): new function to extract the guts of an xref
-	(info-follow-ref): no menu yet, just finds the next ref
-
-Wed Apr 20 16:02:51 1994  John Harper  (jsh orcrist)
-
-	* Version 3.0 released
-
-Mon Apr 18 13:27:55 1994  John Harper  (jsh deep)
-
-	* c-mode.jl (c-indent-pos-empty): handles opening braces on the same
-	line as the keyword now
-
-Sun Apr 17 19:40:05 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl (write-buffer): now copes better with backup files,
-	if `backup-by-copying' is non-nil the file is copied not renamed.
-	Else, the file is only renamed if it won't damage anything.
-
-Sat Apr 16 14:04:45 1994  John Harper  (jsh orcrist)
-
-	* info.jl (info-find-node): Protection against info-file being
-	modified while we're viewing it, if this happens it reloads the
-	tags table.
-
-	* info.jl (info): Doesn't always show `(dir)' if no NODE-NAME is
-	given, uses the currently loaded node if one exists.
-
-	* Added license notices at the beginning of all Lisp files
-
-	* All instances of the string `jed' have been changed to `jade'. I
-	decided to change its name since there is at least one other editor
-	called jed.
-
-Fri Apr 15 16:14:48 1994  John Harper  (jsh deep)
-
-	* init.jl: Now sets the status line while initialising. Also
-	loads `loadmenus' if necessary.
-
-	* loadmenus.jl: New file, sets up a small menu strip, but only
-	on Amigas
-
-Tue Apr 12 14:54:57 1994  John Harper  (jsh orcrist)
-
-	* lisp.jl (add-command-arg, clear-command-args, command-prompt): new
-	functions -- provide a method of giving arguments to commands invoked
-	with `ESC x'
-
-	* edit.jl (mark-paragraph): now works properly on a paragraph boundary
-
-	* prompt.jl: Now keeps a list of the buffers it's used so they
-	can be recycled.
-
-	* edit.jl: Rewrote word handling, now it works :)
-
-Mon Apr 11 16:12:05 1994  John Harper  (jsh orcrist)
-
-	* All occurrences of `make-*-variable' changed to `set-*-variable'
-
-	* c-mode.jl, texinfo-mode.jl: Doesn't bother to redefine
-	`paragraph-start' anymore.
-
-	* edit.jl (prev-paragraph): Now goes to the start of the current
-	paragraph, or start of previous one if already at start.
-	(mark-paragraph): Marks line which ends paragraph as well.
-	(paragraph-start): Deleted
-
-	* lisp-mode.jl: Got rid of `lisp-interactive-mode' entry point, the
-	only difference it had with `lisp-mode' was the name!
-
-Fri Apr	 8 20:22:10 1994  John Harper  (jsh orcrist)
-
-	* loadsyms.jl: Removed `void-symbol-function'
-
-Tue Apr 05 19:34:24 1994  John Harper  (jsh deep)
-
-	* buffers.jl: New option `amiga-use-file-req-p' -- makes find-file
-	and friends use the ASL file requester
-
-Sun Apr	 3 17:12:21 1994  John Harper  (jsh orcrist)
-
-	* add-log.jl: Now asks for the directory whose ChangeLog should
-	be updated.
-
-Thu Mar 24 09:51:07 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl (comp-compile-body): Fixed for null lists (it
-	wasn't incrementing the stack counter).
-	(comp-compile-file-form): Now copes with doc-strings in defvar and
-	defconst (ie, they're written to disk if necessary).
-
-Sat Mar 19 03:45:03 1994  John Harper  (jsh orcrist)
-
-	* info.jl: Braindead support for viewing info files
-
-Sat Mar 12 22:25:36 1994  John Harper  (jsh orcrist)
-
-	* compile.jl: Renamed `grep' to `grep-buffer'. New function
-	`grep' which executes the program grep.
-	* compile.jl: Error descriptions are now stored in the error-list
-	* compile.jl: Some new options to `start-compile-command'
-
-Mon Mar	 7 21:27:25 1994  John Harper  (jsh orcrist)
-
-	* compiler.jl: New options `comp-eval-constants-p' and
-	`comp-write-docs-p'. New function `compile-lisp-lib'. General
-	support for writing doc strings to the file.
-
-Sat Mar	 5 01:21:35 1994  John Harper  (jsh orcrist)
-
-	* edit.jl: Various upcase/downcase functions to use the stuff
-	noted below.
-
-Fri Mar	 4 18:55:38 1994  John Harper  (jsh orcrist)
-
-	* loadkeys.jl: Lots of changes.
-
-	* compile.jl: Variables to control extraction of error details.
-	Also takes note of the directory that the compilation was run in.
-
-	* c-mode.jl: Now handles if (etc) constructs which have a space
-	between the keyword and the parenthesised expression.
-
-Sun Feb 27 20:48:56 1994  John Harper  (jsh orcrist)
-
-	* edit.jl: paragraph handling functions, `next-paragraph',
-	`prev-paragraph', `paragraph-start', `mark-paragraph' and variable
-	`paragraph-regexp'.
-
-Sat Feb 19 00:45:53 1994  John Harper  (jsh orcrist)
-
-	* debug.jl: Support for debugging errors and getting
-	backtraces.
-
-Sat Feb 12 01:28:01 1994  John Harper  (jsh orcrist)
-
-	* c-mode.jl: Now handles `do' keyword properly.
-
-Thu Feb 10 03:15:12 1994  John Harper  (jsh orcrist)
-
-	* c-mode.jl: Now copes with empty lines and preprocessor
-	directives. Still fairly braindead though.
-
-Sun Feb	 6 01:25:15 1994  John Harper  (jsh orcrist)
-
-	* help.jl: No longer uses recursive-edit, just some deft
-	keymap manipulation.
-
-Sat Feb	 5 21:36:22 1994  John Harper  (jsh orcrist)
-
-	* buffers.jl, windows.jl: Made each window have its own
-	`buffer-list'. This means some new functions, `add-buffer' and
-	`remove-buffer'.
-	* windows.jl: `window-list' variable -- list of all open windows.
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index 2d06220..8d50388 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -26,7 +26,7 @@ INSTALL_FILES = *.jl *.jlc
 INSTALL_DIRS := . rep rep rep/lang rep/vm rep/vm/compiler rep/io \
 	rep/io/file-handlers rep/io/file-handlers/remote rep/i18n \
 	rep/data rep/www rep/util rep/mail rep/threads rep/system \
-	rep/net rep/test rep/xml scheme unscheme
+	rep/net rep/test rep/xml
 
 all : lisp
 
diff --git a/lisp/rep/user.jl b/lisp/rep/user.jl
index 097cf9b..6ba1758 100644
--- a/lisp/rep/user.jl
+++ b/lisp/rep/user.jl
@@ -51,13 +51,6 @@
 	      (setq arg (car command-line-args))
 	      (setq command-line-args (cdr command-line-args))
 	      (do-load arg))
-	     ((member arg '("-s" "--scheme"))
-	      (setq arg (car command-line-args))
-	      (setq command-line-args (cdr command-line-args))
-	      (setq batch-mode t)
-	      (if (file-exists-p arg)
-		  (structure () (open scheme) (load arg '() 1 1))
-		(structure () (open scheme) (load arg))))
 	     ((string= arg "--check")
 	      (require 'rep.test.framework)
 	      (run-self-tests-and-exit))
@@ -80,7 +73,6 @@ where OPTIONS are any of:
     --load FILE		load the file of Lisp forms called FILE
     -l FILE
 
-    --scheme FILE	load the file of Scheme forms called FILE
     -s FILE		 (implies --batch mode)
 
     --check		run self tests and exit
diff --git a/lisp/rep/vm/compiler.jl b/lisp/rep/vm/compiler.jl
index 0ac45a6..3f7af8d 100644
--- a/lisp/rep/vm/compiler.jl
+++ b/lisp/rep/vm/compiler.jl
@@ -68,8 +68,6 @@
 
   ;; map languages to compiler modules
   (put 'rep 'compiler-module 'rep.vm.compiler.rep)
-  (put 'scheme 'compiler-module 'rep.vm.compiler.scheme)
-  (put 'unscheme 'compiler-module 'rep.vm.compiler.unscheme)
   (put 'no-lang 'compiler-module 'rep.vm.compiler.no-lang)
 
   ;; since we default to rep langauge..
diff --git a/lisp/rep/vm/compiler/scheme.jl b/lisp/rep/vm/compiler/scheme.jl
deleted file mode 100644
index b3c6173..0000000
--- a/lisp/rep/vm/compiler/scheme.jl
+++ /dev/null
@@ -1,327 +0,0 @@
-#| scheme.jl -- inliners for compiling Scheme code
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 librep; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-;; XXX this is pretty much untested..
-
-(declare (unsafe-for-call/cc))
-
-(define-structure rep.vm.compiler.scheme ()
-
-    (open rep
-	  rep.lang.doc
-	  scheme.syntax-funs
-	  rep.vm.compiler.modules
-	  rep.vm.compiler.utils
-	  rep.vm.compiler.basic
-	  rep.vm.compiler.inline
-	  rep.vm.compiler.lap
-	  rep.vm.compiler.bindings
-	  rep.vm.compiler.rep
-	  rep.vm.bytecodes)
-
-  ;; List of side-effect-free functions. They should always return the
-  ;; same value when given the same inputs. Used when constant folding.
-  (define constant-functions
-    '(not eqv? eq? equal? boolean? pair? car cdr caar cadr cdar cddr caaar
-      caadr cadar caddr cdaar cdadr cddar cdddr null? list? length?
-      list-tail list-ref memq memv member assq assv assoc symbol?
-      symbol->string string->symbol number? complex? real? rational?
-      integer? exact? inexact? = < > <= >= zero? positive? negative?
-      odd? even? max min + * - / abs quotient remainder modulo gcd
-      lcm numerator denominator floor ceiling truncate round rationalize
-      exp log sin cos tan asin acos atan sqrt expt exact->inexact
-      inexact->exact string->number number->string char=? char<? char>?
-      char<=? char>=? char-ci=? char-ci<? char-ci>? char-ci<=? char-ci>=?
-      char-alphabetic? char-numeric? char-whitespace? char-upper-case?
-      char-lower-case? char->integer integer->char char-upcase char-downcase
-      string? string-length string-ref string=? string-ci=? string<?
-      string>? string<=? string>=? string-ci<? string-ci>? string-ci<=?
-      string-ci>=? vector? vector-length vector-ref procedure?))
-
-  ;; List of symbols, when the name of the function called by a top-level
-  ;; form is one of these that form is compiled.
-  (define top-level-compiled
-    '(if cond when unless let let* letrec begin and or case))
-
-
-;;; pass 1 support
-
-  (defun pass-1 (forms)
-    (let loop ((rest forms)
-	       (out '()))
-      (if (null rest)
-	  (nreverse out)
-	(loop (cdr rest) (cons (do-pass-1 (car rest)) out)))))
-
-  (defun do-pass-1 (form)
-    (unless (or (eq (car form) 'define) (memq (car form) top-level-compiled))
-      (setq form (compiler-macroexpand
-		  form (lambda (in out)
-			 (or (eq in out) (memq (car out) '(define begin))
-			     (memq (car out) top-level-compiled))))))
-    (case (car form)
-      ((define)
-       (let ((name (cadr form)))
-	 (cond ((symbolp name)
-		(remember-lexical-variable (compiler-constant-value name)))
-	       ((and (consp name) (symbolp (car name)))
-		(remember-function (car name) (cdr name)))
-	       (t (compiler-error
-		   "invalid define statement: `%s'" form)))))
-
-      ((begin)
-       (setq form (cons 'begin (mapcar do-pass-1 (cdr form))))))
-
-    form)
-
-
-;;; pass 2 support
-
-  (defun pass-2 (forms)
-    (let loop ((rest forms)
-	       (out '()))
-      (if (null rest)
-	  (nreverse out)
-	(loop (cdr rest) (cons (do-pass-2 (car rest)) out)))))
-
-  (defun do-pass-2 (form)
-    (cond ((eq (car form) 'define)
-	   (setq form (compile-define form)))
-	  ((eq (car form) 'begin)
-	   (cons 'begin (mapcar do-pass-2 (cdr form))))
-	  ((memq (car form) top-level-compiled)
-	   (setq form (compile-form form))))
-    form)
-
-  ;; XXX this is broken, e.g.: (define ((foo a) b) (+ a b))
-  (defun compile-define (form)
-    (let ((name (cadr form)))
-      (if (symbolp name)
-	  `(define ,name
-	     ,(if (memq (car (nth 2 form)) top-level-compiled)
-		  (compile-form (nth 2 form))
-		(nth 2 form)))
-	`(define ,(car name)
-	   (make-closure
-	    ,(compile-lambda `(lambda ,(cdr name) ,@(cddr form)) (car name))
-	    ',(car name))))))
-
-
-;;; source code transformations
-
-  ;; tells the constant-folder which functions can be removed
-  (defun foldablep (name)
-    (memq name constant-functions))
-
-
-;;; special compilers
-
-  ;; module compilers from compiler-modules
-  (put 'structure 'scheme-compile-fun compile-structure)
-  (put 'define-structure 'scheme-compile-fun compile-define-structure)
-  (put 'structure-ref 'scheme-compile-fun compile-structure-ref)
-
-  (put 'quote 'scheme-compile-fun (get 'quote 'rep-compile-fun))
-  (put '\#lambda 'scheme-compile-fun (get 'lambda 'rep-compile-fun))
-  (put '\#progn 'scheme-compile-fun (get 'progn 'rep-compile-fun))
-
-  (defun compile-set! (form)
-    (let ((sym (nth 1 form))
-	  (val (nth 2 form)))
-      (compile-form-1 val)
-      (emit-insn '(dup))
-      (increment-stack)
-      (emit-varset sym)
-      (note-binding-modified sym)
-      (decrement-stack)))
-  (put 'set! 'scheme-compile-fun compile-set!)
-
-  (put '\#define 'scheme-compile-fun (get '%define 'rep-compile-fun))
-
-  (defun compile-\#test (form)
-    (compile-form-1 (cadr form))
-    (emit-insn '(scm-test)))
-  (put '\#test 'scheme-compile-fun compile-\#test)
-
-  ;; this function is used to scan-out inner defines so that scheme let*
-  ;; and letrec forms can be compiled by the standard rep  translators
-  (defun compile-let-form (form return-follows)
-    (let loop ((body (nthcdr 2 form))
-	       (header '()))
-      (if (eq (caar body) 'define)
-	  (loop (cdr body) (cons (parse-define (car body)) header))
-	((get (car form) 'rep-compile-fun)
-	 (if header
-	     `(,(car form) ,(cadr form)
-	        (letrec ,(nreverse header) ,@body))
-	   form) return-follows))))
-
-  ;; compile let* specially to coalesce all bindings into a single frame
-  (put 'let* 'scheme-compile-fun compile-let-form)
-
-  ;; let can be compiled straight from its macro definition
-
-  ;; compile letrec specially to handle tail recursion elimination
-  (put 'letrec 'scheme-compile-fun compile-let-form)
-
-  (put '\#cond 'scheme-compile-fun (get 'cond 'rep-compile-fun))
-
-  ;; adapted from rep.vm.compiler.rep
-  (defun compile-case (form #!optional return-follows)
-    (let
-	((end-label (make-label)))
-      (setq form (cdr form))
-      (unless form
-	(compiler-error "no key value in case statement"))
-      ;; XXX if key is constant optimise case away..
-      (compile-form-1 (car form))
-      (setq form (cdr form))
-      (while (consp form)
-	(unless (consp form)
-	  (compiler-error "badly formed clause in case statement"))
-	(let
-	    ((cases (caar form))
-	     (forms (cdar form))
-	     (next-label (make-label)))
-	  (cond ((consp cases)
-		 (emit-insn '(dup))
-		 (increment-stack)
-		 (if (consp (cdr cases))
-		     ;; >1 possible case
-		     (progn
-		       (compile-constant cases)
-		       (emit-insn '(memql)))
-		   ;; only one case, use eql
-		   (compile-constant (car cases))
-		   (emit-insn '(eql)))
-		 (decrement-stack)
-		 (emit-insn `(jn ,next-label))
-		 (decrement-stack))
-		((not (eq cases 'else))
-		 (compiler-error
-		  "badly formed clause in case statement")))
-	  (compile-body forms return-follows)
-	  (decrement-stack)
-	  (emit-insn `(jmp ,end-label))
-	  (fix-label next-label)
-	  (setq form (cdr form))))
-      (increment-stack)
-      (fix-label end-label)
-      (emit-insn '(swap))
-      (emit-insn '(pop))))
-  (put 'case 'scheme-compile-fun compile-case)
-
-  (define (compile-list-tail form)
-    ((get 'nthcdr 'rep-compile-fun) `(nthcdr ,(nth 2 form) ,(nth 1 form))))
-  (put 'list-tail 'scheme-compile-fun compile-list-tail)
-  
-  (define (compile-list-ref form)
-    ((get 'nth 'rep-compile-fun) `(nth ,(nth 2 form) ,(nth 1 form))))
-  (put 'list-ref 'scheme-compile-fun compile-list-ref)
-  
-  (defun do-predicate (form)
-    (let* ((rep-fun (or (get (car form) 'scheme-compile-rep) (car form)))
-	   (rep-compiler (get rep-fun 'rep-compile-fun)))
-      (rep-compiler (cons rep-fun (cdr form)))))
-
-  (defun compile-predicate (form)
-    (do-predicate form)
-    (emit-insn '(test-scm)))
-
-  (defun compile-nil-predicate (form)
-    (do-predicate form)
-    (emit-insn '(test-scm-f)))
-
-  ;; set properties of scheme functions that are pseudonyms of rep fns
-  (mapc (lambda (cell)
-	  (if (symbolp cell)
-	      (put cell 'scheme-compile-fun (get cell 'rep-compile-fun))
-	    (put (car cell) 'scheme-compile-fun
-		 (get (cdr cell) 'rep-compile-fun))
-	    (let ((op (get (cdr cell) 'rep-compile-opcode)))
-	      (when op
-		(put (car cell) 'rep-compile-opcode op)))))
-	'(list list* cons car cdr apply
-	  caar cadr cdar cddr caddr cadddr
-	  (set-car! . rplaca)
-	  (set-cdr! . rplacd)
-	  (string-set! . aset)
-	  (vector-set! . aset)
-	  (string-ref . aref)
-	  (vector-ref . aref)
-	  length
-	  (string-length . length)
-	  (vector-length . length)
-	  - + * / remainder modulo quotient max min floor ceiling
-	  truncate round exp log sin cos tan sqrt expt
-	  (string-copy . copy-sequence)
-	  (vector-copy . copy-sequence)))
-
-  ;; set properties of scheme predicates that are just rep fns with
-  ;; booleans mapped from rep->scheme
-  (mapc (lambda (cell)
-	  (if (symbolp cell)
-	      (put cell 'scheme-compile-fun compile-predicate)
-	    (put (car cell) 'scheme-compile-fun compile-predicate)
-	    (put (car cell) 'scheme-compile-rep (cdr cell))))
-	'((eqv? . eql)
-	  (eq? . eq)
-	  (equal? . equal)
-	  (pair? . consp)
-	  (null? . null)
-	  (symbol? . symbolp)
-	  (number? . numberp)
-	  = < > <= >=
-	  (zero? . zerop)
-	  (char=? . =)
-	  (char<? . <)
-	  (char>? . >)
-	  (char<=? . <=)
-	  (char>=? . >=)
-	  (string? . stringp)
-	  (string=? . =)
-	  (string<? . <)
-	  (string>? . >)
-	  (string<=? . <=)
-	  (string>=? . >=)
-	  (vector? . vectorp)
-	  (procedure? . functionp)))
-
-  ;; set properties of scheme predicates that are just rep fns with
-  ;; nil mapped to #f
-  (mapc (lambda (cell)
-	  (if (symbolp cell)
-	      (put cell 'scheme-compile-fun compile-nil-predicate)
-	    (put (car cell) 'scheme-compile-fun compile-nil-predicate)
-	    (put (car cell) 'scheme-compile-rep (cdr cell))))
-	'(memq memv member assq assoc))
-
-  ;; setup properties to tell the compiler where to look for symbols
-  ;; in the `scheme'  package
-  (unless (get 'scheme 'compiler-handler-property)
-    (put 'scheme 'compiler-handler-property 'scheme-compile-fun)
-    (put 'scheme 'compiler-transform-property 'scheme-compile-transform)
-    (put 'scheme 'compiler-sequencer 'begin)
-    (put 'scheme 'compiler-pass-1 pass-1)
-    (put 'scheme 'compiler-pass-2 pass-2)
-    (put 'scheme 'compiler-foldablep foldablep)))
diff --git a/lisp/rep/vm/compiler/unscheme.jl b/lisp/rep/vm/compiler/unscheme.jl
deleted file mode 100644
index e8709b1..0000000
--- a/lisp/rep/vm/compiler/unscheme.jl
+++ /dev/null
@@ -1,123 +0,0 @@
-#| unscheme.jl -- inliners for compiling unScheme code
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 librep; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure rep.vm.compiler.unscheme ()
-
-    (open rep
-	  rep.lang.doc
-	  rep.vm.compiler.modules
-	  rep.vm.compiler.utils
-	  rep.vm.compiler.basic
-	  rep.vm.compiler.inline
-	  rep.vm.compiler.lap
-	  rep.vm.compiler.bindings
-	  rep.vm.compiler.rep
-	  rep.vm.compiler.scheme
-	  rep.vm.bytecodes)
-
-
-;;; special compilers
-
-  ;; module compilers from compiler-modules
-  (put 'structure 'unscheme-compile-fun compile-structure)
-  (put 'define-structure 'unscheme-compile-fun compile-define-structure)
-  (put 'structure-ref 'unscheme-compile-fun compile-structure-ref)
-
-  (put 'quote 'unscheme-compile-fun (get 'quote 'rep-compile-fun))
-  (put '\#lambda 'unscheme-compile-fun (get 'lambda 'rep-compile-fun))
-  (put '\#progn 'unscheme-compile-fun (get 'progn 'rep-compile-fun))
-
-  (put 'set! 'unscheme-compile-fun (get 'set! 'scheme-compile-fun))
-  (put '\#define 'unscheme-compile-fun (get '%define 'rep-compile-fun))
-
-  ;; compile let* specially to coalesce all bindings into a single frame
-  (put 'let* 'unscheme-compile-fun (get 'let* 'scheme-compile-fun))
-
-  ;; let can be compiled straight from its macro definition
-
-  ;; compile letrec specially to handle tail recursion elimination
-  (put 'letrec 'unscheme-compile-fun (get 'letrec 'scheme-compile-fun))
-
-  (put '\#cond 'unscheme-compile-fun (get 'cond 'rep-compile-fun))
-  (put 'case 'unscheme-compile-fun (get 'case 'scheme-compile-fun))
-
-  (put 'list-tail 'unscheme-compile-fun (get 'scheme-compile-fun 'list-tail))
-  (put 'list-ref 'unscheme-compile-fun (get 'scheme-compile-fun 'list-ref))
-  
-  ;; set properties of scheme functions that are pseudonyms of rep fns
-  (mapc (lambda (cell)
-	  (if (symbolp cell)
-	      (put cell 'unscheme-compile-fun (get cell 'rep-compile-fun))
-	    (put (car cell) 'unscheme-compile-fun
-		 (get (cdr cell) 'rep-compile-fun))
-	    (let ((op (get (cdr cell) 'rep-compile-opcode)))
-	      (when op
-		(put (car cell) 'rep-compile-opcode op)))))
-	'(list list* cons car cdr apply
-	  caar cadr cdar cddr caddr cadddr
-	  (set-car! . rplaca)
-	  (set-cdr! . rplacd)
-	  (string-set! . aset)
-	  (vector-set! . aset)
-	  (string-ref . aref)
-	  (vector-ref . aref)
-	  length
-	  (string-length . length)
-	  (vector-length . length)
-	  - + * / remainder modulo quotient max min floor ceiling
-	  truncate round exp log sin cos tan sqrt expt
-	  (string-copy . copy-sequence)
-	  (vector-copy . copy-sequence)
-	  (eqv? . eql)
-	  (eq? . eq)
-	  (equal? . equal)
-	  (pair? . consp)
-	  (null? . null)
-	  (symbol? . symbolp)
-	  (number? . numberp)
-	  = < > <= >=
-	  (zero? . zerop)
-	  (char=? . =)
-	  (char<? . <)
-	  (char>? . >)
-	  (char<=? . <=)
-	  (char>=? . >=)
-	  (string? . stringp)
-	  (string=? . =)
-	  (string<? . <)
-	  (string>? . >)
-	  (string<=? . <=)
-	  (string>=? . >=)
-	  (vector? . vectorp)
-	  (procedure? . functionp)
-	  memq memv member assq assoc))
-
-  ;; setup properties to tell the compiler where to look for symbols
-  ;; in the `unscheme'  package
-  (unless (get 'unscheme 'compiler-handler-property)
-    (put 'unscheme 'compiler-handler-property 'unscheme-compile-fun)
-    (put 'unscheme 'compiler-transform-property 'unscheme-compile-transform)
-    (put 'unscheme 'compiler-sequencer 'begin)
-    (put 'unscheme 'compiler-pass-1 (get 'scheme 'compiler-pass-1))
-    (put 'unscheme 'compiler-pass-2 (get 'scheme 'compiler-pass-2))
-    (put 'unscheme 'compiler-foldablep (get 'scheme 'compiler-foldablep))))
diff --git a/lisp/scheme.jl b/lisp/scheme.jl
deleted file mode 100644
index e45a36a..0000000
--- a/lisp/scheme.jl
+++ /dev/null
@@ -1,123 +0,0 @@
-#| scheme.jl -- foolish attempt to run Scheme code
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-;; the only things really missing from r5rs are macros and multiple
-;; values, r4rs should be reasonably okay
-
-;; other warts:
-
-;;   (eq? 'FOO 'foo) => #f, guile also fails here
-;;   `(..) => (backquote ..) not (quasiquote ..)
-;;   no separate character type
-;;   reader doesn't handle numbers like: 15#
-
-;; to test this, run the repl, then: ",new test" and ",open scheme"
-
-(define-structure scheme (export
-
-			  #f #t
-
-			  ;; syntax
-
-			  quote lambda if set! cond case and or
-			  let let* letrec begin do delay define
-
-			  ;; built-in procedures
-
-			  not eqv? eq? equal? boolean?
-
-			  pair? cons car cdr set-car! set-cdr!
-			  caar cadr cdar cddr
-			  caaar caadr cadar caddr
-			  cdaar cdadr cddar cdddr
-			  caaaar caaadr caadar caaddr
-			  cadaar cadadr caddar cadddr
-			  cdaaar cdaadr cdadar cdaddr
-			  cddaar cddadr cdddar cddddr
-
-			  null? list? list length append reverse
-			  list-tail list-ref memq memv member
-			  assq assv assoc
-
-			  symbol? symbol->string string->symbol
-
-			  number? complex? real? rational? integer?
-			  exact? inexact? = < > <= >= zero? positive?
-			  negative? odd? even? max min + * - /
-			  abs quotient remainder modulo gcd lcm
-			  numerator denominator floor ceiling
-			  truncate round rationalize exp log sin cos
-			  tan asin acos atan sqrt expt exact->inexact
-			  inexact->exact string->number number->string
-
-			  char? char=? char<? char>? char<=? char>=?
-			  char-ci=? char-ci<? char-ci>? char-ci<=?
-			  char-ci>=? char-alphabetic? char-numeric?
-			  char-whitespace? char-upper-case?
-			  char-lower-case? char->integer integer->char
-			  char-upcase char-downcase
-
-			  string? make-string string string-length
-			  string-ref string-set! string=? string-ci=?
-			  string<? string>? string<=? string>=?
-			  string-ci<? string-ci>? string-ci<=?
-			  string-ci>=? substring string-append
-			  string->list list->string string-copy
-			  string-fill!
-
-			  vector? make-vector vector vector-length
-			  vector-ref vector-set! vector->list
-			  list->vector vector-fill!
-
-			  procedure? apply map for-each force
-			  \#make-promise call-with-current-continuation
-			  call/cc dynamic-wind eval
-			  scheme-report-environment null-environment
-			  interaction-environment
-
-			  call-with-input-file call-with-output-file
-			  input-port? output-port? current-input-port
-			  current-output-port with-input-from-file
-			  with-output-to-file open-input-file
-			  open-output-file close-input-port
-			  close-output-port
-
-			  read read-char peek-char eof-object?
-			  write display newline write-char load
-
-			  ;; exported local kludges
-			  \#cond \#setq \#define \#progn \#test \#lambda
-			  backquote list* %load-suffixes)
-  ((access rep)
-   (open scheme.utils
-	 scheme.syntax
-	 scheme.data
-	 scheme.misc))
-
-  (rep#%define \#cond rep#cond)
-  (rep#%define \#setq rep#setq)
-  (rep#%define \#define rep#%define)
-  (rep#%define \#progn rep#progn)
-  (rep#%define \#lambda rep#lambda)
-  (rep#%define backquote rep#backquote)
-  (rep#%define list* rep#list*))
diff --git a/lisp/scheme/data.jl b/lisp/scheme/data.jl
deleted file mode 100644
index 6629224..0000000
--- a/lisp/scheme/data.jl
+++ /dev/null
@@ -1,264 +0,0 @@
-#| data.jl -- data type functions
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure scheme.data
-
-    (export not eqv? eq? equal? boolean?
-
-	    pair? cons car cdr set-car! set-cdr!
-	    caar cadr cdar cddr
-	    caaar caadr cadar caddr
-	    cdaar cdadr cddar cdddr
-	    caaaar caaadr caadar caaddr
-	    cadaar cadadr caddar cadddr
-	    cdaaar cdaadr cdadar cdaddr
-	    cddaar cddadr cdddar cddddr
-
-	    null? list? list length append reverse
-	    list-tail list-ref memq memv member
-	    assq assv assoc
-
-	    symbol? symbol->string string->symbol
-	    
-	    number? complex? real? rational? integer?
-	    exact? inexact? = < > <= >= zero? positive?
-	    negative? odd? even? max min + * - /
-	    abs quotient remainder modulo gcd lcm
-	    numerator denominator floor ceiling
-	    truncate round rationalize exp log sin cos
-	    tan asin acos atan sqrt expt exact->inexact
-	    inexact->exact string->number number->string
-	    
-	    char? char=? char<? char>? char<=? char>=?
-	    char-ci=? char-ci<? char-ci>? char-ci<=?
-	    char-ci>=? char-alphabetic? char-numeric?
-	    char-whitespace? char-upper-case?
-	    char-lower-case? char->integer integer->char
-	    char-upcase char-downcase
-	    
-	    string? make-string string string-length
-	    string-ref string-set! string=? string-ci=?
-	    string<? string>? string<=? string>=?
-	    string-ci<? string-ci>? string-ci<=?
-	    string-ci>=? substring string-append
-	    string->list list->string string-copy
-	    string-fill!
-	    
-	    vector? make-vector vector vector-length
-	    vector-ref vector-set! vector->list
-	    list->vector vector-fill!)
-
-    ((open rep scheme.utils)
-     (access rep))
-
-;;; equivalence
-
-  (define (not obj)
-    (if (\#test obj) #f #t))
-
-  (define eqv? (make-predicate eql))
-  (define eq? (make-predicate eq))
-  (define equal? (make-predicate equal))
-
-  (define boolean? (make-predicate (lambda (obj) (rep#memq obj '(#f #t)))))
-
-;;; pairs (cons cells)
-
-  (define pair? (make-predicate consp))
-
-  (define set-car! rplaca)
-  (define set-cdr! rplacd)
-
-;;; lists
-
-  (define null? (make-predicate null))
-
-  (define (list? x)
-    (let loop ((slow x)
-	       (fast (cdr x)))
-      (cond ((null slow) #t)
-	    ((rep#not (consp slow)) #f)
-	    ((eq slow fast) #f)
-	    (t (loop (cdr slow) (cddr fast))))))
-
-  (define (list-tail lst i) (nthcdr i lst))
-  (define (list-ref lst i) (nth i lst))
-
-  (define memq (make-nil-predicate rep#memq))
-  (define memv (make-nil-predicate rep#memql))
-  (define member (make-nil-predicate rep#member))
-
-  (define assq (make-nil-predicate rep#assq))
-
-  (define (assv obj alist)
-    (let loop ((rest alist))
-      (cond ((null rest) #f)
-	    ((eql (caar rest) obj) (car rest))
-	    (t (loop (cdr rest))))))
-
-  (define assoc (make-nil-predicate rep#assoc))
-
-;;; symbols
-
-  (define (symbol? arg)
-    (cond ((rep#memq arg '(#f #t)) #f)
-	  ((symbolp arg) #t)
-	  (t #f)))
-    
-  (define symbol->string symbol-name)
-
-  (define (string->symbol name)
-    (if (string= name "nil")
-	'nil
-      (or (find-symbol name)
-	  ;; The copying is needed to pass test.scm..
-	  (intern (copy-sequence name)))))
-
-;;; numbers
-
-  (define number? (make-predicate numberp))
-  (define (complex? obj)
-    (declare (unused obj))
-    #t)
-  (define real? (make-predicate realp))
-  (define rational? (make-predicate rationalp))
-  (define integer? (make-predicate integerp))
-
-  (define exact? (make-predicate exactp))
-  (define inexact? (make-predicate inexactp))
-
-  (define = (make-predicate rep#=))
-  (define < (make-predicate rep#<))
-  (define > (make-predicate rep#>))
-  (define <= (make-predicate rep#<=))
-  (define >= (make-predicate rep#>=))
-
-  (define zero? (make-predicate zerop))
-  (define positive? (make-predicate positivep))
-  (define negative? (make-predicate negativep))
-  (define odd? (make-predicate oddp))
-  (define even? (make-predicate evenp))
-
-  (define (rationalize x y)
-    (declare (unused x y))
-    (error "rationalize is unimplemented"))
-
-  (define string->number (make-nil-predicate rep#string->number))
-
-;;; characters
-
-  (define char? (make-predicate fixnump))
-
-  (define char=? =)
-  (define char<? <)
-  (define char>? >)
-  (define char<=? <=)
-  (define char>=? >=)
-
-  ;; XXX slow...
-  (define (char-ci=? . args) (apply char=? (mapcar char-upcase args)))
-  (define (char-ci<? . args) (apply char<? (mapcar char-upcase args)))
-  (define (char-ci>? . args) (apply char>? (mapcar char-upcase args)))
-  (define (char-ci<=? . args) (apply char<=? (mapcar char-upcase args)))
-  (define (char-ci>=? . args) (apply char>=? (mapcar char-upcase args)))
-
-  (define char-alphabetic? (make-predicate alpha-char-p))
-  (define char-numeric? (make-predicate digit-char-p))
-  (define char-whitespace? (make-predicate space-char-p))
-  (define char-upper-case? (make-predicate upper-case-p))
-  (define char-lower-case? (make-predicate lower-case-p))
-
-  (define char->integer identity)
-  (define integer->char identity)
-
-;;; strings
-
-  (define string? (make-predicate stringp))
-
-  (define string concat)
-  (define string-length length)
-  (define string-ref aref)
-  (define string-set! aset)
-
-  (define string=? =)
-  (define string<? <)
-  (define string>? >)
-  (define string<=? <=)
-  (define string>=? >=)
-
-  (define string-ci=? (make-predicate string-equal))
-  (define string-ci<? (make-predicate string-lessp))
-  (define string-ci>? (make-predicate
-		       (lambda args
-			 (rep#not (or (apply string-equal args)
-				      (apply string-lessp args))))))
-  (define string-ci<=? (make-predicate
-			(lambda args
-			  (or (apply string-lessp args)
-			      (apply string-equal args)))))
-  (define string-ci>=? (make-predicate
-			(lambda args
-			  (rep#not (apply string-lessp args)))))
-
-  (define string-append concat)
-
-  (define (string->list string)
-    (let loop ((i (1- (length string)))
-	       (out nil))
-      (if (rep#>= i 0)
-	  (loop (1- i) (cons (aref string i) out))
-	out)))
-
-  (define list->string concat)
-
-  (define string-copy copy-sequence)
-
-  (define (string-fill! string char)
-    (let loop ((i (1- (length string))))
-      (cond ((rep#>= i 0)
-	     (aset string i char)
-	     (loop (1- i))))))
-
-;;; vectors
-
-  (define vector? (make-predicate vectorp))
-
-  (define vector-length length)
-  (define vector-ref aref)
-  (define vector-set! aset)
-
-  (define (vector->list vect)
-    (let loop ((i (1- (length vect)))
-	       (out nil))
-      (if (rep#>= i 0)
-	  (loop (1- i) (cons (aref vect i) out))
-	out)))
-
-  (define (list->vector lst)
-    (apply vector lst))
-
-  (define (vector-fill! vect char)
-    (let loop ((i (1- (length vect))))
-      (cond ((rep#>= i 0)
-	     (aset vect i char)
-	     (loop (1- i)))))))
diff --git a/lisp/scheme/misc.jl b/lisp/scheme/misc.jl
deleted file mode 100644
index 91daea6..0000000
--- a/lisp/scheme/misc.jl
+++ /dev/null
@@ -1,177 +0,0 @@
-#| misc.jl -- miscellaneous scheme support
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure scheme.misc
-
-    (export procedure? apply map for-each force
-	    \#make-promise call-with-current-continuation
-	    call/cc dynamic-wind eval
-	    scheme-report-environment null-environment
-	    interaction-environment
-
-	    call-with-input-file call-with-output-file
-	    input-port? output-port? current-input-port
-	    current-output-port with-input-from-file
-	    with-output-to-file open-input-file
-	    open-output-file close-input-port
-	    close-output-port
-
-	    read read-char peek-char eof-object?
-	    write display newline write-char
-	    load %load-suffixes)
-
-    ((open rep
-	   scheme.utils
-	   rep.io.files
-	   rep.data.datums)
-     (access rep.io.streams))
-
-;;; control features
-
-  (define procedure? (make-predicate functionp))
-
-  (define (map proc . lists)
-    (if (null (cdr lists))
-	(mapcar proc (car lists))
-      (let loop ((out nil)
-		 (in lists))
-	(if (car in)
-	    (loop (cons (apply proc (mapcar car in)) out)
-		  (mapcar cdr in))
-	  (nreverse out)))))
-
-  (define (for-each proc . lists)
-    (if (null (cdr lists))
-	(mapc proc (car lists))
-      (let loop ((in lists))
-	(when (car in)
-	  (apply proc (mapcar car in))
-	  (loop (mapcar cdr in))))))
-
-  (define (force promise) (promise))
-
-  (define (\#make-promise thunk)
-    (let ((result-ready nil)
-	  result)
-      (lambda ()
-	(unless result-ready
-	  (let ((x (thunk)))
-	    (unless result-ready
-	      (setq result-ready t)
-	      (setq result x))))
-	result)))
-
-  (define (eval form . env)
-    (declare (unused env))
-    (rep#eval form))
-
-  ;; XXX support these (and in the above)
-  (define (scheme-report-environment version)
-    (declare (unused version))
-    #f)
-  (define (null-environment version)
-    (declare (unused version))
-    #f)
-  (define (interaction-environment) #f)
-
-;;; input and output
-
-  (define (call-with-input-file name proc)
-    (let ((file (open-input-file name)))
-      (prog1
-	  (proc file)
-	(close-file file))))
-
-  (define (call-with-output-file name proc)
-    (let ((file (open-output-file name)))
-      (prog1
-	  (proc file)
-	(close-file file))))
-
-  (define input-port? (make-predicate rep.io.streams#input-stream-p))
-  (define output-port? (make-predicate rep.io.streams#output-stream-p))
-
-  (define (current-input-port) standard-input)
-  (define (current-output-port) standard-output)
-
-  (define (with-input-from-file name thunk)
-    (let ((standard-input (open-input-file name)))
-      (prog1
-	  (thunk)
-	(close-file standard-input))))
-
-  (define (with-output-to-file name thunk)
-    (let ((standard-output (open-output-file name)))
-      (prog1
-	  (thunk)
-	(close-file standard-output))))
-
-  (define (open-input-file name) (open-file name 'read))
-  (define (open-output-file name) (open-file name 'write))
-
-  (define (close-input-port f)
-    (unless (and (filep f) (null (file-binding f)))
-      close-file))
-  (define close-output-port close-input-port)
-
-;;; input
-
-  (define eof-object (make-datum nil 'scheme-eof-object))
-  (define-datum-printer 'scheme-eof-object
-			(lambda (x s)
-			  (declare (unused x))
-			  (rep.io.streams#write s "#<scheme-eof>")))
-
-  (define (read #!optional port)
-    (condition-case nil
-	(rep.io.streams#read port)
-      (end-of-stream eof-object)))
-
-  (define (read-char #!optional port)
-    (or (rep.io.streams#read-char (or port standard-input)) eof-object))
-
-  (define (peek-char #!optional port)
-    (or (rep.io.streams#peek-char (or port standard-input)) eof-object))
-
-  (define eof-object? (make-predicate (lambda (obj) (eq obj eof-object))))
-
-;;; output
-
-  (define (write obj #!optional port)
-    (rep.io.streams#format (or port standard-output) "%S" obj))
-
-  (define (display obj #!optional port)
-    (rep.io.streams#format (or port standard-output) "%s" obj))
-
-  (define (newline #!optional port)
-    (rep.io.streams#write (or port standard-output) #\newline))
-
-  (define (write-char char #!optional port)
-    (rep.io.streams#write (or port standard-output) char))
-
-;;; system interface
-
-  ;; load-file doesn't search path or add suffixes. So it fits r5rs
-  (define load load-file)
-
-  (define %load-suffixes '(".scm" . ".scmc")))
diff --git a/lisp/scheme/syntax-funs.jl b/lisp/scheme/syntax-funs.jl
deleted file mode 100644
index e4a7d72..0000000
--- a/lisp/scheme/syntax-funs.jl
+++ /dev/null
@@ -1,174 +0,0 @@
-#| syntax-funs.jl -- syntax expansion functions
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure scheme.syntax-funs
-
-    (export parse-define
-	    expand-lambda
-	    expand-if
-	    expand-set!
-	    expand-cond
-	    expand-case
-	    expand-and
-	    expand-or
-	    expand-let
-	    expand-let*
-	    expand-letrec
-	    expand-do
-	    expand-delay
-	    expand-define)
-
-    (open rep)
-
-;;; syntax
-
-  ;; returns (VAR BODY) suitable for putting in a letrec
-  (define (parse-define form)
-    (let loop ((name (cadr form))
-	       (body (caddr form)))
-      (if (symbolp name)
-	  `(,name ,body)
-	(loop (car name) `(lambda ,(cdr name) ,body)))))
-
-  (define (expand-lambda vars . body)
-    (let (header)
-      (while (eq (caar body) 'define)
-	(setq header (cons (parse-define (car body)) header))
-	(setq body (cdr body)))
-     (if header
-	 `(\#lambda ,vars (letrec ,(nreverse header) ,@body))
-       `(\#lambda ,vars ,@body))))
-
-  (define (expand-if test consequent . alternative)
-    (cond ((cdr alternative)
-	   (error "Scheme `if' only takes one else form"))
-	  (alternative
-	   `(\#cond ((\#test ,test) ,consequent)
-		   ('t ,(car alternative))))
-	  (t `(\#cond ((\#test ,test) ,consequent)))))
-
-  (define (expand-set! variable expression)
-    `(\#setq ,variable ,expression))
-
-  (define (expand-cond . args)
-    (let ((first (car args))
-	  (rest (cdr args)))
-      (cond ((null args) '#f)
-	    ((eq (car first) 'else)
-	     `(begin ,@(cdr first)))
-	    ((eq (cadr first) '=>)
-	     (let ((tem (gensym)))
-	       `(let ((,tem ,(car first)))
-		  (if ,tem
-		      (,(caddr first) ,tem)
-		    ,@(and rest `((cond ,@rest)))))))
-	    (t `(if ,(car first)
-		    (begin ,@(cdr first))
-		  ,@(and rest `((cond ,@rest))))))))
-
-  (define (expand-case key . clauses)
-    (let ((tem (gensym)))
-      (let loop ((body nil)
-		 (rest clauses))
-	(if rest
-	    (let ((this (car rest)))
-	      (loop (cons (cond ((eq (car this) 'else) `(else ,@(cdr this)))
-				((cdar this)
-				 `((memv ,tem ',(car this)) ,@(cdr this)))
-				(t `((eqv? ,tem ',(caar this)) ,@(cdr this))))
-			  body)
-		    (cdr rest)))
-	  `(let ((,tem ,key))
-	     (cond ,@(nreverse body)))))))
-
-  (define (expand-or . args)
-    (cond
-     ((null args) '#f)
-     ((null (cdr args)) (car args))
-     (t (let ((tem (gensym)))
-	  `((lambda (,tem)
-	      (if ,tem ,tem (or ,@(cdr args))))
-	    ,(car args))))))
-
-  (define (expand-and . args)
-    (cond
-     ((null args) '#t)
-     ((null (cdr args)) (car args))
-     (t `(cond (,(car args) (and ,@(cdr args))) (else #f)))))
-
-  (define (expand-let . args)
-    (let (fun vars values)
-      (when (and (car args) (symbolp (car args)))
-	;; named let
-	(setq fun (car args))
-	(setq args (cdr args)))
-      (setq vars (mapcar car (car args)))
-      (setq values (mapcar cadr (car args)))
-      (if fun
-	  ;; use the progn so the compiler notices the inner letrec
-	  ;; (else it will get macroexpanded away too soon)
-	  `(begin (letrec
-		      ((,fun (lambda ,vars ,@(cdr args))))
-		    (,fun ,@values)))
-	`((lambda ,vars ,@(cdr args)) ,@values))))
-
-  (define (expand-let* bindings . body)
-    (if (null bindings)
-	`((lambda () ,@body))
-      `((lambda (,(caar bindings))
-	  (let* ,(cdr bindings) ,@body))
-	,(cadar bindings))))
-
-  (define (expand-letrec bindings . body)
-    (let ((vars (mapcar car bindings))
-	  (setters (mapcar (lambda (x) `(set! ,@x)) bindings))
-	  (initial (make-list (length bindings) ''())))
-      (let loop ((header '())
-		 (body body))
-	(if (eq (caar body) 'define)
-	    (loop (cons (parse-define (car body)) header) (cdr body))
-	  (if header
-	      `((lambda ,vars ,@setters
-		  (letrec ,(nreverse header) ,@body)) ,@initial)
-	    `((lambda ,vars ,@setters ,@body) ,@initial))))))
-
-  (define (expand-do vars test . body)
-    (let ((tem (gensym)))
-      `(let ,tem ,(mapcar (lambda (var)
-			    (list (car var) (cadr var))) vars)
-	 (if ,(car test)
-	     (begin ,@(cdr test))
-	   (begin
-	    ,@body
-	    (,tem ,@(mapcar (lambda (var)
-			      (if (cddr var)
-				  (caddr var)
-				(car var))) vars)))))))
-
-  (define (expand-delay expression)
-    `(\#make-promise (lambda () ,expression)))
-
-  (define (expand-define . args)
-    (if (symbolp (car args))
-	(cons '\#define args)
-      `(define ,(caar args) (lambda ,(cdar args) ,@(cdr args))))))
diff --git a/lisp/scheme/syntax.jl b/lisp/scheme/syntax.jl
deleted file mode 100644
index ba790fb..0000000
--- a/lisp/scheme/syntax.jl
+++ /dev/null
@@ -1,62 +0,0 @@
-#| scheme-syntax.jl -- syntax macros
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-;; ugh! rep's macros really suck when used across module boundaries..
-
-(define-structure scheme.syntax
-
-    (export quote lambda if set! cond case
-	    and or let let* letrec begin do
-	    delay define)
-
-    (open rep scheme.syntax-funs)
-
-;;; syntax
-
-  (defmacro lambda args (apply expand-lambda args))
-
-  (defmacro if args (apply expand-if args))
-
-  (defmacro set! args (apply expand-set! args))
-
-  (defmacro cond args (apply expand-cond args))
-
-  (defmacro case args (apply expand-case args))
-
-  (defmacro or args (apply expand-or args))
-
-  (defmacro and args (apply expand-and args))
-
-  (defmacro let args (apply expand-let args))
-
-  (defmacro let* args (apply expand-let* args))
-
-  (defmacro letrec args (apply expand-letrec args))
-
-  (defmacro begin forms (cons '\#progn forms))
-
-  (defmacro do args (apply expand-do args))
-
-  (defmacro delay args (apply expand-delay args))
-
-  (defmacro define args (apply expand-define args)))
diff --git a/lisp/scheme/utils.jl b/lisp/scheme/utils.jl
deleted file mode 100644
index 11d85fe..0000000
--- a/lisp/scheme/utils.jl
+++ /dev/null
@@ -1,48 +0,0 @@
-#| utils.jl -- misc functions
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure scheme.utils
-
-    (export #f #t \#test
-	    make-predicate
-	    make-nil-predicate)
-
-    (open rep)
-
-  (defconst #f #f)
-  (defconst #t #t)
-
-  ;; given a scheme boolean, convert to a rep boolean
-  (define (\#test value) (not (eq value #f)))
-
-  ;; create a scheme predicate from the rep predicate PRED
-  (define (make-predicate pred)
-    (lambda args
-      (if (apply pred args) #t #f)))
-
-  ;; create a scheme `pseudo-predicate' from the rep `pseudo-predicate'
-  ;; PRED. `pseudo-predicate' means that it returns false or an
-  ;; interesting non-false value
-  (define (make-nil-predicate pred)
-    (lambda args
-      (cond ((apply pred args)) (t #f)))))
diff --git a/lisp/unscheme.jl b/lisp/unscheme.jl
deleted file mode 100644
index d54a7c7..0000000
--- a/lisp/unscheme.jl
+++ /dev/null
@@ -1,115 +0,0 @@
-#| unscheme.jl -- cross between scheme and rep
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 librep; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-;; The idea here is to make a Scheme-like language that fits better
-;; with the rep environment. This is not, and does not claim to be,
-;; standards compliant Scheme!
-
-;; The various aberrations that have been introduced are:
-
-;;  #f => ()
-;;  #t => t
-;;  (eq? #f '()) => #t
-;;  (boolean? '()) => #t
-;;  (list? #f) => #t
-;;  (eq? 'FOO 'foo) => #f
-;;  no separate character type
-
-;; and maybe others. But there is a reason for this -- `unscheme' code
-;; is able to painlessly call rep code, and vice versa, whereas
-;; programs using the stricter `scheme' module cannot do this. It also
-;; enables programs to compile down to more efficient byte-code
-
-(define-structure unscheme
-
-    (export
-
-     #f #t
-
-     ;; syntax
-
-     quote lambda if set! cond case and or let let* letrec begin do
-     delay define
-
-     ;; built-in procedures
-
-     not eqv? eq? equal? boolean?
-
-     pair? cons car cdr set-car! set-cdr! caar cadr cdar cddr caaar
-     caadr cadar caddr cdaar cdadr cddar cdddr caaaar caaadr caadar
-     caaddr cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr
-     cddaar cddadr cdddar cddddr
-
-     null? list? list length append reverse list-tail list-ref memq
-     memv member assq assv assoc
-
-     symbol? symbol->string string->symbol
-
-     number? complex? real? rational? integer? exact? inexact? = < > <=
-     >= zero? positive? negative? odd? even? max min + * - / abs
-     quotient remainder modulo gcd lcm numerator denominator floor
-     ceiling truncate round rationalize exp log sin cos tan asin acos
-     atan sqrt expt exact->inexact inexact->exact string->number
-     number->string
-
-     char? char=? char<? char>? char<=? char>=? char-ci=? char-ci<?
-     char-ci>? char-ci<=? char-ci>=? char-alphabetic? char-numeric?
-     char-whitespace? char-upper-case? char-lower-case? char->integer
-     integer->char char-upcase char-downcase
-
-     string? make-string string string-length string-ref string-set!
-     string=? string-ci=? string<? string>? string<=? string>=?
-     string-ci<? string-ci>? string-ci<=? string-ci>=? substring
-     string-append string->list list->string string-copy string-fill!
-
-     vector? make-vector vector vector-length vector-ref vector-set!
-     vector->list list->vector vector-fill!
-
-     procedure? apply map for-each force \#make-promise
-     call-with-current-continuation call/cc dynamic-wind eval
-     scheme-report-environment null-environment interaction-environment
-
-     call-with-input-file call-with-output-file input-port?
-     output-port? current-input-port current-output-port
-     with-input-from-file with-output-to-file open-input-file
-     open-output-file close-input-port close-output-port
-
-     read read-char peek-char eof-object? write display newline
-     write-char load
-
-     ;; exported local kludges
-     \#cond \#setq \#define \#progn \#lambda backquote list*
-     %load-suffixes)
-
-    ((access rep)
-     (open unscheme.syntax
-	   unscheme.data
-	   unscheme.misc))
-
-  (rep#%define \#cond rep#cond)
-  (rep#%define \#setq rep#setq)
-  (rep#%define \#define rep#%define)
-  (rep#%define \#progn rep#progn)
-  (rep#%define \#lambda rep#lambda)
-  (rep#%define backquote rep#backquote)
-  (rep#%define list* rep#list*))
diff --git a/lisp/unscheme/data.jl b/lisp/unscheme/data.jl
deleted file mode 100644
index 583530c..0000000
--- a/lisp/unscheme/data.jl
+++ /dev/null
@@ -1,248 +0,0 @@
-#| data.jl -- data type functions
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure unscheme.data
-
-    (export #f #t not eqv? eq? equal? boolean?
-
-	    pair? cons car cdr set-car! set-cdr!
-	    caar cadr cdar cddr
-	    caaar caadr cadar caddr
-	    cdaar cdadr cddar cdddr
-	    caaaar caaadr caadar caaddr
-	    cadaar cadadr caddar cadddr
-	    cdaaar cdaadr cdadar cdaddr
-	    cddaar cddadr cdddar cddddr
-
-	    null? list? list length append reverse
-	    list-tail list-ref memq memv member
-	    assq assv assoc
-
-	    symbol? symbol->string string->symbol
-	    
-	    number? complex? real? rational? integer?
-	    exact? inexact? = < > <= >= zero? positive?
-	    negative? odd? even? max min + * - /
-	    abs quotient remainder modulo gcd lcm
-	    numerator denominator floor ceiling
-	    truncate round rationalize exp log sin cos
-	    tan asin acos atan sqrt expt exact->inexact
-	    inexact->exact string->number number->string
-	    
-	    char? char=? char<? char>? char<=? char>=?
-	    char-ci=? char-ci<? char-ci>? char-ci<=?
-	    char-ci>=? char-alphabetic? char-numeric?
-	    char-whitespace? char-upper-case?
-	    char-lower-case? char->integer integer->char
-	    char-upcase char-downcase
-	    
-	    string? make-string string string-length
-	    string-ref string-set! string=? string-ci=?
-	    string<? string>? string<=? string>=?
-	    string-ci<? string-ci>? string-ci<=?
-	    string-ci>=? substring string-append
-	    string->list list->string string-copy
-	    string-fill!
-	    
-	    vector? make-vector vector vector-length
-	    vector-ref vector-set! vector->list
-	    list->vector vector-fill!)
-
-    ((open rep)
-     (access rep))
-
-  (defconst #f ())
-  (defconst #t t)
-
-;;; equivalence
-
-  (define eqv? eql)
-  (define eq? eq)
-  (define equal? equal)
-
-  (define (boolean? obj) (and (memq obj '(() t #f #t)) #t))
-
-;;; pairs (cons cells)
-
-  (define pair? consp)
-
-  (define set-car! rplaca)
-  (define set-cdr! rplacd)
-
-;;; lists
-
-  (define null? null)
-
-  (define (list? x)
-    (let loop ((slow x)
-	       (fast (cdr x)))
-      (cond ((null slow) #t)
-	    ((not (consp slow)) #f)
-	    ((eq slow fast) #f)
-	    (t (loop (cdr slow) (cddr fast))))))
-
-  ;; XXX return nil if I > (length LST)
-  (define (list-tail lst i) (nthcdr i lst))
-  (define (list-ref lst i) (nth i lst))
-
-  (define memv memql)
-
-  (define (assv obj alist)
-    (let loop ((rest alist))
-      (cond ((null rest) #f)
-	    ((eql (caar rest) obj) (car rest))
-	    (t (loop (cdr rest))))))
-
-;;; symbols
-
-  (define (symbol? arg)
-    (cond ((memq arg '(#f #t)) #f)
-	  ((symbolp arg) #t)
-	  (t #f)))
-    
-  (define symbol->string symbol-name)
-
-  (define (string->symbol name)
-    (if (string= name "nil")
-	'nil
-      (or (find-symbol name)
-	  ;; The copying is needed to pass test.scm..
-	  (intern (copy-sequence name)))))
-
-;;; numbers
-
-  (define number? numberp)
-  (define (complex? obj)
-    (declare (unused obj))
-    #t)
-  (define real? realp)
-  (define rational? rationalp)
-  (define integer? integerp)
-
-  (define exact? exactp)
-  (define inexact? inexactp)
-
-  (define zero? zerop)
-  (define positive? positivep)
-  (define negative? negativep)
-  (define odd? oddp)
-  (define even? evenp)
-
-  (define (rationalize x y)
-    (declare (unused x y))
-    (error "rationalize is unimplemented"))
-
-;;; characters
-
-  (define char? fixnump)
-
-  (define char=? =)
-  (define char<? <)
-  (define char>? >)
-  (define char<=? <=)
-  (define char>=? >=)
-
-  ;; XXX slow...
-  (define (char-ci=? . args) (apply char=? (mapcar char-upcase args)))
-  (define (char-ci<? . args) (apply char<? (mapcar char-upcase args)))
-  (define (char-ci>? . args) (apply char>? (mapcar char-upcase args)))
-  (define (char-ci<=? . args) (apply char<=? (mapcar char-upcase args)))
-  (define (char-ci>=? . args) (apply char>=? (mapcar char-upcase args)))
-
-  (define char-alphabetic? alpha-char-p)
-  (define char-numeric? digit-char-p)
-  (define char-whitespace? space-char-p)
-  (define char-upper-case? upper-case-p)
-  (define char-lower-case? lower-case-p)
-
-  (define char->integer identity)
-  (define integer->char identity)
-
-;;; strings
-
-  (define string? stringp)
-
-  (define string concat)
-  (define string-length length)
-  (define string-ref aref)
-  (define string-set! aset)
-
-  (define string=? =)
-  (define string<? <)
-  (define string>? >)
-  (define string<=? <=)
-  (define string>=? >=)
-
-  (define string-ci=? string-equal)
-  (define string-ci<? string-lessp)
-  (define string-ci>? (lambda args
-			(not (or (apply string-equal args)
-				 (apply string-lessp args)))))
-  (define string-ci<=? (lambda args
-			 (or (apply string-lessp args)
-			     (apply string-equal args))))
-  (define string-ci>=? (lambda args
-			 (not (apply string-lessp args))))
-
-  (define string-append concat)
-
-  (define (string->list string)
-    (let loop ((i (1- (length string)))
-	       (out nil))
-      (if (>= i 0)
-	  (loop (1- i) (cons (aref string i) out))
-	out)))
-
-  (define list->string concat)
-
-  (define string-copy copy-sequence)
-
-  (define (string-fill! string char)
-    (let loop ((i (1- (length string))))
-      (cond ((>= i 0)
-	     (aset string i char)
-	     (loop (1- i))))))
-
-;;; vectors
-
-  (define vector? vectorp)
-
-  (define vector-length length)
-  (define vector-ref aref)
-  (define vector-set! aset)
-
-  (define (vector->list vect)
-    (let loop ((i (1- (length vect)))
-	       (out nil))
-      (if (>= i 0)
-	  (loop (1- i) (cons (aref vect i) out))
-	out)))
-
-  (define (list->vector lst)
-    (apply vector lst))
-
-  (define (vector-fill! vect char)
-    (let loop ((i (1- (length vect))))
-      (cond ((>= i 0)
-	     (aset vect i char)
-	     (loop (1- i)))))))
diff --git a/lisp/unscheme/misc.jl b/lisp/unscheme/misc.jl
deleted file mode 100644
index dab5560..0000000
--- a/lisp/unscheme/misc.jl
+++ /dev/null
@@ -1,172 +0,0 @@
-#| misc.jl -- miscellaneous scheme support
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure unscheme.misc
-
-    (export procedure? apply map for-each force
-	    \#make-promise call-with-current-continuation
-	    call/cc dynamic-wind eval
-	    scheme-report-environment null-environment
-	    interaction-environment
-
-	    call-with-input-file call-with-output-file
-	    input-port? output-port? current-input-port
-	    current-output-port with-input-from-file
-	    with-output-to-file open-input-file
-	    open-output-file close-input-port
-	    close-output-port
-
-	    read read-char peek-char eof-object?
-	    write display newline write-char
-	    load %load-suffixes)
-
-    ((open rep
-	   rep.io.files
-	   rep.data.datums)
-     (access rep.io.streams))
-
-;;; control features
-
-  (define procedure? functionp)
-
-  (define (map proc . lists)
-    (if (null (cdr lists))
-	(mapcar proc (car lists))
-      (let loop ((out nil)
-		 (in lists))
-	(if (car in)
-	    (loop (cons (apply proc (mapcar car in)) out)
-		  (mapcar cdr in))
-	  (nreverse out)))))
-
-  (define (for-each proc . lists)
-    (if (null (cdr lists))
-	(mapc proc (car lists))
-      (let loop ((in lists))
-	(when (car in)
-	  (apply proc (mapcar car in))
-	  (loop (mapcar cdr in))))))
-
-  (define (force promise) (promise))
-
-  (define (\#make-promise thunk)
-    (let ((result-ready nil)
-	  result)
-      (lambda ()
-	(unless result-ready
-	  (let ((x (thunk)))
-	    (unless result-ready
-	      (setq result-ready t)
-	      (setq result x))))
-	result)))
-
-  ;; XXX support these
-  (define (scheme-report-environment version)
-    (declare (unused version))
-    nil)
-  (define (null-environment version)
-    (declare (unused version))
-    nil)
-  (define (interaction-environment) nil)
-
-;;; input and output
-
-  (define (call-with-input-file name proc)
-    (let ((file (open-input-file name)))
-      (prog1
-	  (proc file)
-	(close-file file))))
-
-  (define (call-with-output-file name proc)
-    (let ((file (open-output-file name)))
-      (prog1
-	  (proc file)
-	(close-file file))))
-
-  (define input-port? rep.io.streams#input-stream-p)
-  (define output-port? rep.io.streams#output-stream-p)
-
-  (define (current-input-port) standard-input)
-  (define (current-output-port) standard-output)
-
-  (define (with-input-from-file name thunk)
-    (let ((standard-input (open-input-file name)))
-      (prog1
-	  (thunk)
-	(close-file standard-input))))
-
-  (define (with-output-to-file name thunk)
-    (let ((standard-output (open-output-file name)))
-      (prog1
-	  (thunk)
-	(close-file standard-output))))
-
-  (define (open-input-file name) (open-file name 'read))
-  (define (open-output-file name) (open-file name 'write))
-
-  (define (close-input-port f)
-    (unless (and (filep f) (null (file-binding f)))
-      close-file))
-  (define close-output-port close-input-port)
-
-;;; input
-
-  (define eof-object (make-datum nil 'scheme-eof-object))
-  (define-datum-printer 'scheme-eof-object
-			(lambda (x s)
-			  (declare (unused x))
-			  (rep.io.streams#write s "#<scheme-eof>")))
-
-  (define (read #!optional port)
-    (condition-case nil
-	(rep.io.streams#read port)
-      (end-of-stream eof-object)))
-
-  (define (read-char #!optional port)
-    (or (rep.io.streams#read-char (or port standard-input)) eof-object))
-
-  (define (peek-char #!optional port)
-    (or (rep.io.streams#peek-char (or port standard-input)) eof-object))
-
-  (define eof-object? (lambda (obj) (eq obj eof-object)))
-
-;;; output
-
-  (define (write obj #!optional port)
-    (rep.io.streams#format (or port standard-output) "%S" obj))
-
-  (define (display obj #!optional port)
-    (rep.io.streams#format (or port standard-output) "%s" obj))
-
-  (define (newline #!optional port)
-    (rep.io.streams#write (or port standard-output) #\newline))
-
-  (define (write-char char #!optional port)
-    (rep.io.streams#write (or port standard-output) char))
-
-;;; system interface
-
-  ;; load-file doesn't search path or add suffixes. So it fits r5rs
-  (define load load-file)
-
-  (define %load-suffixes '(".scm" . ".scmc")))
diff --git a/lisp/unscheme/syntax-funs.jl b/lisp/unscheme/syntax-funs.jl
deleted file mode 100644
index f69e5f2..0000000
--- a/lisp/unscheme/syntax-funs.jl
+++ /dev/null
@@ -1,52 +0,0 @@
-#| syntax-funs.jl -- syntax expansion functions
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-(define-structure unscheme.syntax-funs
-
-    (export expand-lambda
-	    expand-if
-	    expand-set!
-	    expand-cond
-	    expand-case
-	    expand-and
-	    expand-or
-	    expand-let
-	    expand-let*
-	    expand-letrec
-	    expand-do
-	    expand-delay
-	    expand-define)
-
-    ((open rep
-	   scheme.syntax-funs)
-     (access unscheme.data))
-
-;;; syntax
-
-  (define (expand-if test consequent . alternative)
-    (cond ((cdr alternative)
-	   (error "Scheme `if' only takes one else form"))
-	  (alternative
-	   `(\#cond (,test ,consequent)
-		    ('t ,(car alternative))))
-	  (t `(\#cond (,test ,consequent))))))
diff --git a/lisp/unscheme/syntax.jl b/lisp/unscheme/syntax.jl
deleted file mode 100644
index ec7bc07..0000000
--- a/lisp/unscheme/syntax.jl
+++ /dev/null
@@ -1,62 +0,0 @@
-#| scheme-syntax.jl -- syntax macros
-
-   $Id$
-
-   Copyright (C) 2000 John Harper <john dcs warwick ac uk>
-
-   This file is part of librep.
-
-   librep 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.
-
-   librep 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 Jade; see the file COPYING.  If not, write to
-   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-|#
-
-;; ugh! rep's macros really suck when used across module boundaries..
-
-(define-structure unscheme.syntax
-
-    (export quote lambda if set! cond case
-	    and or let let* letrec begin do
-	    delay define)
-
-    (open rep unscheme.syntax-funs)
-
-;;; syntax
-
-  (defmacro lambda args (apply expand-lambda args))
-
-  (defmacro if args (apply expand-if args))
-
-  (defmacro set! args (apply expand-set! args))
-
-  (defmacro cond args (apply expand-cond args))
-
-  (defmacro case args (apply expand-case args))
-
-  (defmacro or args (apply expand-or args))
-
-  (defmacro and args (apply expand-and args))
-
-  (defmacro let args (apply expand-let args))
-
-  (defmacro let* args (apply expand-let* args))
-
-  (defmacro letrec args (apply expand-letrec args))
-
-  (defmacro begin forms (cons '\#progn forms))
-
-  (defmacro do args (apply expand-do args))
-
-  (defmacro delay args (apply expand-delay args))
-
-  (defmacro define args (apply expand-define args)))
diff --git a/man/news.texi b/man/news.texi
index d11448d..7d9ba51 100644
--- a/man/news.texi
+++ b/man/news.texi
@@ -3,6 +3,13 @@
 @appendix News
 @cindex News
 
+ heading 0.90.0
+
+ itemize @bullet
+
+ item Remove scheme and unscheme modules
+ end itemize
+
 @heading 0.17.4
 
 @itemize @bullet
diff --git a/src/ChangeLog b/src/ChangeLog
deleted file mode 100644
index 472ffc0..0000000
--- a/src/ChangeLog
+++ /dev/null
@@ -1,7882 +0,0 @@
-2007-11-02  John Harper  <jsh unfactored org>
-
-	* values.c, lispmach.h, unix_processes.c, rep-md5.c, streams.c,
-	message.c, lisp.c, numbers.c, rep-remote.c, gettext.c,
-	regexp.c, unix_dl.c, rep_subrs.h, sockets.c, rep_lisp.h,
-	unix_main.c, unix_files.c, rep_regexp.h, tables.c, lispcmds.c,
-	find.c, main.c, symbols.c, misc.c: fix about a thousand
-	compiler warnings by doing s/u_char/char/ in a number of places
-	(in some other places cast back to u_char* to correctly convert
-	characters to integers)
-
-2007-11-02  John Harper  <jsh unfactored org>
-
-	* src/rep_subrs.h, src/unix_main.c: allow apps to override body
-	of wait_for_input ()
-
-2007-01-01  John Harper  <jsh unfactored org>
-
-	* timers.c (fix_time): fix this function for ms == 1000 (from
-	Michal Jaegermann)
-
-	* rep-remote.c: need to include <sys/types.h>
-
-2006-12-29  John Harper  <jsh unfactored org>
-
-	* timers.c: use fix_time () to validate initial secs/msecs
-	timer values
-
-2006-01-31  John Harper  <jsh unfactored org>
-
-	* main.c (check_configuration): on GCC 4 and later, mark this
-	function "noinline" - otherwise the stack direction check may fail
-	erroneously
-
-2005-04-07  John Harper  <jsh unfactored org>
-
-	* unix_processes.c: patch from Eric Mangold
-	<teratorn world-net net> to add close-process function
-
-2005-04-02  John Harper  <jsh unfactored org>
-
-	* ffi.c: support FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE
-
-2005-02-06  John Harper  <jsh unfactored org>
-
-	* lisp.c: backtrace-on-error and debug-on-error ignore
-	end-of-stream errors when set to `t'
-
-2005-01-19  John Harper  <jsh unfactored org>
-
-	* continuations.c (save_stack): don't use __builtin_frame_address
-	on x86_64 architecture, it doesn't seem to give an address on the
-	stack
-
-	* lisp.c (Fbacktrace): fix long->int warning on 64 bit systems
-
-	* sockets.c: use socklen_t instead of size_t where appropriate,
-	fixes warnings on 64 bit systems
-
-2003-12-06  John Harper  <jsh unfactored org>
-
-	* librep.sym: added Fexport_binding to the list
-
-	* Makefile.in: refer to librep.sym relative to $(srcdir), patch
-	from Mike Castle <dalgoda ix netcom com>
-
-2003-11-24  John Harper  <jsh unfactored org>
-
-	* version 0.17
-
-2003-10-28  John Harper  <jsh unfactored org>
-
-	* unix_processes.c (rep_system): rearranged code so we don't
-	wait in select () when the process has already exited
-
-	* readline.c: include <unistd.h>, and conditionalize header
-	inclusions where appropriate
-
-2003-09-03  John Harper  <jsh unfactored org>
-
-	* unix_dl.c: fixes for Mac OS X
-
-	* lispmach.h: added ppc register assignments
-
-2003-07-26  John Harper  <jsh unfactored org>
-
-	* ffi.c: bug fixes; implemented code to compare types and
-	interfaces
-
-	* ffi.c: tweaks, added functions to give lisp code low-level
-	access to memory structures
-
-	* unix_dl.c (rep_lookup_dl_symbol): passing an out of bounds
-	value as index means use RTLD_GLOBAL
-
-2003-07-26  John Harper  <jsh unfactored org>
-
-	* unix_dl.c, structures.c, repint_subrs.h, ffi.c, fake-libexec,
-	Makefile.in: added rep.ffi module for calling native functions
-	from lisp. Barely tested, incomplete, requires libffi from gcc
-
-2003-05-04  John Harper  <jsh unfactored org>
-
-	* rep_gh.h, gh.c, Makefile.in: partial implementation of
-	guile's (deprecated) GH interface
-
-2003-02-25  John Harper  <jsh unfactored org>
-
-	* version 0.16.2
-
-2002-10-07  John Harper  <jsh unfactored org>
-
-	* numbers.c (Fplus, Fminus, Fdivide, Fmultiply, Fmin, Fmax,
-	Flogior, Flogxor, Flogand, Fgcd): rewritten as SubrV
-
-	* lispcmds.c (Fnum_eq, Fnum_noteq, Fgtthan, Fltthan, Fgethan,
-	Fltthan): rewritten as SubrV
-
-2002-10-05  John Harper  <jsh unfactored org>
-
-	* rep_lisp.h, lispmach.h, lisp.c: support rep_SubrV functions
-	(rep_SubrN type with a special bit set). These take a counted
-	array of arguments. Is often more efficient to call (no
-	consing)
-
-	* lispcmds.c (Flist, Flist_star, Fappend, Fnconc, Fvector,
-	Fconcat): rewritten to be SubrV instead of SubrN
-
-2002-10-04  John Harper  <jsh unfactored org>
-
-	* lispcmds.c (Fconcat): changed to use two passes, one to
-	measure length of new string, one to build it. Increases speed
-	of string-append benchmark by ~40%. (Now ~50% of time is gc)
-
-2002-09-21  John Harper  <jsh unfactored org>
-
-	* numbers.c (Finexact_to_exact, Fnumerator, Fdenominator):
-	rewrote these functions to work correctly without gmp, and to
-	be more logical
-
-2002-07-12  John Harper  <jsh unfactored org>
-
-	* unix_files.c (rep_expand_file_name): avoid referencing
-	uninitialized data
-
-	* tuples.c (rep_make_tuple): initialize car field of new tuples
-	to zero, since the gc sweeper checks it (from #88015)
-
-2002-06-25  John Harper  <jsh unfactored org>
-
-	* numbers.c: only use GMP random numbers with version 4 and
-	later
-
-2002-06-20  John Harper  <jsh unfactored org>
-
-	* version 0.16	 
-
-2002-05-06  John Harper  <jsh unfactored org>
-
-	* gettext.c (bindtextdomaincodeset): new stub. Patch from
-	Christophe Fergeau <teuf users sourceforge net>. Only does
-	anything when not using the build in gettext implementation
-	(which needs to be updated)
-
-2002-03-30  John Harper  <jsh unfactored org>
-
-	* sockets.c: added IS_REGISTERED flag so we never try to call
-	rep_deregister_input_fd () on a fd that isn't actually
-	registered (which rep-gtk doesn't like)
-
-2002-03-01  John Harper  <jsh pixelslut com>
-
-	* timers.c: #ifdef rep_HAVE_UNIX not HAVE_UNIX (from Michael
-	Eriksson <Michael Eriksson era-t ericsson se>)
-
-2002-02-13  John Harper  <jsh unfactored org>
-
-	* numbers.c (Frandom): when seeding, factor in the pid of the
-	process as well as the current time
-
-	* unix_main.c (rep_getpid): new function
-
-	* streams.c (Fformat): deleted unused end_of_input label
-
-2001-12-21  John Harper  <jsh unfactored org>
-
-	* rep.c: call setlocale (LC_ALL, "") at startup. Patch from
-	Bruno Haible <haible ilog fr> (with some extra preprocessor
-	stuff)
-
-2001-12-18  John Harper  <jsh unfactored org>
-
-	* repgdbm.c (Fgdbm_delete): don't add one to the length of the
-	string when calculating dkey.dsize (none of the other functions
-	do)
-
-2001-12-17  John Harper  <jsh unfactored org>
-
-	* rep-config.sh, Makefile.in: added --lispdir option
-
-	* streams.c (Fformat): signal an error on unknown format
-	conversions and end of input string in the middle of a format
-	directive
-
-2001-12-04  John Harper  <jsh unfactored org>
-
-	* numbers.c (Finexact_to_exact): made this handle fractional
-	values now
-
-	(Fnumerator, Fdenominator): if given a float, rationalize it
-	using inexact->exact
-
-2001-11-14  John Harper  <jsh unfactored org>
-
-	* files.c (Ffile_ttyp): new function
-
-2001-10-28  John Harper  <jsh unfactored org>
-
-	* version 0.15.2
-
-2001-10-20  John Harper  <jsh unfactored org>
-
-	* numbers.c (random_new): call mpz_init () on the output value
-	before passing it to mpz_urandomm (). This seems to stop things
-	crashing
-
-	(Frandom): signal an error if LIMIT <= 0
-
-2001-10-19  John Harper  <jsh unfactored org>
-
-	* repgdbm.c (Fgdbm_walk): fixed doc string
-
-	* readline.c (match_paren): should return an int, not void
-	(pointed out by Karl M. Hegbloom <karlheg microsharp com>)
-
-	* librep.sym: removed Fdebug_frame_environment,
-	Fdebug_inner_frame and Fdebug_outer_frame
-
-	* lisp.c (skip_chars): don't accept, say, `#!keyX' when asked
-	for `#!key'; check that the input character after the end of
-	the asked for characters is a token delimiter
-
-2001-10-03  John Harper  <jsh unfactored org>
-
-	* version 0.15.1
-
-	* numbers.c: disabled gmp random numbers, they crash
-
-2001-10-01  John Harper  <jsh unfactored org>
-
-	* version 0.15
-
-	* numbers.c: also check for HAVE_GMP_RANDINIT
-
-2001-09-23  John Harper  <jsh unfactored org>
-
-	* numbers.c, misc.c (Frandom): moved to numbers.c. When gmp is
-	present, always use gmp random integer functions. They should
-	give `good' results for limits up to at least 128 bits, then
-	they start concatenating multiple random values to get their
-	result
-
-2001-09-15  John Harper  <jsh unfactored org>
-
-	* continuations.c: allocate continuation and thread typecodes
-	lazily (when they're first needed)
-
-	* numbers.c (promote_to): don't canonicalize the created
-	rational, since it's denominator is known to be 1 (suggested by
-	Kevin Ryde <user42 zip com au>)
-
-2001-09-14  John Harper  <jsh unfactored org>
-
-	Integrated patch from Tom Bates <Tom Bates compaq com> to fix
-	some bugs on mips-compaq-nonstopux architecture:
-
-	* unix_files.c, rep-remote.c, realpath.c: if S_ISLINK or
-	S_ISSOCK macros aren't defined, define them in terms of
-	S_IFLNK and S_IFSOCK
-
-	* misc.c (Fcomplete_string): don't assume strcmp () and strncmp
-	() have exactly the same type or are functions
-
-2001-09-11  John Harper  <jsh pixelslut com>
-
-	* rep_subrs.h, repint_subrs.h: made rep_undefined_value public
-	* librep.sym: added rep_undefined_value
-
-	* rep_lisp.h (rep_File): new bit, rep_LFF_SILENT_ERRORS. When
-	set file errors aren't signalled for this file. They're just
-	ignored and sensible values are returned
-
-	* files.c (Fset_file_ignore_errors): new function
-
-	* streams.c (rep_stream_puts, rep_stream_putc): don't signal
-	end-of-stream errors if files have been marked to ignore them
-
-2001-09-02  John Harper  <jsh pixelslut com>
-
-	* misc.c: a couple of small fixes
-
-	* numbers.c (Flog): now takes an optional BASE parameter - the
-	base of the logarithm to take, instead of defaulting to taking
-	natural logarithms. E.g. (log 4 2) -> 2
-
-2001-08-31  John Harper  <jsh pixelslut com>
-
-	* streams.c: signal an error if it's not possible to write as
-	many bytes as asked for. Writing is always assumed to block,
-	and no one actually checks the return values of the various
-	output functions, so this is best..
-
-	* sockets.c (blocking_write): if an error occurs, shutdown the
-	socket and call the sentinel
-
-	* unix_processes.c (write_to_process): loop if write () handles
-	fewer characters than we need
-
-	* weak-refs.c (rep_scan_weak_refs): trivial change
-
-	* lisp.c (lisp_prin): print address of closures, helps
-	debugging
-
-	* lisp.c (apply): don't assert that either an exception or a
-	value is returned from every function, instead just print
-	annoying warning messages when this happens
-
-	* lispmach.h, lisp.c: when searching for keyword arguments,
-	don't check every other argument, check every argument (there's
-	no way of knowing how keywords will be aligned)
-
-2001-08-23  John Harper  <jsh pixelslut com>
-
-	* weak-refs.c: new file, provide simple weak-reference cells
-
-	* main.c (rep_init_from_dump): call rep_weak_refs_init ()
-	* values.c (Fgarbage_collect): call rep_scan_weak_refs () after
-	calling run_guardians ()
-
-2001-08-13  John Harper  <jsh pixelslut com>
-
-	* continuations.c (Fthread_suspend): reversed test to check if
-	timeout occurred so it matches the documentation
-
-	* misc.c (Fcurrent_time_string): fixed returning rep_NULL in
-	some unusual cases
-
-	* lisp.c (Fbacktrace): print backtrace in top to bottom order,
-	not bottom to top
-
-2001-08-09  John Harper  <jsh pixelslut com>
-
-	* lisp.c (Ffuncall): use apply () instead of rep_funcall ()
-
-2001-08-08  John Harper  <jsh pixelslut com>
-
-	* main.c (get_main_options): --interp also means record line
-	number information. Removed --line-numbers option
-
-2001-08-07  John Harper  <jsh pixelslut com>
-
-	* origin.c: new file. Records and fetches line numbering
-	information for lisp forms (when enabled). Adds non-trivial
-	memory overhead, but is invaluable for debugging (both at
-	compile- and at run-time)
-
-	* lisp.c (read_list): call rep_record_origin () on the produced
-	list, giving the stream and starting line of the read form
-	(where possible)
-
-	(copy_to_vector, bind_lambda_list, bind_lambda_list_1,
-	eval_lambda, apply): removed the eval_args and (kludgey)
-	eval_in_env parameters. Now all function applications going
-	through apply () (ne funcall) must have an _evaluated_ list of
-	arguments. This may cons more in interpreted mode, but
-	simplifies a lot of things and is better for debugging (since
-	only evaluated arguments are put in the stack frame)
-
-	(Fbacktrace): made output more elegant (again)
-
-	(Fstack_frame_ref): return a list representing a given frame on
-	the stack
-
-	(Fdebug_frame_environment, Fdebug_outer_frame,
-	Fdebug_inner_frame): deleted these functions
-
-	* unix_main.c: adapted a couple of functions for new backtrace
-	format
-
-	* values.c, symbols.c, repint.h, macros.c, lispmach.h,
-	lispcmds.c, continuations.c: removed the args_evalled_p field
-	of the rep_Call structure, replaced by a current_form field
-
-	* files.c (Fseek_file): recognize that seeks to the start of
-	the file should reset the line number to one, not munge it
-
-2001-08-02  John Harper  <jsh pixelslut com>
-
-	* lisp.c: signal an error if EOF is read while parsing a block
-	comment
-
-	* continuations.c: abuse exit_val field of thread structure
-	while threads are suspended to allow thread-suspend to return
-	true or false depending on whether the timeout was reached or
-	not
-
-	* rep_lisp.h (rep_DECLARE[1-5]_OPT): new macros, test for arg
-	being false or the given type
-
-	* numbers.c (rep_get_long_int): fixed some unsignedness
-	problems
-
-	* unix_processes.c, timers.c, misc.c, lispcmds.c, find.c,
-	files.c, continuations.c: in various places check that optional
-	integer arguments really are integers or false. Also use
-	rep_get_long_int () etc where it makes sense to truncate
-	non-integer values
-
-2001-08-01  John Harper  <jsh pixelslut com>
-
-	* tables.c (Ftable_unset): fixed bug of not decrementing
-	total_nodes
-
-	* tables.c (Ftable_size): new function
-
-2001-07-29  John Harper  <jsh pixelslut com>
-
-	* continuations.c (Fcurrent_thread, Fall_threads): if operating
-	in the zero'th root, and there is no default thread, create one
-	(instead of returning false)
-
-2001-07-26  John Harper  <jsh pixelslut com>
-
-	* lisp.c (readl): parse `#undefined'. Fixed bug when reading
-	`(#\A)' (would signal an eof too soon)
-
-	* lisp.c (signal_reader_error): new function, used to signal
-	parse errors. Reports filename and line number for file
-	streams. Also gives a description of why the error occurred in
-	most cases
-
-	* symbols.c (F_define): return #undefined
-
-	* symbols.c (rep_undefined_value):: new symbol called
-	`#undefined'
-
-	* rep_lisp.h, files.c: files get a new field `line_number', and
-	a new flag rep_LFF_BOGUS_LINE_NUMBER.
-
-	* streams.c (rep_stream_getc, rep_stream_ungetc): update the
-	line_number field of files
-
-	* lisp.c (fast_getc): handle line_number field of files
-
-2001-07-22  John Harper  <jsh pixelslut com>
-
-	* lisp.c (readl): don't signal an error when reading EOF
-	immediately after `#\[a-zA-Z]', just return the given character
-
-2001-07-21  John Harper  <jsh pixelslut com>
-
-	* lisp.c (Fbacktrace): made backtraces cleaner. Added an option
-	backtrace-verbosely which turns on printing argument lists
-
-2001-07-17  John Harper  <jsh pixelslut com>
-
-	* rep-remote.c (do_readdir): output mode in decimal not octal
-	(since the 0nn octal read syntax was deprecated in rep)
-
-	* unix_files.c (rep_canonical_file_name): don't preserve
-	trailing slashes, always remove any trailing slashes. Also if
-	realpath () fails (e.g. the file doesn't exist), delete
-	trailing slashes before returning the input
-
-	* unix_files.c (rep_file_size): use rep_make_long_uint () to
-	create the returned value, instead of always using a fixnum
-
-2001-07-15  John Harper  <jsh pixelslut com>
-
-	* rep_lisp.h: only do the `#define Qnil &rep_eol_datum'
-	shortcut if __APPLE__ isn't defined, since it doesn't seem to
-	work with Mac OS X (for at least some versions of the
-	toolchain)
-
-2001-07-02  John Harper  <jsh pixelslut com>
-
-	* version 0.14
-
-2001-06-29  John Harper  <jsh pixelslut com>
-
-	* streams.c (rep_stream_getc): don't test for end of input by
-	looking for a null byte! Check the actual length of the string!
-
-	* sockets.c (blocking_write): new function, used to write ()
-	into a non-blocking fd, simulating blocking using select ().
-	Used when writing data into sockets
-
-2001-06-26  John Harper  <jsh pixelslut com>
-
-	* sockets.c (Fsocket_peer_address, Fsocket_peer_port): new
-	functions
-	(Fsocket_address, Fsocket_port): only ever return the details
-	of the local connection point (not the peer in the case of
-	accepted connections)
-
-	* sockets.c (make_inet_socket): if binding to INADDR_ANY, try
-	to find out the actual address of the server and the actual
-	port number.
-	(Fsocket_server): if PORT is false, use a port of zero, which
-	means `any unused port'
-
-	* sockets.c (Fsocket_server): HOSTNAME arg can now be nil,
-	meaning to use INADDR_ANY when binding to the socket (listen
-	for all addresses)
-
-2001-06-18  John Harper  <jsh pixelslut com>
-
-	* repgdbm.c, repsdbm.c (rep_dl_kill): new functions, close all
-	databases before exiting
-
-2001-06-15  John Harper  <jsh pixelslut com>
-
-	* rep-md5.c: added some comments and doc strings
-
-2001-06-14  John Harper  <jsh pixelslut com>
-
-	* numbers.c (rep_parse_number): don't call mpz_init_set_str ()
-	on BUF since it may not be zero-terminated. Instead copy the
-	string to the stack and terminate it there
-
-	* rep-md5.c: new module, rep.util.md5. Exports two functions
-	currently, md5-string and md5-local-file.
-
-	* fake-libexec, Makefile.in: build rep.util.md5 module
-
-	* md5.c, md5.h: MD5 message digest implementation. Taken from
-	GNU textutils-1.22 (originally written by Ulrich Drepper)
-
-	* misc.c (Fcrypt): new function, wrapper for crypt(3) if it's
-	available
-
-2001-06-12  John Harper  <jsh pixelslut com>
-
-	* repint_subrs.h, lisp.c: don't declare Qrep_lang_interpreter
-	in lisp.c as well as in structures.c. Instead add declarations
-	for all values declared in structures.c
-
-2001-06-08  John Harper  <jsh pixelslut com>
-
-	* lispmach.h: disable mc68000 register assignments - I've had
-	one report of them causing the vm to crash while building the
-	compiler
-
-	* unix_processes.c (run_process): open and initialize the slave
-	side of the pty connection _before_ forking (instead of in the
-	child process). This avoids a race condition where the master
-	side may try to write into its side of the pty before the slave
-	side has been initialized correctly. Thanks to Paolo Bonzini
-	for pointing out this problem (and the solution)
-
-2001-06-04  John Harper  <jsh pixelslut com>
-
-	* continuations.c (Fmake_suspended_thread): new function
-
-	* continuations.c (make_thread): when creating the default
-	thread, save _it's_ environment, don't resave the environment
-	of the other created thread!
-
-2001-04-22  John Harper  <jsh eazel com>
-
-	* unix_main.c (rep_event_loop): only wait for input events if
-	no unhandled exception. Now if rep_redisplay_fun calls lisp
-	code, errors will be handled more promptly
-
-2001-04-20  John Harper  <jsh eazel com>
-
-	* structures.c (Fexport_bindings): flush the symbol from the
-	cache even if we just set the is_exported bit
-
-2001-04-16  John Harper  <jsh eazel com>
-
-	* unix_dl.c: include <sys/dl.h> if HAVE_SYS_DL_H is defined and
-	HAVE_DL_H isn't (for UnixWare)
-
-	* misc.c: include <strings.h> (needed for strncasecmp () on
-	UnixWare)
-
-2001-04-09  John Harper  <jsh eazel com>
-
-	* version 0.13.6 (from branch-0-13)
-
-2001-04-05  John Harper  <jsh eazel com>
-
-	* numbers.c (INSTALL_LOCALE): fixed a really stupid bug in this
-	macro. It never actually installed the new locale!
-
-2001-03-26  John Harper  <jsh eazel com>
-
-	* Makefile.in: added a `check' target
-
-2001-03-22  John Harper  <jsh eazel com>
-
-	* version 0.13.5
-
-	* numbers.c (rep_parse_number, rep_print_number_to_string): use
-	a macro to save and install the locale. The old way was broken
-	since I didn't realize that setlocale returns the current
-	locale, not the previous one
-
-2001-03-21  John Harper  <jsh eazel com>
-
-	* unix_processes.c (run_process, rep_system): if the child
-	process has to abort for some reason (e.g. exec fails), use
-	_exit () instead of exit (). This avoids calling any atexit
-	handlers (which were inherited from the parent process, and
-	may, for example, close the X connection if GTK+ is loaded)
-
-	This fixes the tar-file-handler-broken-on-solaris problem
-
-2001-03-12  John Harper  <jsh eazel com>
-
-	* numbers.c (rep_parse_number): if strto[l]l gives a range
-	error, it's not possible to fall back to the float parsing code
-	(since the radix may not be decimal). Instead, use a special
-	helper function to parse an integer with an arbitrary base to a
-	double, then if this succeeds decide whether to use an inexact
-	or exact representation to store the number
-
-	[ This fixes a bug reported on HP-UX, when using --without-gmp
-	and there is no known strtoll function ]
-
-2001-02-20  John Harper  <jsh eazel com>
-
-	* rep_subrs.h (rep_message_fun): declared using extern (patch
-	from albert chin <china thewrittenword com>)
-
-2001-02-19  John Harper  <jsh eazel com>
-
-	* lispmach.h: fixed comment
-
-	* repdoc.c: include <stdlib.h>
-
-2001-02-10  John Harper  <jsh eazel com>
-
-	* sockets.c (make_inet_socket): remember to convert the port
-	number to network byte order before storing it in sin_port
-	(fill_in_address): convert the port number from network to host
-	byte order
-
-2001-01-28  John Harper  <jsh eazel com>
-
-	* continuations.c (Fthread_join): as part of the THREAD
-	declaration, check that it's a member of the current dynamic
-	root
-
-2001-01-21  John Harper  <jsh eazel com>
-
-	* symbols.c (Fdefvar): the DEFAULT-VALUE parameter is now
-	optional, it defaults to false
-
-2001-01-08  John Harper  <jsh eazel com>
-
-	* lisp.c: changed the Lisp reader to treat #\return characters
-	as whitespace. (Fixes sawfish bug 5231)
-
-2001-01-04  John Harper  <jsh eazel com>
-
-	* version 0.13.4
-
-2000-12-20  John Harper  <jsh eazel com>
-
-	* librep.sym: added rep_file_type and rep_guardian_type (doh!)
-
-2000-12-04  John Harper  <jsh eazel com>
-
-	* version 0.13.3
-
-	* symbols.c (Funintern): should use OB_NIL to mark end of
-	symbol buckets, not rep_NULL
-
-2000-11-28  John Harper  <jsh eazel com>
-
-	* timers.c (Lisp_Timer): made bitfields unsigned
-
-2000-11-27  John Harper  <jsh eazel com>
-
-	* lisp.c: fixes for previous [premature-]end-of-stream changes
-
-2000-11-24  John Harper  <jsh eazel com>
-
-	* lisp.c (Qpremature_end_of_stream): new error type. This is
-	used to mark eof being received while in the middle of parsing
-	something. Qend_of_stream is now only raised when an eof is
-	read before anything but whitespace has been read.
-
-	This fixes the bug that Fload_file () would swallow
-	end-of-stream errors (assuming that they just represent reading
-	upto the end of the file), hiding real errors where eof occurs
-	in the middle of a construct being parsed
-
-2000-11-15  John Harper  <jsh eazel com>
-
-	* repint_subrs.h, rep_subrs.h: moved the low-level unix file
-	operations to repint_subrs.h
-
-	* Makefile.in, librep.sym: when building librep.la, use the
-	librep.sym file and the -export-symbols libtool option to
-	define which symbols should be retained in the library
-
-2000-11-14  John Harper  <jsh eazel com>
-
-	* rep_regexp.h, regexp.c: be sure to use unsigned char's when
-	converting values to int (for <ctype.h> functions, etc. Adapted
-	from a patch to Jade by Andrew Rodionoff <arnost mail ru>)
-
-2000-11-12  John Harper  <jsh eazel com>
-
-	* readline.c (Freadline): accept optional second arg the
-	function to call to generate completions of a given word. When
-	supplied this overrides the `rl-completion-generator' global.
-	Also, when no libreadline is present, don't use printf to print
-	a user-supplied string, use fputs (and send it to stderr, not
-	stdout)
-
-2000-11-11  John Harper  <jsh eazel com>
-
-	* lisp.c (rep_readl, fast_getc): instead of checking whether
-	the stream is a local file each time fast_getc () is called,
-	check in rep_readl () then save the result. Added a local
-	function readl () -- the body of rep_readl ()
-
-2000-11-10  John Harper  <jsh eazel com>
-
-	* rep_regexp.h, regexp.c (rep_regexp_max_depth): new variable,
-	upper bound on the number of times that regmatch () may be
-	called recursively. Prevents the stack from exploding on
-	pathological matches
-
-2000-11-03  John Harper  <jsh eazel com>
-
-	* numbers.c: if LONG_LONG_{MIN,MAX} aren't defined, define as
-	LONG_{MIN,MAX} (evil hack, but should allow compilation to
-	succeed)
-
-2000-10-27  John Harper  <jsh eazel com>
-
-	* unix_files.c (rep_expand_file_name): added extra case to
-	translate `/..' to `/'
-
-2000-10-25  John Harper  <jsh eazel com>
-
-	* numbers.c, main.c: instead of doing setlocale (LC_NUMERIC,
-	"C") at init-time, do it each time that a floating point number
-	is read or written (need to remove the code from gtk/gnome
-	bindings also)
-
-2000-10-23  John Harper  <jsh eazel com>
-
-	* version 0.13.2
-
-2000-10-06  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in (check-dl): a target to check that each plugin
-	.la file contains a non-null `dlname=' entry. (Which would
-	prevent rep being able to load the library)
-
-2000-09-28  John Harper  <john dcs warwick ac uk>
-
-	* version 0.13.1
-
-	* fake-libexec: patch from John H. Palmieri
-	<palmieri math washington edu> to link to libfoo.so as well as
-	foo.la (for Tru64?)
-
-2000-09-27  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (strncasecmp): define if the system doesn't have it
-
-2000-09-24  John Harper  <john dcs warwick ac uk>
-
-	* find.c (rep_string_modified): new function, removes the
-	modified string from the regexp cache if it's stored there
-
-	* lispcmds.c, misc.c (Faset, Ftranslate_string): call
-	rep_string_modified ()
-
-2000-09-23  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_read_symbol): accept an OBARRAY parameter
-	(rep_readl): read keywords into their own obarray
-
-	* symbols.c (Fmake_keyword, rep_keyword_obarray): use a
-	dedicated obarray for keyword symbols
-
-	* lisp.c: use uninterned symbols for #!optional, #!rest and
-	#!key
-
-	* symbols.c (rep_scm_f, rep_scm_t): now uninterned symbols
-
-2000-09-22  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c (rep_open_dl_library): check if snprintf () exists
-	before using it (patch from Philippe Defert cern ch)
-
-2000-09-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.13
-
-2000-09-19  John Harper  <john dcs warwick ac uk>
-
-	* structures.c (Fintern_structure): load into the
-	*user-structure* instead of the *root-structure*
-
-2000-09-18  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_init_from_dump): call setlocal (LC_NUMERIC, "C")
-	so that floating point I/O always uses `.' as fraction
-	separator (e.g. fr locale uses `,')
-
-2000-09-14  John Harper  <john dcs warwick ac uk>
-
-	* sockets.c (Fsocketp): new function
-	(socket_putc, socket_puts): signal an error for inactive
-	sockets, return 0 if nothing can be written, not -1
-
-	* unix_processes.c, sockets.c (read_from_one_fd,
-	client_socket_output): only ever check errno if actual < 0
-
-	* sockets.c (make_socket): was testing if result of socket ()
-	== 0 not -1 to check for errors
-	(make_local_socket): call Flocal_file_name () on the address
-
-	* sockets.c: if [AP]F_LOCAL isn't defined, but [AP]F_UNIX is,
-	use that instead
-
-2000-09-11  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (F_define): optional third-arg DOC-STRING, use
-	rep_documentation_property to find the property to store it
-	under
-
-	* structures.c (rep_documentation_property): new function,
-	returns the property used to store documentation in a symbol's
-	plist for a binding in a patrticular module
-
-2000-09-10  John Harper  <john dcs warwick ac uk>
-
-	* fake-libexec: delete .libexec before [re]creating it
-
-2000-09-09  John Harper  <john dcs warwick ac uk>
-
-	* sockets.c: new module rep.io.sockets; provides interface to
-	SOCK_STREAM sockets, unix and internet domains
-
-	* unix_main.c (rep_add_event_loop_callback): new function
-	(rep_proc_periodically): moved this function from
-	unix_processes.c, it now runs a sequence of callbacks added by
-	the above function
-
-	* unix_processes.c (rep_proc_periodically): now a local
-	function, added as an event loop callback (can this be made
-	into a plugin now?)
-
-2000-09-08  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c: moved some functions out of rep.lang.symbols into
-	rep.lang.interpreter or rep.structures
-
-	* main.c (rep_load_environment): added rep.regexp to list of
-	structures that have lisp initial code
-
-2000-09-05  John Harper  <john dcs warwick ac uk>
-
-	* structures.c (rep_structures_init): moved `provide',
-	`require' and `featurep' from rep.structures to
-	rep.module-system
-
-	* Makefile.in: .libexec depends on $(DL_OBJS)
-
-	* lispmach.h: when OPTIMIZE_FOR_SPACE is defined don't bother
-	inlining SAFE_NEXT, the assertions add too much overhead 
-
-2000-09-04  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c (rep_open_dl_library): when no `dlname=' line was
-	found, include the name of the file when signalling an error
-
-	* structures.c (Fintern_structure): don't name the module after
-	the thing we're trying to load (this means that module files
-	must contain `define-structure' not `structure forms
-
-2000-09-03  John Harper  <john dcs warwick ac uk>
-
-	* values.c, unix_processes.c, unix_main.c, timers.c, tables.c,
-	symbols.c, structures.c, streams.c, repsdbm.c, repint_subrs.h,
-	repgdbm.c, rep_subrs.h, numbers.c, misc.c, main.c, macros.c,
-	lispmach.c, lispcmds.c, lisp.c, fluids.c, find.c, files.c,
-	datums.c, continuations.c: changed magic doc string tags from
-	`::doc:SYMBOL::' to `::doc:MODULE#SYMBOL::'
-
-2000-09-02  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_assign_args): new function, for binding C
-	variables to a list of arguments
-
-	* main.c (rep_handle_input_exception): fixed bug of returning
-	with a null result after catching Qquit
-
-	* unix_main.c (rep_accept_input_for_callbacks): new function,
-	obsoletes rep_accept_input which just accepted a single
-	callback
-	(rep_accept_input_for_fds): new function
-
-	* unix_processes.c (rep_register_process_input_handler): new
-	function, adds a handler to those dispatched by
-	accept-process-input
-	(Faccept_process_input): able to accept input for more than
-	one source (will be used by the mythical `socket' plugin)
-	(Faccept_process_input_1): new function, just listens for
-	input from a single subprocess
-
-2000-09-01  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (rep_expand_file_name): fix bug of expanding
-	`../..' to `'. Also, don't allow null strings to be returned,
-	output `.' instead
-
-2000-08-31  John Harper  <john dcs warwick ac uk>
-
-	* rep.h, rep_config.h.in, Makefile.in, rep-config.sh: don't
-	have machine-local defs in rep.h (under $prefix/include). Let
-	configure build rep_config.h, install it under libexec, then
-	include it from rep.h
-
-2000-08-30  John Harper  <john dcs warwick ac uk>
-
-	* rep_subrs.h: s/new/new_/ and s/template/template_/ in
-	argument names to allow inclusion by C++ code
-
-2000-08-28  John Harper  <john dcs warwick ac uk>
-
-	* tables.c: added doc strings
-
-	* symbols.c (Fmake_keyword): signal an error if the argument is
-	itself a keyword
-
-2000-08-27  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.h: implemented OP_FOO_ARG_ changes; optimized gc
-	protection handling; fixed bug of exiting the vm and possibly
-	gc'ing with undefined protection
-
-	* bytecodes.h: renamed OP_FOO_ARG_WITH_DEFAULT as OP_FOO_ARG_.
-	These now leave one or two values on the stack, first a bool
-	signifying whether the parameter was defined or not, and, if it
-	was, its value
-
-	* lisp.c (bind_lambda_list_1): now evaluates default values of
-	#!optional and #!key arguments (in the environment of the
-	closure being called, _without_ any of the bindings currently
-	being instantiated)
-
-	* tables.c (Ftable_bound_p): new function
-
-2000-08-25  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (rep_print_number_to_string): minor changes to
-	non-gmp bignum case
-
-2000-08-24  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_top_level_recursive_edit): new function, called
-	by apps as their top-level event-loop. Calls recursive-edit but
-	with extra protection for unhandled exceptions that shouldn't
-	terminate the program
-
-	* symbols.c (Fdefvar): only eval the value form if setting the
-	value of the special variable
-
-2000-08-18  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c (thread_suspend): POLL-ARG is now `void *'
-	not `repv'
-
-2000-08-17  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c: moved get_stack_top () into save_stack ();
-	should remove possibility from reading above current top of
-	stack
-
-	* rep_regexp.h, regexp.c, continuations.c, find.c: renamed
-	NSUBEXP as rep_NSUBEXP to avoid namespace pollution
-
-	* lispmach.h: factored out the core of the vm from lispmach.c;
-	it's parameterized by a number of preprocessor macros
-
-	* lispmach.c: include lispmach.h
-
-	* safemach.c: module `rep.vm.safe-interpreter'. An error
-	checking virtual machine as a plugin
-
-	* symbols.c (rep_bind_special): new function
-
-	* lisp.c (rep_bind_lambda_list_1): support default values for
-	#!optional and #!key parameters. Syntax is `(<var> <default>)'.
-	But note that unlike CL, <default> is _not_ evaluated. This may
-	change in the future, so only use self-evaluating objects for
-	now..
-
-	* lispmach.c, bytecodes.h (OP_OPTIONAL_ARG_WITH_DEFAULT,
-	OP_KEYWORD_ARG_WITH_DEFAULT): new instructions
-
-2000-08-16  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_SF_KEYWORD, rep_SF_LITERAL): new flags
-	(rep_SF_KEYWORDP, rep_SYMBOL_LITERAL_P): new macros
-
-	* lisp.c (rep_readl): read #!SYMBOL as a symbol, and #:SYMBOL
-	as a keyword symbol (self evaluating)
-	(rep_bind_lambda_list_1): deprecated &optional and &rest, they
-	intrude too much on the symbol syntax. Replaced by #!optional
-	and #!rest (syntax from MIT Scheme). Also support #!key
-	defining keyword parameters. E.g. `((lambda (#!key a b) (list a
-	b)) #:b 2 #:a 1) -> (1 2)'
-
-	* symbols.c (Fmake_keyword, Fkeywordp): new functions
-	(lisp_print): if rep_SF_LITERAL is set, print without any
-	quoting; if a keyword, don't quote the initial `#'
-
-	* lispmach.c, bytecodes.h (OP_KEYWORD_ARG): new instruction,
-	extracts argument for a given keyword symbol
-
-2000-08-15  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c: put cfa in a register variable, may help sparc
-
-	* lispmach.c: minor tweaks, mainly for the sparc
-
-2000-08-13  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, bytecodes.h (OP_NOT_ZERO_P): new instruction
-
-	* lispcmds.c (Fload_file): fixed to close the file if aborting
-	due to an error while evaluating
-
-	* lispmach.c (Fvalidate_byte_code): signal a more meaningful
-	error if validation fails (including the current value of
-	`load-filename')
-
-2000-08-12  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c (Fcontinuation_callable_p): fixed the
-	extraction of the continuation object from the closure
-
-2000-08-11  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (read_comment): new function. Also `#| ... #|' and
-	`<SOF>#! ... !#' comments now nest
-	(read_list, rep_readl): use read_comment ()
-
-	* repdoc.c (main): pass GDBM_NOLOCK to gdbm_open ()
-
-	* rep_lisp.h (DEFUN): cast the Ffoo value to (repv (*)()) when
-	assigning to the rep_xsubr struct (needed for C++, from Matt
-	Tucker <tuck whistlingfish net>)
-
-	* lispmach.c: changed repv_memset to repv_bzero and made it a
-	macro. Experimented with inline asm `cld; rep; stosl' on i386,
-	but no visible improvement. Move gc-protection initialization
-	before the `again:' label, then update it by hand when tail
-	calling
-
-2000-08-10  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c: implemented the vm architecture changes; these
-	include:
-
-	  - `slot-ref', `slot-set' instructions. Each vm instance gets
-	    how ever many slots it requires, basically registers. Used
-	    to avoid heap allocating variables that don't get captured
-
-	  - Removed `refq' and `setq' insns. Use `%set' and `ref'
-	    instead
-
-	  - subrs don't include their parameter spec. Each vm gets a
-	    vector of arguments; the `required-arg', `optional-arg' and
-	    `rest-arg' instructions access these (only guaranteed until
-	    the first gc)
-
-	  - when TRUST_NO_ONE is defined, heavy-duty assertions are
-	    included to check for compiler bugs
-
-	  - don't use GCC variable-length arrays to allocate stacks;
-	    use alloca. When tail-calling try to swap argv and stack
-	    arrays
-
-	  - remove `list' instruction; compiled to sequence of `cons'
-
-	* symbols.c (Fdefault_boundp): fixed bug of not converting C
-	boolean to lisp
-
-	* streams.c (rep_stream_getc): if an unbound file is given as
-	the stream, return EOF, not an error
-
-	* rep_lisp.h: removed rep_COMPILED_LAMBDA field
-
-	* lisp.c (rep_readl): when reading compiled subrs, check that
-	elements have correct type
-	(funcall): assert that either result or rep_throw_value isn't
-	rep_NULL
-
-	* bytecodes.h: various changes to the vm architecture. Bumped
-	major version
-
-2000-08-03  John Harper  <john dcs warwick ac uk>
-
-	* rep-xgettext.jl: use rep.i18n.gettext module, removed
-	--only-commands option
-
-	* numbers.c: use strtoq () if strtoll () isn't available
-
-2000-08-02  John Harper  <john dcs warwick ac uk>
-
-	* structures.c (lookup_recursively, Fopen_structures): allow
-	structures to be in `imports' list, not just names of
-	structures. This allows anonymous structures to be imported
-
-2000-08-01  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c (primitive_call_cc): added an arg, the
-	continuation to overwrite with the current state
-	(thread_invoke): pass the current continuation in to
-	primitive_call_cc for updating, instead of allocating a new one
-
-	[ this drastically reduces thread-switch time when the current
-	stack copy is suitable to be overwritten. Current thread switch
-	latency seems to be ~7.5us on my 300MHz PII ]
-
-	* lispmach.c: fixed top-of-stack caching bugs
-
-	* continuations.c (exit_barrier_cell): cdr of this is set to
-	raw rep_throw_value, don't use Qnil if rep_throw_value is null
-	(and this was only done in one of the two uses anyway)
-
-	(make_thread): don't call thread_invoke after thread_delete
-	(since the thread is current, thread_delete will already have
-	called invoke)
-
-	* lisp.c (read_symbol): deprecated `0xNN' and `0NN' read
-	syntaxes for hexadecimal and octal numbers (use `#xNN' and
-	`#oNN')
-
-	* main.c (rep_deprecated): new internal function for reporting
-	deprecated features. Only reports each feature once
-
-	* gettext.c: if using gettext in ../intl/, define gnu_foo as
-	foo__, removes the need to patch the intl files
-
-2000-07-31  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (rep_parse_number): fixed bounds checking of
-	characters for non-base10 conversion
-
-	* lispmach.c: added code to cache the top of the stack in a
-	[register] variable. Only enabled on non-x86 platforms (i.e.
-	those with a reasonable number of registers). Gets about 8%
-	speedup on sparc
-
-	* lisp.c: changed error message for void-value
-
-	* symbols.c, record-profile.c, files.c: use Fstructure_define
-	instead of Fstructure_set where appropriate
-
-	* symbols.c (Fset): now uses Fstructure_define (for C code)
-	(Freal_set): the actual Lisp `set' function (doesn't define)
-	(F_define): new special form
-
-	* structures.c (Fstructure_define): new function
-	(Fstructure_set): only create bindings if rep_STF_SET_BINDS
-	flag is set for the structure (unset by default)
-	(Fbinding_immutable_p): check imported bindings as well
-	(Fstructure_exports_all, rep_structure_exports_all): added
-
-	* repint.h (rep_STF_SET_BINDS): new flag
-
-	* lispmach.c, bytecodes.h (OP__DEFINE): new instruction
-
-	* symbols.c (Fdefvar): ignore non-stringp documentation
-
-2000-07-30  John Harper  <john dcs warwick ac uk>
-
-	* repint.h: added `#define rep_INTERNAL 1'
-
-	* rep_lisp.h, datums.c: allocate the '() datum statically, then
-	#define Qnil to this location internally to the library
-
-	* values.c, repint.h, main.c: hid dumping-specific code behind
-	`#ifdef ENABLE_BROKEN_DUMPING'
-
-	* values.c (rep_mark_value): removed some redundant tests
-
-	* datums.c (Qnil): now defined here, no longer a symbol, but a
-	datum denoting end-of-list and boolean-false
-	* symbols.c: don't intern `nil'
-
-	* lispcmds.c, lisp.c: minor changes for Qnil no longer being a
-	symbol
-
-2000-07-29  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, bytecodes.h (OP_APPLY): new instruction, applies
-	a function to a list of arguments. Implementation handles tail
-	recursive calls properly (also bumped bytecode minor version)
-
-	* lisp.c (eval): when recognizing tail recursive function
-	calls, also handle calls made using the `apply' subr
-
-	* symbols.c, datums.c: #f and #t are now just normal symbols.
-	However their `#' doesn't get quoted when printed
-
-	* numbers.c (Fdivide): if only one argument, compute (/ 1 X)
-
-2000-07-28  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (rep_lispcmds_init): check REP_LOAD_PATH and
-	REP_DL_LOAD_PATH for colon-separated directories to prepend to
-	load-path and dl-load-path respectively. Don't add
-	LD_LIBRARY_PATH anymore
-
-	* lispmach.c: reimplemented bytecode profiling
-
-	* lispcmds.c (Fload_file, Fload_dl_file): abstracted from
-	Fload, provide a more primitive interface to loading files (no
-	path searching of file-suffixing)
-
-	* lispcmds.c (Fload): don't declare trying_dl inside #ifdef
-	HAVE_DYNAMIC_LOADING, it's used always
-
-2000-07-27  John Harper  <john dcs warwick ac uk>
-
-	* structures.c, repint.h, lispmach.c, lisp.c: apply_bytecode
-	field of structures is now null to denote the default
-	interpreter, and anything else just gets called. Non-bytecode
-	enabled closures get a function that just returns an error
-
-	* rep.c: deleted usage function
-
-	* main.c: make no effort to handle --help, let applications or
-	scripts do it instead
-
-	* lispcmds.c (Fload): when looking for an entry in the
-	after-load-alist, if a structure was returned, search for the
-	name of that structure
-
-2000-07-25  John Harper  <john dcs warwick ac uk>
-
-	* repint.h: make all bitfields unsigned (patch from Albert
-	Chin-A-Young <china thewrittenword com>)
-
-	* numbers.c: on Solaris use LLONG_{MIN,MAX} (patch from Albert
-	Chin-A-Young <china thewrittenword com>). Always define
-	LONG_LONG_{MIN,MAX} if it doesn't already exist, not only if
-	not using gmp
-
-2000-07-24  John Harper  <john dcs warwick ac uk>
-
-	* macros.c (Fmacroexpand_1): do autoloading of macros here
-	* lisp.c (funcall): remove kludge to call macros
-
-	[ fixes the bug where macros could be called when they
-	shouldn't have been able to be (because the above-mentioned
-	kludge had a test inverted) ]
-
-2000-07-23  John Harper  <john dcs warwick ac uk>
-
-	* fake-libexec: script to fake the module hierarchy for
-	uninstalled shared objects
-
-	* values.c, unix_processes.c, unix_main.c, unix_dl.c, timers.c,
-	tables.c, symbols.c, structures.c, streams.c, repsdbm.c,
-	repint_subrs.h, repint.h, repgdbm.c, rep_subrs.h, rep.c,
-	record-profile.c, readline.c, numbers.c, misc.c, main.c,
-	macros.c, lispmach.c, lispcmds.c, lisp.c, gettext.c, fluids.c,
-	find.c, files.c, datums.c, continuations.c: changed the module
-	layout that's used when adding subroutines
-
-	[ previous names are given aliases to preserve compatibility ]
-
-	* files.c (file_handler_ref): new function, looks for symbol in
-	rep.io.file-handlers module
-
-	* unix_dl.c: don't handle `rep_dl_feature' or `rep_dl_subrs'
-	anymore, just print a message to the effect that they're being
-	ignored
-
-	* structures.c (Fexport_bindings): new function
-
-	* structures.c: changed to using a 4-way set-associative cache
-	instead of direct-mapped. Avoids almost all conflict misses
-	induced by the larger number of modules. Also halved the number
-	of sets (so the overall size doubles)
-
-	* repint.h, structures.c: divide by 8 instead of 16 when
-	hashing symbol addresses
-
-	* rep.c: load `rep/user' instead of `rep'
-
-	* numbers.c: on AIX use LONGLONG_INT instead of LONG_LONG_INT
-	(adapted from Dan McNichol <mcnichol austin ibm com>)
-
-	* lispcmds.c (Fcase): deleted, now a macro
-
-2000-07-21  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (rep_structure_file): new function, do the
-	structure-name -> file-name conversion (currently: `tr . /')
-
-	* structures.c (Fintern_structure): convert the structure name
-	to a file name before trying to load it
-
-	* structures.c: renamed all the %foo functions as foo (except
-	for %structure-ref, since it may return #<void>). Updated all
-	callers
-
-	* structures.c (rep_alias_structure): new function, create an
-	extra name for the current structure
-	(rep_push_structure_name): new version of rep_push_structure
-	that accepts a lisp string or symbol
-
-2000-07-20  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12.4
-
-	* Makefile.in: include $(LIBS) and $(GMP_LIBS) when linking
-	librep.la
-
-	* Makefile.in: libtool needs to be told what mode to use,
-	because sometimes $(CC) is a wrapper script with a funny name
-	(from David Kaelbling <drk sgi com>)
-
-	* lisp.c (rep_call_lisp4): fix stupid typo (from David
-	Kaelbling <drk sgi com>)
-
-2000-07-19  John Harper  <john dcs warwick ac uk>
-
-	* structures.c (F_structure_set): if setting to a void value,
-	remove the binding
-
-2000-07-18  John Harper  <john dcs warwick ac uk>
-
-	* structures.c: only keep hit/miss info when DEBUG is defined.
-	Also record type of misses: collision, conflict or other
-	(F_structure_set): don't invalidate the binding we modify, it's
-	the _binding_ itself that's cached, not its value
-	(lookup_or_add): removed all cached bindings for the symbol
-	being added
-
-2000-07-17  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_load_autoload): removed stuff to autoload modules
-	-- it was broken anyway
-
-2000-07-16  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c: check for overflow when using rep_longlong as
-	makeshift bignums. Convert to flonums when they overflow
-
-2000-07-15  John Harper  <john dcs warwick ac uk>
-
-	Work to allow alternative bytecode interpreters to be used:
-
-	* lisp.c (rep_bytecode_interpreter): deleted
-
-	* structures.c (F_make_structure): inherit `apply_bytecode'
-	field from current structure (or use default bytecode
-	interpreter if no current structure)
-	(F_structure_install_vm): new function
-
-	* lispmach.c (vm): when calling bytecode, check if calling the
-	same virtual machine or a different one
-	(Frun_byte_code): when called with a structure as first arg,
-	install the vm into that structure
-
-	* repint.h (rep_struct): moved `exclusion' and `export_all'
-	flags into the car. Added `apply_bytecode' field -- the
-	bytecode interpreter to use for functions with this structure
-	in their closure
-	(rep_USE_FUNARG, rep_USE_DEFAULT_ENV, rep_PUSH_CALL,
-	rep_POP_CALL): don't need to handle bytecode interpreter now
-
-	* rep_lisp.h (rep_FF_NO_BYTE_CODE): deleted
-
-	* symbols.c (Fmake_closure): don't set NO_BYTE_CODE flag
-
-2000-07-15  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (symbol_print): stop `+' and `-' symbols being
-	escaped
-
-	* Makefile.in: make rep-config depend on Makefile
-
-	* lisp.c (rep_call_lispn): was checking for
-	`rep_bytecode_interpreter == 0' too early
-
-	* continuations.c: only include call/cc and threading if
-	preprocessor macro `WITH_CONTINUATIONS' is defined
-
-	* numbers.c: only include bignum/rational support if
-	preprocessor macro `WITH_GMP' is defined. Else use `long long'
-	for non-fixnum integers, and flonums for everything else.
-	(Doesn't check for overflow from long long)
-
-2000-07-14  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fraise_exception): this replaces Fthrow as most
-	primitive
-
-	* files.c (rep_get_fh_env): made static, only this file uses it
-
-	* numbers.c, values.c: don't declare non-static inline
-	functions, C99 makes `inline' imply `static'
-
-	* record-profile.c: added alloca magic to start of file
-
-2000-07-13  John Harper  <john dcs warwick ac uk>
-
-	* record-profile.c (test_interrupt): add null statement after
-	`skip:' label to make it ANSI-legal
-
-	* lisp.c (rep_string_print): print to a fixed size local
-	buffer, instead of outputting a character at a time (this
-	avoids unneeded system calls when printing to processes)
-
-	* symbols.c (symbol_print): print to a local buffer, then
-	output in one shot. Also correctly quote symbol names that
-	would otherwise be read as numbers
-
-	* unix_main.c (rep_sys_os_init): check that `environ != 0'
-
-2000-07-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12.3
-
-2000-07-11  John Harper  <john dcs warwick ac uk>
-
-	* macros.c (Fmacroexpand_1): new function, does a single macro
-	expansion (without caching the result). `macro-environment' may
-	now be a structure instead of a function, in which case it
-	defines the module in which to dereference symbols. Also if a
-	function, it's a function to do a _single_ macro expansion
-
-	* lispcmds.c (Fload): return nil if file is empty, not null
-
-	* repgdbm.c (Fgdbm_open): check for defined (GDBM_NOLOCK)
-	before using it
-
-2000-07-06  John Harper  <john dcs warwick ac uk>
-
-	* tuples.c (rep_sweep_tuples): performance tweaks
-
-2000-07-10  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c, lispcmds.c, lisp.c, continuations.c: use
-	static DEFSTRINGs instead of heap-allocating static C strings
-
-	* numbers.c (rep_get_longlong_int): remember to mpz_clear ()
-	the temporary bignum before exiting (prevents space leak)
-
-	* rep.c: removed inner_main, make rep_call_with_barrier call
-	rep_load_environment directly
-
-	* Makefile.in: include LDFLAGS in the --libs data when creating
-	rep-config
-
-2000-07-09  John Harper  <john dcs warwick ac uk>
-
-	* repgdbm.c (Fgdbm_open): added optional arg FLAGS, a list of
-	symbols. Only current flag is `no-lock' which means to pass the
-	GDBM_NOLOCK flag when opening the db
-
-	* lispmach.c, bytecodes.h: expand OP_REFN into OP_REFN_[0-7],
-	then implement each variant separately. This allows the first
-	six to know exactly how many cdr's to take, at compile time,
-	giving a 10% speedup (on the `prime' kernel)
-
-	* unix_dl.c (load_requires): use F_intern_structure instead of
-	Frequire (so that the secondary modules aren't opened in the
-	caller's environment)
-	(rep_open_dl_library): provide the feature (if not a
-	structure), event when it was already loaded
-
-2000-05-31  Karl M. Hegbloom  <karlheg debian org>
-
-	* lispcmds.c (Frplaca, Frplacd): Make both return CONS, like
-	Common Lisp.  Update docstrings.
-
-2000-07-08  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fcall_with_exception_handler): new function, used
-	to implement all exception handling syntax
-
-	* lispcmds.c (Fcatch, Funwind_protect): deleted, now macros
-	* lisp.c (Fcondition_case): deleted now a macro
-
-2000-07-07  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_mem_error): made this just print a message abort
-	(). Too many functions don't check the return value of
-	allocators (such as Fcons). Perhaps have a mode where rep_alloc
-	loops until it can allocate the memory..?
-
-	* numbers.c (rep_foldl): new function, as rep_number_foldl, but
-	doesn't check that arguments are numeric, used by Fmin and Fmax
-
-	* values.c (rep_allocate_cons): fixed type error
-
-2000-07-05  John Harper  <john dcs warwick ac uk>
-
-	* repint.h: allocate cons cells in blocks of 8k instead of 4k
-	(16 instead of 8 on 64-bit)
-
-	* lispcmds.c (Fload): _only ever_ try without a suffix if the
-	NO-SUFFIX option is t. This avoids picking up un-suffixed files
-	by mistake (e.g. from the current directory)
-
-2000-07-04  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_INTERN_SPECIAL): call Fmake_variable_special
-	() on the symbol so that it gets any default value the user has
-	given it [this is compatible with previous library versions]
-
-	* symbols.c (search_special_environment): inline this when
-	rep_SPECIAL_ENV == Qt
-
-2000-07-03  John Harper  <john dcs warwick ac uk>
-
-	* rep-config.sh: source `../libtool --config' then use the
-	libtool method of extracting the flags to hardcode library dirs
-	when linking (-R, etc..). With help from Mark Hewitt and Dan
-	Winship
-
-	* lisp.c (rep_call_lispn): new function, used by
-	rep_call_lisp[0-4] to call bytecode functions without consing
-
-2000-06-27  John Harper  <john dcs warwick ac uk>
-
-	* record-profile.c: mechanism for a basic profiler
-
-2000-06-26  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c (rep_thread): added fields `exit_val' (value
-	returned from last form in thread), `poll' and `poll_arg'
-	(callback for polling when trying to wake suspended threads)
-	(thread_invoke, thread_yield): poll suspended threads
-	(thread_invoke): set exit_val of exited threads if they exited
-	normally
-	(thread_suspend): two extra args, `poll' and `poll_arg'
-	(Fthread_join): new function
-
-2000-06-24  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, lispcmds.c, lisp.c: when signalling Qbad_arg or
-	Qmissing_arg, first element of error data is function object if
-	known, else nil
-
-	* readline.c (completion_generator): call the function
-	rl-completion-generator in a separate thread context
-
-2000-06-23  John Harper  <john dcs warwick ac uk>
-
-	* gettext.c (rep_dl_init): set binding of `_' in `rep' module
-	to point to the `gettext' function
-
-2000-06-22  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (read_symbol): don't treat `0/...' as symbols
-
-	* numbers.c (rep_parse_number): [rational case] don't modify
-	the input string, error out if divide-by-zero
-
-	* version 0.12.2
-
-	* lisp.c (read_symbol): if first character is a non-symbol
-	character signal an error instead of just returning null
-
-	* repint.h (inline_Fcons): only declare this `extern inline' if
-	__OPTIMIZE__ is defined as well as __GNUC__ (GCC only inlines
-	in optimizing compilations)
-
-2000-06-21  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (dup, maybe_demote, promote_dup): inline calls to
-	these functions wherever their arguments are fixnums
-	(promote): declare this function inline
-	(ZEROP): new macro, inlines fixnum comparsion for zero
-
-	[ these changes give 10% speedup on `prime' benchmark ]
-
-2000-06-19  John Harper  <john dcs warwick ac uk>
-
-	* structures.c (structure_exports_inherited_p): if export_all
-	flag is set, then return t immediately
-	(F_structure_exports_all): new function
-
-2000-06-18  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12.1
-
-	* rep.c (usage): added \n\ line terminations, from Sam Falkner
-	<Sam Falkner central sun com>
-
-	* lispmach.c: when CHECK_STACK_USAGE is defined, embed the
-	stack assertions into the SAFE_NEXT macro. This ensures that
-	the stack is checked after _all_ instructions
-
-	* structures.c, macros.c: include <string.h> (and <memory.h> if
-	needed) (from George Lebl <jirka 5z com>)
-
-	* numbers.c: if SIZEOF_LONG == SIZEOF_LONG_LONG, then use long
-	conversion functions to define long long conversions (from
-	George Lebl <jirka 5z com>)
-
-2000-06-16  John Harper  <john dcs warwick ac uk>
-
-	* repint.h (inline_Fcons): when using GCC define this function
-	`external inline'. It mimics Fcons except it will only cause a
-	procedure call if the cons heap needs to grow
-
-	* values.c (rep_allocate_cons): new function, factored from
-	Fcons, allocates a new cons block
-
-	* lispmach.c (make_bytecode_frame, vm): use inline_Fcons where
-	appropriate (for speedup of 4-5%)
-
-2000-06-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.12
-
-2000-06-14  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c (vm): put rep_void_value into call stack when we
-	don't have the actual arguments as a list, not Qnil
-
-2000-06-12  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_handle_input_exception): don't catch uncaught
-	throws at top-level, it prevents scripts throwing out of
-	top-level recursive edits (maybe make this optional..?)
-
-	* tables.c: don't store hash values in signed integers
-
-2000-06-10  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c (vm): miscellaneous minor tweaks and cleanups
-
-2000-06-09  John Harper  <john dcs warwick ac uk>
-
-	* repint.h: don't include <build.h>
-	* lispcmds.c: include "build.h"
-
-2000-06-08  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fnconc): allow last arg to be non-proper-list
-
-2000-06-07  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (Fclosure_name): new function
-
-	* numbers.c (Fquotient): raise an arith-error if tryign to
-	divide by zero
-
-	* datums.c: added a comparison function, recursively compares
-	datum values if keys are the same
-
-2000-06-05  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c: allocate a cell16 type instead of cell8
-
-	* structures.c (F_external_structure_ref): allow foo#bar refs
-	to succeed if `foo' has been opened but not accessed
-
-	* datums.c, lisp.c: moved rep_scm_f and rep_scm_t to datums.c;
-	initialize always, not just when first read
-
-2000-06-01  John Harper  <john dcs warwick ac uk>
-
-	* readline.c (rep_dl_init): rl-completion-generator is no
-	longer declared special
-
-	* lisp.c (eval): only handle ((lambda ..) ..) forms inline if
-	Qlambda is still bound to #<subr lambda>
-
-	* lispcmds.c (Fload): Qafter_load_alist now contains thunks,
-	not forms
-
-2000-05-31  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.h, lispmach.c (OP_BINDOBJ): flushed
-	* lispmach.c: no longer worry about object bindings, so removed
-	rep_[un]bind_object
-
-	* continuations.c (Fcall_with_object): do object binding
-	locally (rep_[un]bind_object are gone)
-
-	* lispcmds.c (Fprog1, Fwith_object): removed, now in lisp
-
-2000-05-30  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fwhile): removed, now in lisp
-
-2000-05-29  John Harper  <john dcs warwick ac uk>
-
-	Work to make the interpreter tail recursive:
-
-	* lisp.c: special form subrs are now called with two repv
-	arguments, the list of parameters and a boolean marking whether
-	or not they occur in a function's tail position
-
-	(rep_eval, funcall): new functions, as Feval or rep_funcall,
-	but with an extra arg passing in tail position
-
-	(rep_apply): new function
-
-	(eval): where possible to tail call (tail position is t,
-	called object is a closure) package the closure and evaluated
-	arguments, then throw them back to the innermost
-	non-tail-position lambda application
-
-	(eval_lambda): when catching a tail call throw, and this is the
-	innermost non-tail-position, unpackage the call and evaluate it
-
-	* symbols.c, lispcmds.c: use rep_eval instead of Feval, support
-	tail position arguments
-
-	* lisp.c (rep_readl): fix bug when reading `#!' when not at the
-	start of a file
-
-	* lisp.c (rep_readl): recognize #F and #T
-
-2000-05-28  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c, numbers.c (read_symbol, rep_readl,
-	Fstring_to_number): added support for the scheme numeric
-	prefixes, i.e. #b, #o, #d, #x, and #e, #i
-
-2000-05-27  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_tuple, rep_TUPLE): new structure
-	(rep_CELL8P): new macro
-
-	* tuples.c: abstracted the old symbol cell memory management to
-	work for any cells containing two values (plus the car)
-
-	* values.c (Fgarbage_collect): call rep_sweep_tuples
-
-	* symbols.c, datums.c: use tuples for memory management of
-	symbols and datums
-
-	* datums.c (Fmake_datum): removed the PRINTER arg
-	(Fdefine_datum_printer): new function, associates a datum ID
-	with a PRINTER function
-
-2000-05-26  John Harper  <john dcs warwick ac uk>
-
-	* repint.h (POS, ABS): new macros
-
-	* numbers.c (rep_parse_number): better error checking
-	(rep_integer_foldl): new function, checks for INTEGERP args
-	(rep_integer_gcd): new function
-	(Fgcd): generalised to any number of arguments
-
-2000-05-25  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_bind_lambda_list_1): now takes a BINDER arg, a
-	function to call to bind each variable
-
-	* lispmach.c: support old-style parameter specs as well as
-	encoded ones
-
-	* symbols.c (rep_call_with_closure): new function
-
-	* repint.h, rep_lisp.h: moved closure macros and all backtrace
-	stuff from rep_lisp.h to repint.h
-
-	* lisp.c (rep_funcall): check if rep_bytecode_interpreter == 0
-	_after_ installing the function's closure
-
-	* symbols.c: lexical environment for interpreted code is now a
-	list of (LEXTAG . (SYMBOL . VALUE)) so that search_environment
-	can ignore bindings from compiled code. LEXTAG is a value that
-	can't appear normally
-	(rep_add_binding_to_env): new function
-
-	* structures.c (F_eval_in_structure): now called Feval (the
-	changes to the environment structure mean that it's usually
-	meaningless to eval within a non-null lexical environment)
-
-	* repint.h: moved some more structure defs here, so that
-	lispmach.c can open-code the `refg' instruction
-
-	* misc.c (Fcurrent_utime): new function, returns the current
-	unix time in microseconds
-	* unix_main.c (rep_utime): new function
-
-	* lispmach.c (Fjade_byte_code): now called Frun_byte_code
-
-	* lispmach.c: many changes, byte code subrs now store parameter
-	spec as an integer (number of <required, optional, rest>
-	parameters), these must now be lexical bindings. This was added
-	since function-call heavy programs were spending too much time
-	in rep_bind_lambda_list_1 (e.g. 17% for qscheme's fibonacci
-	benchmark). The lexical environment of compiled code is no
-	longer an alist (SYMBOL . VALUE); it's now just the list of
-	values
-
-	* lisp.c (copy_to_vector): new function, factored out of
-	rep_bind_lambda_list
-	(rep_bind_lambda_list_1): removed `&aux' code
-	(rep_funcall): obey the new bytecode interpreter calling
-	conventions (passing arg values in an array)
-	(Feval): this is no longer the lisp-visible `eval' function
-
-	* lisp.c (init_scm_booleans): remember to statically mark these
-	objects
-
-	* bytecodes.h (OP_EVAL): deleted
-	(OP_BIND): no longer has an argument, has the OP_EVAL opcode
-
-2000-05-24  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fload): gc-protect the file name while opening
-	the file
-
-2000-05-23  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.h, lispmach.c (OP_TEST_SCM, OP_TEST_SCM_F): new
-	instructions
-
-	* rep.c: updated usage text for new options
-
-2000-05-22  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (Fstring_to_number): return Qnil if the string
-	couldn't be parsed (not rep_NULL!)
-
-	* lispcmds.c (Fappend): last arg may be a non-list now, to form
-	an improper output list
-
-2000-05-21  John Harper  <john dcs warwick ac uk>
-
-	* values.c (cons_sweep): don't update global variables each
-	iteration, update temps then copy to globals before exiting
-
-2000-05-18  John Harper  <john dcs warwick ac uk>
-
-	* rep.h.in (rep_PTR_SIZED_INT_SIZEOF): new define, set by
-	configure (this used to be a sizeof () statement, but it's
-	needed at cpp-time now)
-
-	* rep_lisp.h (rep_CELL_ALIGNMENT): this is now set to the size
-	of the `repv' type (not hardcoded to 4). Apparently this is
-	needed for ia64
-
-	* main.c (check_configuration): function to check some of the
-	values supplied to configure, will suggest suitable values if
-	any are set wrongly
-
-	* main.c (rep_init_from_dump): switched order of calls to
-	rep_values_init () and rep_lisp_init ()
-
-2000-05-17  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (Fdebug_frame_environment): was matching frame
-	pointers one link too late
-	(Fdebug_inner_frame, Fdebug_outer_frame): new functions for
-	traversing the frame pointers
-
-2000-05-16  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c (rep_open_dl_library): don't call Fprovide on
-	features that are provided by structures (since the structure
-	hasn't been imported yet)
-
-	* regexp.c (regnarrate, regprop): made non-static
-
-	* lisp.c (rep_handle_error): removed all code to print errors,
-	rely totally on Qerror_handler_function
-
-2000-05-15  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (string->number, number->string): implemented these
-	functions
-
-	* lisp.c (Fdebug_frame_environment): only need to return two
-	values now, the saved environment and the saved structure, do
-	this in a cons cell not a list
-
-	* lisp.c (read_symbol): fix bug of allowing first non-zero
-	digit of octal numbers to be 8 or 9
-
-	* unix_dl.c (rep_open_dl_library): ignore null dlname entries
-
-2000-05-13  John Harper  <john dcs warwick ac uk>
-
-	* structures.c (F_eval_in_structure): optional third arg, the
-	environment to install
-
-	* numbers.c (rep_compare_numbers): new function, the original
-	comparison method that ignores exactness
-	(number_cmp): now treats inexact and exact versions of the same
-	number as being different (i.e. for eql and equal)
-	(rep_number_max, rep_number_min): new functions, propagate
-	any inexactness in their arguments
-
-	* lispmach.c: handle numeric comparisons correctly, call out to
-	handle max and min
-
-	* lispcmds.c (Fmemql): new function, member using eql
-	for comparisons
-	(=, >, <, >=, <=): compare numbers specially (folding exactness) 
-	(min, max): moved to numbers.c
-	(Fcase): use Feql for comparisons
-
-	* bytecodes.h, lispmac.h.c (OP_MEMQL, OP_NUM_EQ): new insns
-
-2000-04-29  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c: borrowed and adapted some code from OCaml virtual
-	machine to explicitly assign vm registers to physical registers
-
-2000-04-24  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c: if GNU CC is detected, then build an indirectly
-	threaded interpreter using its computed goto, and label
-	address, features. Initially from Ceri Storey, completed by me
-
-	* main.c, lisp.c, lispmach.c: call Fgarbage_collect with nil
-	arg not t
-
-2000-04-23  John Harper  <john dcs warwick ac uk>
-
-	* repint.h (rep_struct): new flag `export_all'. When set, _all_
-	local bindings in the structure are exported automatically
-
-	* structures.c: handle the `export_all' structure flag
-	(rep_structure_exports_all): new function
-
-	[ Note that this auto-export feature is intended for
-	dynamically defined modules, e.g. the *root-structure* of
-	extensible programs. ]
-
-2000-04-22  John Harper  <john dcs warwick ac uk>
-
-	* macros.c: set macro-environment to nil initially
-
-	* symbols.c (Fclosure_structure): new function, for the
-	compiler
-
-	* numbers.c (Fintegerp): return t for inexact integers (i.e.
-	floats with no fractional part)
-
-2000-04-21  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (Qoperating_system, Qrep_version, Qrep_interface_id,
-	Qrep_build_id, Qupcase_table, Qdowncase_table, Qflatten_table):
-	now lexically bound
-
-	* bytecodes.h, lispmach.c (OP_FLUID_REF, OP_FLUID_SET,
-	OP_FLUID_BIND): new insns
-
-	* fluids.c: new file, provides anonymous dynamic bindings
-	* main.c: call rep_fluids_init ()
-
-	* numbers.c (Frealp, Finexactp, Frationalp): deleted, in lisp
-
-2000-04-20  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c: don't produce exact results from inexact inputs
-
-2000-04-18  John Harper  <john dcs warwick ac uk>
-
-	More work to reduce VM consing, increases performance
-	noticeably:
-
-	* lisp.c (rep_bind_lambda_list_1): the inner core of
-	rep_bind_lambda_list in a separate function, takes an array of
-	values to bind to variables
-
-	* lispmach.c: when calling compiled functions use
-	rep_bind_lambda_list_1 to avoid consing a list of arguments
-
-	* lispmach.c: the binding stack is now a vector allocated on
-	the C stack (like the value stack), this reduces the amount
-	consing done by the VM. The maximum size of the binding stack
-	is stored in the upper 16 bits of the STKREQ argument
-
-	* lispcmds.c (Fload): never return an unitialized result value
-
-	* rep_lisp.h (rep_COMPILED_STACK): don't unbox this
-
-2000-04-17  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c, repint.h, lispmach.c: track number of variable
-	bindings in frame using a single integer, not a pair (limits
-	number of bindings in each frame to 2^16)
-
-	* structures.c (F_name_structure): flush the ref cache
-
-	* streams.c (Fstreamp): deleted
-	(Fpeek_char, Finput_stream_p, Foutput_stream_p): added
-
-	* lisp.c (F_load_autoload): lisp function for loading autoload
-	stubs
-
-2000-04-15  John Harper  <john dcs warwick ac uk>
-
-	* structures.c (F_eval_in_structure): set rep_env to Qnil while
-	evaluating
-
-	* lisp.c (rep_env): removed the kludge that only if the last
-	element is dotted to `t' will the global environment be
-	searched
-	* lispcmds.c (Fload): set rep_env to Qnil not Qt while loading
-	* lispmach.c, bytecodes.h: removed OP_BINDENV and related code
-	* rep_lisp.h (rep_USE_DEFAULT_ENV): set rep_env to Qnil
-
-	* symbols.c (Fsave_environment, Fset_environment): deleted
-	(search_environment): only ever returns cons cell or nil
-
-	* symbols.c (Fsymbol_value, Fdefault_value): fixed bug of
-	allowing special variables not in the environment to be read
-	(i.e. the gaol was broken for specials)
-
-	* unix_dl.c (rep_open_dl_library): use rep_STRUCTUREP instead
-	of F_structurep
-
-	* symbols.c (Fset_special_environment): now takes a second
-	argument, the structure whose environment should be set
-
-	* repint.h, structures.c: moved rep_structure type definition
-	and some macros to <repint.h>
-
-	* rep_lisp.h (rep_funarg): removed `special_env' field, now
-	stored per structure (module)
-
-2000-04-14  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, bytecodes.h: removed OP_DSET bytecode
-
-	* lisp.c (rep_bind_lambda_list): bind parameters in last-first
-	order so that they end up in the environment in first-first
-	order (same as when bound by the compiler)
-
-	* bytecodes.h: bumped major version to 10 to reflect the new
-	order of lexical bindings made by function application
-	(OP_UNQUOTEALL_0, OP_POP_ALL): new instructions
-	* lispmach.c (OP_UNBINDALL_0, OP_POP_ALL): implemented
-
-2000-04-12  John Harper  <john dcs warwick ac uk>
-
-	* values.c (Fgarbage_collect): return stats if arg is t, not if
-	it's nil
-
-	* rep_lisp.h (rep_funarg): removed next and fh_env fields
-	* files.c: store fh_env in current structure, associated with
-	an uninterned symbol
-	* symbols.c: allocate closures in blocks of N
-
-	* lisp.c (Qdebug_entry, Qdebug_exit, Qdebug_error_entry): these
-	are now special variables, so they can be accessed from within
-	any structure
-
-	* datums.c (Fdatum_set): new function
-
-	* structures.c (F_set_interface): remove the clause that the
-	passed-in interface may be modified, liable to introduce bugs
-
-	* symbols.c (Fdefault_value, Fset_default, Fdefault_boundp):
-	don't only look at special bindings, look for global lexical
-	bindings as well
-
-	* lisp.c (rep_load_autoload): when throwing error, don't refer
-	to uninitialized variable
-
-2000-04-11  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (Fdefvar): use default-boundp instead of boundp
-	when checking if whether or not to set the value
-	(Fset_default): if symbol isn't already special, call
-	Fmake_variable_special () on the symbol
-	(Fmake_variable_special): if symbol isn't already special, call
-	rep_get_initial_special_value () to try to forward an existing
-	value
-
-2000-04-10  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (Fdefvar): fixes for working with predefined
-	specials
-
-	* lispcmds.c (Fload): ignore the NO-SUFFIX parameter while
-	searching for dl libraries
-
-	* unix_dl.c (rep_open_dl_library): when opening a structure,
-	correctly set feature_sym to the name of the structure
-
-2000-04-09  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_symbol): removed `prop_list' field
-	* symbols.c (plist_structure): namespace for property lists
-
-	* unix_dl.c (rep_open_dl_library): don't return 0 if the dl has
-	already been loaded
-
-	* structures.c (F_intern_structure): always load from within
-	the `*root-structure*'
-	(Frequire): don't call %intern-structure, for the above reason,
-	do everything locally
-	(F_make_closure_in_structure): new function
-
-2000-04-07  John Harper  <john dcs warwick ac uk>
-
-	Many changes to give rep a module system:
-
-	* structures.c: new file, provides the first-class environment
-	objects needed to implement the module system, and the core of
-	the module system itself (mostly inspired by Scheme48)
-
-	* symbols.c: dereference global bindings through structures
-	(print_symbol): escape `#' characters
-	(Fdefvar): if first defvar for the symbol, call
-	rep_get_initial_special_value to try to forward any value set
-	by the user
-	(Fmark_symbol_defined): deleted
-	(Fset_const_variable, Fconst_variable_p): deleted, immutable
-	bindings are provided by structures.c
-	(Qnil, Qt): no longer made special
-
-	* rep_lisp.h (rep_funarg, struct rep_call_stack): added fields
-	to store the current structure
-	(rep_ADD_INTERNAL_SUBR): new macro, doesn't export the subr
-	(rep_symbol): removed the `value' field
-
-	* values.c (rep_gc_threshold): doubled to 200k
-	(rep_mark_value): updated for object changes
-
-	* unix_dl.c (rep_open_dl_library): return a repv result, the
-	structure provided by the dl if applicable
-
-	* main.c (rep_init_from_dump): call rep_structures_init () and
-	rep_datums_init ()
-	(rep_load_environment): handle the caller having a different
-	current structure than the default structure
-
-	* macros.c (Fmacroexpand): ENVIRONMENT is now a function to
-	call to do the actual expansion if non-nil; this also
-	simplifies the memoization
-
-	* lispmach.c (Fjade_byte_code): access globals in current
-	structure, deprecated OP_DSET, added OP_STRUCT_REF and
-	OP_SCM_TEST
-
-	* bytecodes.h (OP_STRUCT_REF, OP_SCM_TEST): new bytecodes
-
-	* lispcmds.c (Fload): removed the IN-CURRENT-ENV option;
-	filename suffixes are stored in a cons cell in %load-suffixes
-	in the current structure; return value of last loaded form
-	evaluated
-	(Ffeaturep, Fprovide, Frequire): moved to structures.c
-
-	* lisp.c (rep_readl): read foo#bar as (structure-ref foo bar)
-	(rep_readl, rep_scm_f, rep_scm_t): support scheme booleans
-	(rep_load_autoload): if the filename is a symbol, require that
-	module
-	(eval): increment and check recursion depth counter
-
-	* timers.c, tables.c, repsdbm.c, repgdbm.c, readline.c,
-	gettext.c: modularized -- these each create their own structure
-
-	* files.c (rep_call_file_handler): for now, dereference file
-	handler names in the default structure (should probably use a
-	separate namespace..)
-
-	* datums.c: unmodularized, now part of the core
-
-	* continuations.c: track addition of structure field to call
-	stack
-
-2000-04-13  John Harper  <john dcs warwick ac uk>
-
-        * version 0.11.3
-
-2000-04-12  John Harper  <john dcs warwick ac uk>
-
-        * lisp.c (rep_load_autoload): when throwing error, don't refer
-        to uninitialized variable (merged from HEAD)
-
-2000-04-09  John Harper  <john dcs warwick ac uk>
-
-        * version 0.11.2
-
-2000-04-06  John Harper  <john dcs warwick ac uk>
-
-	* values.c, lispmach.c, lisp.c: removed all min-stack stuff, an
-	ancient relic from the Amiga
-
-	* lisp.c (fast_getc): inlined getc function that handles
-	reading from files locally (seems to decrease start up time by
-	around 25%), only called from within loops
-
-	* values.c (cons_sweep): don't try to free unused allocation
-	blocks, profiling shows this function takes around 10% time
-	cumulatively, so attempt to optimize it
-
-	* continuations.c (primitive_call_cc): save current regexp data
-	across continuations
-
-2000-04-03  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (symbol_cmp): compare symbol names if non-equal
-
-	* main.c (rep_load_environment): remember to protect the file
-	name until it's actually used
-
-2000-03-29  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (rep_misc_init): removed references to `value' field
-	of symbols
-
-	* symbols.c (Fmark_symbol_defined): new function, sets
-	rep_SF_DEFVAR flag if allowed to
-	(Fdefine_value): deleted, now a macro
-
-	* lispmach.c (Fjade_byte_code): implement the OP_DSET
-	instruction inline (with comment that it's deprecated)
-
-	* lispcmds.c (Fdefmacro, Fdefun, Fdefconst): deleted, now
-	macros
-
-2000-03-28  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (rep_number_mul): fix small typo
-
-2000-03-22  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_readl): handle EOF terminated `#\X' formatted
-	characters
-
-2000-03-21  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c: `#define RTLD_GLOBAL 0' if configure detected a
-	version of Tru64 with a broker loader; this means that librep
-	now fully supports Tru64 (from Aron Griffis
-	<agriffis bigfoot com>)
-
-2000-03-20  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c (thread_invoke): calculate rep_sleep_for ()
-	length correctly (was subtracting twice!)
-
-2000-03-19  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_bind_lambda_list, rep_eval_lambda): both have an
-	extra argument, EVAL-IN-ENV. When true rep_bind_lambda_list
-	won't evaluate the arguments in the _previous_ innermost
-	environment, but the _current_ innermost environment. All
-	callers changed.
-
-	(eval): call inline lambda expressions directly, without
-	evaluating the car to a closure that is then discarded
-	immediately
-
-2000-03-15  John Harper  <john dcs warwick ac uk>
-
-	* datums.c: plugin for user-defined opaque data types
-
-2000-03-14  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_readl): some work to accept standard CL and
-	Scheme syntax -- recognize `#| ... |#' block comments; read
-	characters as #\X or #\WORD for WORD in: space, newline,
-	backspace, tab, linefeed, return, page, rubout; read vectors as
-	`#(...)'
-
-	* lispcmds.c (Fprog2): deleted, now a macro
-
-	* lispcmds.c (Funwind_protect): noted in doc string that
-	behaviour in conjunction with call/cc is undefined
-
-	* symbols.c (Fsetq_default): deleted, now a macro
-
-2000-03-13  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_bind_lambda_list): call Fcopy_sequence () on
-	&rest values (may prevent the program being modified)
-
-	* macros.c: new file, implements Fmacroexpand (). Added a
-	memoization facility for when env == nil. Caches all macro
-	expansions in an eq hash table, discards cached values each gc
-
-	* lispcmds.c (Fdefmacro): call rep_macros_clear_history ()
-	* main.c (rep_init_from_dump): call rep_macros_init ()
-	* values.c (Fgarbage_collect): call rep_macros_before_gc ()
-
-	* symbols.c (Flet, Fletstar): deleted, now macros
-	* lispcmds.c (Ffunction, Fif, Fand, For): ditto
-
-2000-03-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.11.1
-
-	* lispmach.c (Fjade_byte_code): open-coded some fixnum
-	arithmetic operations
-
-	* unix_dl.c (x_dlsym) [DLSYM_NEED_USCORE]: use alloca instead
-	of malloc
-
-	* numbers.c (rep_parse_number): some optimizations
-
-2000-03-11  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fload): use Fexpand_file_name to concatenate
-	file names with directories
-
-	* tables.c (Fequal_hash): handle non-fixnum numbers
-
-2000-03-10  John Harper  <john dcs warwick ac uk>
-
-	* rep.c, main.c: updated usage information
-
-	* repgdbm.c (Fgdbm_fetch): always copy the returned string,
-	since it may not be zero terminated
-
-2000-03-07  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (maybe_demote): fixed typo when demoting rationals
-	to bignums
-
-	* streams.c (Fformat): implemented the `+' and ` ' flags
-
-2000-03-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.11
-
-2000-03-02  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c: in most functions possibly returning floats,
-	return integers where possible
-
-2000-03-01  John Harper  <john dcs warwick ac uk>
-
-	* numbers.c (rep_print_number_to_string): avoid trying to print
-	non-numeric things as numbers
-
-	* misc.c (Fsystem): given an interactive decl
-
-	* repgdbm.c: new file, binding for GDBM. Mostly compatible with
-	sdbm binding
-
-	* repdoc.c: use GDBM instead of SDBM
-
-	* values.c (rep_box_string): new function, create a lisp string
-	from a malloc-allocated string (and assume responsibility for
-	its memory)
-
-2000-02-29  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (symbol_print): try harder to never print something
-	that may be read as a number
-
-	* numbers.c (number_cmp): fix stupid bug of subtracting floats
-	to see if they're equal, but then truncating result to an
-	integer (e.g. (= 0.2 0.8) -> t)
-
-2000-02-28  John Harper  <john dcs warwick ac uk>
-
-	* timers.c, repsdbm.c, readline.c, gettext.c: don't use
-	rep_dl_subrs or rep_dl_feature (some BSD systems have (had?)
-	problems with data segment relocations)
-
-2000-02-27  John Harper  <john dcs warwick ac uk>
-
-	* values.c: represents strings as a two-word header and a
-	separate chunk of data. This saves one word per string, and may
-	also improve gc performance (only need to touch (contiguous)
-	headers when gc-ing, so better dcache performance)
-
-	* streams.c (Fformat): use rep_print_number_to_string for all
-	numeric conversions
-
-	* rep_lisp.h: moved unnecessary definitions to .c files.
-	Changed how strings are represented
-
-	* lispcmds.c (=, /=): these functions now accept N arguments,
-	and do a general (i.e. not just numeric) comparison
-
-	* lispmach.c, bytecodes.h: deleted OP_NUMEQ and OP_NUM_NOTEQ;
-	OP_LSH becomes OP_ASH
-
-2000-02-25  John Harper  <john dcs warwick ac uk>
-
-	* rep.h.in: added rep_long_long define, will be `long long' if
-	available, `long' otherwise
-
-	* rep_lisp.h: new type rep_Number, only the bits in the car are
-	publicly accessible
-	* numbers.c: new file, handles all numeric stuff
-	* values.c: don't register numeric types, mark rep_Number
-	* main.c: call rep_numbers_init ()
-	* lisp.c: parse new number representations correctly
-	* lispcmds.c: moved all arithmetic functions to numbers.c
-
-	* bytecodes.h, lispmach.c (OP_QUOTIENT, OP_FLOOR, OP_CEILING,
-	OP_TRUNCATE, OP_ROUND, OP_EXP, OP_LOG, OP_SIN, OP_COS, OP_TAN,
-	OP_SQRT, OP_EXPT): new instructions
-
-2000-02-23  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c (rep_max_sleep_for): handle root_barrier == 0
-
-2000-02-17  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c (OP_DSET): call Fdefine_value () to implement this
-	instruction
-
-	* lispcmds.c (Ffunction): dereference symbols, instead of
-	enclosing them
-
-2000-02-14  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c (Fjade_byte_code): fix typo in OP_SETG instruction
-
-	* tables.c: added support for weakly-keyed hash tables
-
-	* continuations.c: test if root_barrier == 0 at sensible points
-
-2000-02-12  John Harper  <john dcs warwick ac uk>
-
-	* files.c (rep_file_fdopen): new function, open a file object
-	from a file descriptor and libc mode string
-
-2000-02-09  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_load_autoload): handle overwriting macro
-	definitions
-	(rep_funcall): fixed the macro autoload magic
-
-	* lispmach.c (Fmake_byte_code_subr): allow a single symbol as
-	the arg spec
-
-2000-02-08  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (Fmacroexpand): while evaluating the macro expansion,
-	bind the special variable macro-environment to the environment
-	passed into macroexpand. This allows macros to expand inner
-	macro forms correctly
-
-	* continuations.c (Fthread_queue_length): deleted this
-	function, it's pretty useless
-
-	* readline.c (rep_dl_init): set rl_basic_quote_characters to
-	include only the double-quote character (from Matt Krai)
-
-	* continuations.c (rep_max_sleep_for): new function, returns
-	the maximum number of milliseconds that the current thread may
-	sleep for
-	* unix_main.c (wait_for_input): use rep_max_sleep_for
-
-	* continuations.c (make_thread): protect the thunk against gc
-	until it's actually called
-
-	* lisp.c (rep_funcall): remember to switch environment before
-	loading autoload cells
-
-2000-02-07  John Harper  <john dcs warwick ac uk>
-
-	* continuations.c (unlink_thread): unlink from the actual
-	barrier the thread is in, not the current root
-	(thread_suspend): don't use LONG_MAX when setting timeval
-	members, it produces warning with the weird Solaris definition
-
-	* lisp.c (rep_funcall): don't install closed environments until
-	last possible moment (notably, not until _after_ evaluating any
-	arguments)
-
-	* lisp.c (read_symbol): make "," and "`" terminate symbols
-
-	* lispmach.c (bound_specials): fixed for new way of remembering
-	bound variables
-
-	* lispcmds.c (Fload): fix interpreted-mode breaking dl loads
-
-2000-02-06  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, bytecodes.h (rep_FORBID, rep_PERMIT): new
-	instructions
-
-	* lisp.c: call debugger in its own dynamic root
-
-	* rep.c: create a dynamic root
-
-	* continuations.c: introduced the idea of continuation
-	barriers, a method of limiting and/or detecting control flow
-	when using continuations. Can be similar to Guile's dynamic
-	roots. Added support for software threads
-
-	(call-with-object, call-with-dynamic-root, call-with-barrier,
-	continuation-callable-p): functions for manipulating barriers
-
-	(make-thread, thread-yield, thread-delete, thread-suspend,
-	thread-wake, threadp, thread-suspended-p, current-thread,
-	thread-queue-length, thread-forbid, thread-permit): thread
-	functions
-
-	* rep_lisp.h (rep_MAY_YIELD, rep_FORBID, rep_PERMIT): new
-	macros dealing with thread preemption
-	(rep_TEST_INT_SLOW): call rep_MAY_YIELD
-
-	* lisp.c, lispmach.c (rep_funcall, Fjade_byte_code): call
-	rep_MAY_YIELD (preempt threads) at suitable points
-
-	* unix_main.c (wait_for_input): if it might be beneficial,
-	don't sleep in select (), just poll then yield
-
-	* misc.c (rep-interface-id): new variable
-
-2000-02-04  John Harper  <john dcs warwick ac uk>
-
-	* tables.c (table_mark): remember to mark hash_fun and
-	compare_fun
-
-	* tables.c (Fequal_hash): improved this to break off at a
-	certain depth of recursion, not to resort to eq hashing for
-	unknown types (use their type code instead), and don't use XOR
-	to combine cons hashes
-	(hash_value): do direct calls for all predefined hash functions
-
-2000-02-03  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c: handle new binding mechanisms, new way of binding
-	exception handlers `(error . (PC . SP))', try to optimize
-	function inlining (for ultrasparc anyway)
-
-	* lisp.c (rep_special_bindings): new variable, alist of special
-	variable bindings currently in effect
-	(max-lisp-depth): now a single-parameter function
-
-	* symbols.c (rep_bind_symbol, rep_unbind_symbols): now store
-	binding history as a _single_ cons cell (SPECIALS . LEXICALS),
-	the number of bindings of each type
-	(Fset, Fsymbol_value, Fdefault_value, Fset_default): handle
-	deep binding of special variables
-
-	* values.c (garbage-threshold, idle-garbage-threshold): now
-	single-parameter functions, not variables
-
-	* lisp.c, lispcmds.c, rep_lisp.h, symbols.c, values.c: removed
-	all rep_Var cruft
-
-	* files.c, lisp.c, lispcmds.c, main.c, misc.c, unix_dl.c,
-	unix_main.c: don't access `SYM->value' directly, use Fset and
-	Fsymbol_value
-
-	* main.c: removed --warn-shadowing option
-
-	* continuations.c: save and restore rep_special_bindings in the
-	environment now that special bindings are deep-bound
-
-2000-02-02  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_stack_bottom): moved here from continuations.c
-	* continuations.c: made into a plugin (feature `callcc')
-
-	* lispcmds.c (Fload): search for foo.la before libfoo.la
-
-2000-02-01  John Harper  <john dcs warwick ac uk>
-
-	* tables.c: new file, implements hash tables
-
-	* lispmach.c (Fjade_byte_code): check if needing to gc before
-	entering the main loop (needed when tail-calling). Also, check
-	for exceeding max-lisp-depth. (First pointed out by Ceri Storey)
-
-	* rep-xgettext.jl: new options --include and --only-commands
-
-	* unix_dl.c, timers.c: remember alloca preprocessor magic
-	(pointed out by Daniel Burrows)
-
-2000-01-31  John Harper  <john dcs warwick ac uk>
-
-	* repdoc.c: check for errors from sdbm_store ()
-
-	* lisp.c (rep_bind_lambda_list): now handles improper lists of
-	bound variables (i.e. (foo . bar) == (foo &rest bar))
-
-	* lispmach.c (Fjade_byte_code): fixed bug in `unbindall'
-	instruction (not resetting impurity correctly)
-
-2000-01-30  John Harper  <john dcs warwick ac uk>
-
-	* values.c (rep_box_pointer, rep_unbox_pointer): new functions,
-	translate from C pointers to lisp data, and back again
-
-	* lisp.c (Fdebug_frame_environment): new function, returns an
-	environment given a frame pointer
-	(Feval): call debug-entry, debug-exit and debug-error-entry
-	with an extra argument, a boxed frame pointer
-
-	* lispmach.c (Fjade_byte_code): handle calling subrs that are
-	wrapped in closures
-
-	* continuations.c: removed unused STACK_SLOP definition,
-	removed extra call to FLUSH_REGISTER_WINDOWS
-
-2000-01-28  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_init_from_dump): find the stack base by looking
-	at the passed in address of `argc'. This is a kludge, but it's
-	the best method I can find..
-
-	* continuations.c: fixes for Linux/ix86, let's hope it still
-	works on sparc!
-
-	* continuations.c: support for `call/cc' (also has the alias
-	call-with-current-continuation). Only tested on sparc so far,
-	may need tweaking for other architectures. Doesn't attempt to
-	save or restore dynamic bindings
-
-	* main.c (rep_init_from_dump): init continuations, and save
-	initial stack pointer
-
-	* find.c (saved_regexp_data): made global, and added rep_ prefix
-	* files.c, repint.h: moved file-ops enum decl and blocked_ops
-	structure decl to repint.h, since continuations need access	
-	* lisp.c (lisp_depth, max_lisp_depth): added rep_ prefix and
-	made global
-
-2000-01-27  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (Fget, Fput): properties don't have to be symbols
-	now, use `equal' comparisons as in scheme
-
-2000-01-25  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (interrupt_signal_handler,
-	termination_signal_handler): if a signal arrives before a
-	previous signal has been handled (i.e. the system is
-	unreponsive) then raise the signal causing the default action
-	(i.e. termination)
-
-	* rep-xgettext.jl: support for outputting strings as a file of
-	C code
-
-	* rep-xgettext.jl (scan): support `case' statement
-
-	* main.c (rep_top_level_exit): call before-exit-hook
-
-	* unix_main.c (rep_sig_restart): use siginterrupt () instead of
-	sigaction () when possible (it seems to be more reliable in
-	certain cases?)
-
-2000-01-24  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fcase): new special form, similar to in scheme
-	but with `t' instead of `else'
-
-	* lispmach.c (Fjade_byte_code): if GCC, use its variable length
-	auto arrays to allocate the VM stack. This allows tail-calls to
-	deallocate and free stack as required, cf. alloca () which
-	gives no method for freeing allocations except by exiting the
-	function
-
-2000-01-23  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.h (OP_RETURN, OP_UNBINDALL): new instructions
-
-	* lispmach.c: implement OP_RETURN and OP_UNBINDALL (which
-	actually unbinds to the argument values, not all the way).
-	Keep track of dynamic `impurity', the number of dynamic
-	bindings (of any type) currently in place. When this value is
-	zero, and there's a call to bytecode followed by a return
-	instruction, just goto the top of the function, snapping all
-	arguments
-
-	* symbols.c (rep_unbind_symbols): now returns an int, the
-	number of _special_ bindings it removed
-
-	* lisp.c (rep_funcall): explicitly protect fun and args, now.
-	Tail-calling may remove them from the call stack
-	(rep_bind_lambda_list): try to optimize lexical binding
-	(rep_funcall): call bytecode interpreter with new fourth
-	argument, and don't unbind its frame on return
-
-2000-01-22  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.h: new bytecode version 9.0
-	(OP_REFN, OP_SETN): lexical address instructions
-	(OP_REFG, OP_SETG): global lexical instructions
-	(OP_BINDSPEC): create a special binding
-
-	* lispmach.c: support the new instructions
-	(OP_SETQ, OP_REFQ): remove optimisations for lexical scope
-	(OP_BIND): always creates lexical bindings
-
-	* rep_lisp.h (rep_cons_block): ensure that the cons cells are
-	aligned to sizeof (rep_cons) -- prevents any cell straddling a
-	cache line boundary
-
-	* rep_lisp.h, lispmach.c, lisp.c, symbols.c: closures now have
-	a flag in their car marking whether or not they're allowed to
-	call the bytecode interpreter. The variable rep_bytecode_interpreter
-	contains either the interpreter to call, or a null pointer.
-	Fset_environment scans for Qjade_byte_code
-
-2000-01-19  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (rep_handle_error): if error-handler-function is
-	defined and functionp, then call it, otherwise handle the error
-	locally
-
-	* rep.h.in: define rep_INTERFACE to the current library
-	interface version
-
-	* lisp.c (rep_handle_error): for errors with >3 data values,
-	print as a list
-
-	* values.c (run_guardians): fixed bug where cons GC mark bits
-	could be mangled when moving list items
-
-	* lisp.c (rep_lisp_prin): when printing closures, don't
-	truncate long names
-
-2000-01-18  John Harper  <john dcs warwick ac uk>
-
-	* values.c (rep_register_type): if no comparison function is
-	given, just compare repv's
-
-2000-01-15  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (rep_expand_file_name): merge contiguous slashes
-	in filenames, instead of assuming they represent a new root
-
-2000-01-12  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_guardian): new data type (cell16)
-	* values.c (Fmake_primitive_guardian, Sprimitive_guardian_push,
-	Sprimitive_guardian_pop): new functions, they provide the
-	underlying mechanism for the make-guardian function (see
-    ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/pubs/guardians.ps.gz)
-
-	* values.c (Qafter_gc_hook): new hook, called after each gc
-
-2000-01-09  John Harper  <john dcs warwick ac uk>
-
-	* version 0.10
-
-2000-01-08  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: only include ../intl objects in libgettext.la if
-	USE_INCLUDED_LIBINTL is set to `yes'. Also ensure that
-	libgettext.la exports its symbols
-
-	* gettext.c: if LIBC_GETTEXT is defined remove the gnu_
-	prefixes to libintl function invocations
-
-2000-01-07  John Harper  <john dcs warwick ac uk>
-
-	* debug-buffer.c: don't generate stack backtraces if gcc's
-	__builtin_return_address () is broken (patch from George
-	<jirka 5z com>)
-
-	* symbols.c (Fdefvar): allow symbols to be re-defvar'd from
-	restricted environments, but only if it was originally defvar'd
-	from a restricted environment. Also, only set the value if it's
-	unbound, or weak, but not weak-mod, and we're unrestricted
-
-1999-12-31  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c: use stdio method of signalling errors when things
-	haven't been initialised yet; also read Qdl_load_reloc_now
-	safely
-
-	* rep_lisp.h, symbols.c, values.c: some tweaks for new dumping
-	regime
-
-	* rep.c: use rep_load_environment () and rep_top_level_exit ()
-
-	* main.c (rep_init_from_dump): new function, as rep_init but
-	with a file of dumped definitions
-	(rep_load_environment): new function, called with a single arg,
-	the script to load (after loading init.jl) to boot the system
-	(rep_top_level_exit): new function, returns the value that the
-	process should return when it exits
-
-	* lispcmds.c (Ffeaturep, Fprovide, Frequire): in C again
-
-1999-12-23  Ceri Storey  <cez nomorespam freeserve co uk>
-
-	* readline.c (init_bouncing_parens, find_matching_paren,
-	match_paren): steal parentheses bouncing code from guile
-
-1999-12-21  John Harper  <john dcs warwick ac uk>
-
-	* regexp.c (regmatch): fix typo in non-greedy operator match
-	(from Matt Kraai <kraai ghs com>)
-
-	* lispcmds.c (Fif): make (if t) => nil, not nil
-
-1999-12-19  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c (rep_open_dl_library): protect `file_name' against
-	gc while calling load_requires ()
-
-	* lispcmds.c (Fload): scan after-load-alist when loading dl
-	objects, as well as lisp files
-
-1999-12-17  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (Fdefine_value): new function, a combination of set
-	and defvar (but doesn't imply dynamic scoping)
-
-	* unix_dl.c (rep_open_dl_library): the .la file may have a line
-	"rep_requires='FEATURES...'" naming other dl objects to load
-	before this one. Treat the returned value of rep_dl_init as a
-	feature if it's a symbol and isn't nil or t. Add the feature by
-	hand, instead of calling provide
-
-	* lispcmds.c (Qfeatures): new symbol, initialised to nil
-
-	* timers.c, repsdbm.c, readline.c, gettext.c: don't use
-	rep_dl_feature anymore, just return the feature symbol
-
-1999-12-16  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c: check .la files for `rep_open_globally=yes' line,
-	if so, open with RTLD_GLOBAL to export all symbols
-
-1999-12-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.9
-
-1999-12-11  John Harper  <john dcs warwick ac uk>
-
-	* rep-xgettext.jl (output): fixed checking for multiple
-	occurrences in the same file
-
-	* bytecodes.h (OP_CAAR, OP_CADR, OP_CDAR, OP_CDDR, OP_CADDR,
-	OP_CADDDR, OP_CADDDDR, OP_CADDDDDR, OP_CADDDDDDR,
-	OP_CADDDDDDDR): new instructions
-
-	* lispmach.c: execute c..r instructions
-
-1999-12-10  John Harper  <john dcs warwick ac uk>
-
-	* readline.c: new plugin, wraps the readline () function, or
-	calls Fread_line if not available
-
-1999-12-07  John Harper  <john dcs warwick ac uk>
-
-	* rep-xgettext.jl: scan the car of lists as well as the cdr;
-	only emit duplicated strings once
-
-	* lispmach.c, bytecodes.h (OP_ENCLOSE): new instruction, a
-	single-argument version of OP_MAKE_CLOSURE
-
-	* symbols.c (Fmake_variable_special): new function
-
-1999-12-06  John Harper  <john dcs warwick ac uk>
-
-	* main.c (usage): fix backslash lossage (pointed out by Conrad
-	Steenberg <conrad srl caltech edu)
-
-1999-12-05  John Harper  <john dcs warwick ac uk>
-
-	* version 0.8.1
-
-1999-12-04  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (Fdefvar): set `documentation' property not
-	`variable-documentation'
-
-1999-11-29  John Harper  <john dcs warwick ac uk>
-
-	* values.c, unix_processes.c, unix_main.c, timers.c, symbols.c,
-	streams.c, repsdbm.c, misc.c, main.c, lispmach.c, lispcmds.c,
-	lisp.c, find.c, files.c: changed embedded doc keys
-
-1999-11-28  John Harper  <john dcs warwick ac uk>
-
-	* version 0.8
-
-1999-11-27  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c, timers.c, symbols.c, repsdbm.c, files.c:
-	remember to add to rep_data_after_gc when allocating data
-
-1999-11-25  John Harper  <john dcs warwick ac uk>
-
-	* values.c, unix_dl.c, timers.c, symbols.c, rep_subrs.h,
-	rep_lisp.h, rep.c, rep-xgettext.jl, main.c, lispmach.c,
-	lispcmds.c, lisp.c, files.c, bytecodes.h:
-
-	More big changes: unified the value/function namespaces,
-	evaluate the function argument of list forms as normal, don't
-	allow function names in place of actual functions (subrs or
-	closures), lambda is now a special form evaluating to a closure
-
-	In case you hadn't noticed, this is very scheme-like; the
-	reason is that gaolled code can escape through naming functions
-	that it can't call itself
-
-1999-11-21  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Ffunctionp, Fmacrop, Fspecial_form_p,
-	Fsubr_name): use Fsymbol_function for dereferencing the symbol,
-	instead of just looking in the function slot
-
-	* files.c (Fset_file_handler_environment): new function, gives
-	a safe method of granting access to checked file handlers
-	(provided the actual invoking function is accessible)
-
-	* symbols.c (Fmake_closure): initialise fh_env
-	* values.c (mark_value): mark fh_env
-
-	* rep_lisp.h (rep_USE_DEFAULT_ENV): new macro
-
-1999-11-19  John Harper  <john dcs warwick ac uk>
-
-	* gettext.c: all gettext functions are now prefixed by gnu_
-
-1999-11-18  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fstring_equal, Fstring_lessp): case-insensitive
-	string comparisons
-
-	* rep-xgettext.jl: new script, scan lisp files for strings that
-	should be translated
-	* gettext.c: new plugin, provides _, bindtextdomain and
-	textdomain functions
-
-1999-11-16  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (Fformat): support the `n$' prefix for i18n, i.e.
-	doing (format nil "%2$s, %1$s" "hello" "world") gives "world,
-	hello"
-
-1999-11-15  John Harper  <john dcs warwick ac uk>
-
-	* repint_subrs.h, rep_subrs.h (rep_call_stack): now in rep_subrs.h
-
-	* rep_lisp.h (rep_SF_DEFVAR): new flag, has the symbol been
-	defvar'd (set by rep_INTERN_SPECIAL)
-	* symbols.c (Fdefvar): moved here from lispcmds.c, allow
-	restricted environments to defvar un-defvar'd symbols
-
-	* unix_processes.c (run_process, rep_system): reset SIGPIPE to
-	SIG_DFL before calling exec () (from lantz moore
-	<lmoore contigo com>)
-
-1999-11-11  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (Fsetplist, Fsymbol_plist, Fput): symbol must be in
-	caller's special environment
-
-	* lisp.c, lispmach.c: only allow bytecode subrs to be called if
-	jade-byte-code is in the function environment of the called
-	function
-
-1999-11-10  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_Funarg): new cell8 type, replaces rep_File,
-	describes an enclosed function
-	(rep_SF_SPECIAL, rep_SF_WEAK, rep_SF_WEAK_MOD): new symbol
-	flags, for special variables
-	(rep_COMPILED_MACRO_P): deleted, there's now no difference
-	between bytecode objects representing functions or macros
-	(rep_PUSH_CALL, rep_POP_CALL): new macros for handling the Lisp
-	call stack
-	(rep_INTERN_SPECIAL): new macro, similar to rep_INTERN, but
-	marks the variable as being special
-
-	* lisp.c (rep_env, rep_fenv, rep_special_env): the environments
-	for lexical variables, functions and special variables (need
-	special environment for access-control purposes)
-	(rep_funcall): lambda expressions and bytecode objects are no
-	longer considered functions -- only closures, subrs and
-	autoloads are functions (it may not be secure to call an
-	unclosed function)
-
-	* symbols.c (Fmake_closure, Fclosure_function,
-	Fset_closure_function, Fclosurep, Fset_variable_environment,
-	Fset_function_environment, Fset_special_environment): new
-	functions
-	(Fsave_environment): new special form
-	(rep_bind_symbol, rep_unbind_symbols): handle both lexical and
-	special variables
-	(rep_bind_function, rep_unbind_functions): new functions
-	(Fsymbol_value, Fset, Fdefault_value, Fset_default): handle
-	lexical scoping and dynamic scoping, and the new access rules
-	for special variables (the WEAK and WEAK_MOD flags to protect
-	exploits from restricted special environments)
-	(Fflet, Fmacrolet): new special forms
-	(Fspecial_variable_p): new function
-
-	* values.c: support Funarg type (closures)
-
-	* lispcmds.c (Ffunction): special form to create closures from
-	constant lambda expressions
-	(Fdefvar): access control/protection when a restricted special
-	environment has already defined the special variable (and
-	therefore it's already in the restricted environment)
-	(Fload): new optional fifth arg: IN-CURRENT-ENVIRONMENT, unless
-	non-nil evaluate forms in a new lexical environment
-	(Ffeaturep, Fprovide, Frequire): deleted, now in lisp.jl
-
-	* lispmach.c (Fjade_byte_code): handle the new instructions,
-	special-case lexical binding in OP_SETQ and OP_REFQ instead of
-	dynamic bindings
-
-	* bytecodes.h: create a new major bytecode version
-	(OP_MAKE_CLOSURE, OP_FBIND, OP_CLOSUREP, OP_BINDENV): new
-	virtual machine instructions
-
-	* streams.c, rep.c, misc.c, main.c: misc changes for lexical
-	scoping
-
-	* files.c: allocate the file type dynamically, since we stole
-	its cell8 slot for closures
-
-	* unix_dl.c (rep_open_dl_library): provide is now defined by
-	Lisp code
-
-1999-11-01  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c: define RTLD_LAZY to 1 if it's not already defined
-	anywhere (from remark in the Perl sources, via glib)
-
-1999-10-31  John Harper  <john dcs warwick ac uk>
-
-	* version 0.7.1
-
-1999-10-29  John Harper  <john dcs warwick ac uk>
-
-	* regexp.c: ANSII-fy function definitions
-
-1999-10-28  John Harper  <john dcs warwick ac uk>
-
-	* rep-config.sh: expect ${libdir} as second argument, not
-	${exec_prefix}
-	* Makefile.in: pass ${libdir} to rep-config.sh
-
-	* rep_lisp.h: comment out use of #warning, doesn't work on
-	solaris cc
-
-	* dlmalloc.c: change the sbrk () thing again for FreeBSD
-
-	* timers.c (insert_timer): fix problem when inserting new timer
-	before existing timer (with same seconds, but less
-	milliseconds)
-
-1999-10-27  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c: make the rep_alloc tracking work once more
-
-	* dlmalloc.c: fix sbrk () declaration on FreeBSD (from Yukihiro
-	Nakai <nakai internetsolutions co jp>)
-
-1999-10-24  John Harper  <john dcs warwick ac uk>
-
-	* version 0.7
-
-	* lispcmds.c (Fload): remember to call Fclose_file on any
-	opened streams
-
-1999-10-23  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c: some more small optimisations
-
-	* unix_processes.c (rep_system): fix child termination on being
-	unable to exec /bin/sh
-
-1999-10-21  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (Fformat): revert the long-int printing, since it
-	truncates the values and generally doesn't work. But added some
-	fixes for printing on sizeof(int) != sizeof(repv) systems
-
-	* lispmach.c: some optimisations; disable stack usage checking
-	unless CHECK_STACK_USAGE is defined
-
-	* misc.c (Frandom): if LIMIT is <= 0, set LIMIT = MAXINT
-
-1999-10-20  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (Fformat): handle long-integers in the integer
-	conversions
-
-1999-10-14  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c: support underscore-prefixed symbol names
-
-1999-10-13  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (Fprocess_id): return pid of interpreter if
-	given a nil argument
-
-	* main.c (get_main_options): don't handle --version
-	* rep.c (main): handle --version option
-
-1999-10-06  John Harper  <john dcs warwick ac uk>
-
-	* unix_dl.c: untested support for shl_load () (HP-UX)
-
-1999-10-03  John Harper  <john dcs warwick ac uk>
-
-	* version 0.6.2
-
-1999-10-01  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h: remove rep_ALIGN macro, since it's only used
-	once, by rep_ALIGN_CELL. This now knows about implicit
-	alignment on the DEC C compiler
-
-1999-09-20  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (Qautoload_verbose): only print autoloading messages
-	if this is non-nil (it is by default)
-
-	* version 0.6.1
-
-	* lispcmds.c (Fload): only try to load files if they're
-	readable and not a directory (not if they just exist)
-
-1999-09-17  John Harper  <john dcs warwick ac uk>
-
-	* realpath.c: bracketed function definition by #ifndef
-	HAVE_REALPATH just in case
-
-1999-09-15  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (rep_file_modes_as_string): change ulong to u_long
-
-1999-09-14  John Harper  <john dcs warwick ac uk>
-
-	* version 0.6
-
-	* unix_processes.c (rep_system): construct environ from
-	process-environment as with start-process and call-process
-
-	* regexp.c (regrepeat): workaround a bug in GCC 2.95 on sparcs
-	
-1999-09-12  John Harper  <john dcs warwick ac uk>
-
-	* version 0.5
-
-1999-09-11  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h: updated and expanded some comments
-
-1999-09-10  John Harper  <john dcs warwick ac uk>
-
-	* rep.c (main): by default, always load a script named `rep',
-	not a script defined by argv[0]
-
-	* unix_main.c (fatal_signal_handler): finally changed message
-	from `jade: ...' to `rep: ...'
-
-1999-09-09  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (check_for_zombies): removed the assertion
-	that every pid must have a process structure
-
-1999-09-08  John Harper  <john dcs warwick ac uk>
-
-	* files.c (Fset_input_handler): new function, allows async
-	input on a file handle
-
-1999-08-30  John Harper  <john dcs warwick ac uk>
-
-	* version 0.4
-
-	* unix_main.c (usr_signal_handler): now invoked by USR2 as well
-	as USR1. USR2 prints all debug buffers to stderr
-
-1999-08-29  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c, unix_main.c, test-dl.c, repsdbm.c,
-	rep_lisp.h, rep.c, misc.c, message.c, lisp.c, debug-buffer.c:
-	fixed some possible compiler errors (from `-ansi -pedantic')
-
-1999-08-28  John Harper  <john dcs warwick ac uk>
-
-	* rep.h.in: (rep_PTR_SIZED_INT_SUFFIX, rep_PTR_SIZED_INT_CONV):
-	new macros
-	(rep_PTR_SIZED_INT_BITS): now defined in terms of sizeof () and
-	CHAR_BIT instead of statically
-
-	* rep_lisp.h (rep_VALUE_CONST): new macro, uses
-	rep_PTR_SIZED_INT_SUFFIX to make a constant of the needed width
-	(rep_vector): define the data as a one-element array not a
-	zero-element array (for ansii-ness)
-
-	* misc.c (Frandom): don't use `#if' to decide how many random
-	samples to take, use normal `if' instead, since the parameters
-	are known at compile-time the compiler should eliminate
-	unneeded stuff
-
-	* main.c: don't check rep_PTR_SIZED_INT_BITS anymore since we
-	use sizeof to define it now
-
-	* lispmach.c, lisp.c: use rep_PTR_SIZED_INT_CONV when
-	printf-ing lisp integers
-
-1999-08-27  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_init): changed some of the type consistency
-	checking done on initialisation -- just check that the values
-	are within the correct bounds, not that they exactly match the
-	size of void *
-
-	* unix_dl.c (rep_find_c_symbol): check for HAVE_DLADDR
-
-	* rep_lisp.h: changed string type layout -- removed the inline
-	static string option since it's a hack, but more importantly,
-	since it defines the library's interface, and shouldn't change
-
-	* rep_lisp.h, files.c, misc.c: changed some instances of `1 <<
-	X' to `1L << X' for when sizeof(int) < sizeof(long)
-	* values.c (rep_make_string, rep_string_dupn): changed `length'
-	arg from int to long
-
-1999-08-22  John Harper  <john dcs warwick ac uk>
-
-	* version 0.3
-
-1999-08-17  John Harper  <john dcs warwick ac uk>
-
-	* values.c (Fgarbage_collect): defining DEBUG_GC and setting
-	debug_gc = 1 enables code to print the current backtrace at
-	each garbage collection
-
-1999-08-16  John Harper  <john dcs warwick ac uk>
-
-	* version 0.2
-
-	* lispcmds.c (lispcmds_init): add REP_COMMON_EXEC_DIRECTORY to
-	the dl-load-path
-
-1999-08-15  John Harper  <john dcs warwick ac uk>
-
-	* timers.c: added some documentation strings
-
-1999-08-13  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_CELL8_TYPE_MASK): changed from 0x1f to 0x3f
-	to include the rep_CELL_IS_16 bit (otherwise all cell16 types
-	are reported as being symbolp!)
-
-1999-08-06  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_handle_input_exception): if Qerror_mode is
-	`top-level', then only the top-level event loop handles errors,
-	if it's `exit' then errors cause the interpreter to exit.
-	Qinterrupt_mode works similarly for user interrupts
-
-	* unix_main.c: make SIGINT, SIGTERM and SIGHUP non-restartable
-
-1999-08-03  John Harper  <john dcs warwick ac uk>
-
-	* version 0.1
-
-1999-07-29  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (rep_sig_restart): make syscalls restart or not
-	restart for any signal
-	(wait_for_input): make both SIGCHLD and SIGALRM non-restartable
-	during select ()
-
-	* unix_processes.c (rep_sigchld_restart): replaced by the more
-	general rep_sig_restart
-
-	* timers.c: new file, a dynamically loadable module providing
-	multiple one-shot timers
-
-1999-07-27  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (Frandom): return zero if LIMIT <= 0
-
-1999-07-22  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (Fload): while evaluating the forms from a file,
-	bind load-filename to the full name of the file being loaded
-
-	* debug-buffer.c: dladdr seems to work again under linux
-
-1999-07-09  John Harper  <john dcs warwick ac uk>
-
-	* rep-remote.c (do_get, do_put): don't assume an error if
-	reading doesn't get as much as we asked for
-
-1999-07-07  John Harper  <john dcs warwick ac uk>
-
-	* rep-remote.c (do_readlink): don't assume the output of
-	readlink() is null-terminated
-
-	* streams.c (Fcopy_stream): fixed this when the buffer
-	overflows (was dropping every 512th character)
-
-1999-07-06  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c: new process-connection-type: `socketpair'
-
-	* unix_main.c (wait_for_input): fixed for when input doesn't
-	arrive within the first second (the input fdset used to be
-	munged)
-	(usr1_signal_handler): connected to SIGUSR1, outputs the Lisp
-	backtrace when called
-
-	* rep-remote.c: new program, provides a method of accessing
-	files on a remote host (using the remote-rep.jl Lisp backend)
-
-1999-07-05  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (Fread_chars): new function
-
-1999-07-04  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c, files.c: new file operations: read-symlink and
-	make-symlink
-
-1999-06-29  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (rep_proc_init): don't create a new process
-	group anymore
-
-1999-06-06  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.h: OP_SETQ now pops the value from the stack.
-	Deleted OP_PUSHIW, replaced by OP_PUSHIWN and OP_PUSHIWP, for
-	pushing negative and positive values respectively
-
-	* unix_dl.c (rep_kill_dl_libraries): never call dlclose, it's
-	not possible to know if any references to the library still
-	exist
-
-	* unix_main.c (rep_map_inputs): new function, call a specified
-	function for all registered (fd, callback) pairs
-
-	* misc.c (Fsystem): new function, execute a shell command
-	* unix_processes.c (rep_system): back-end of Fsystem
-
-	* lisp.c (rep_readl): don't return nil on EOF, instead signal
-	an end-of-stream error
-	* lispcmds.c (Fload): catch any end-of-stream error's signalled
-	while reading the file
-
-	* files.c (Fclose_file): when closing a file with
-	rep_LFF_DONT_CLOSE set, freopen it onto /dev/null
-
-1999-06-03  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (default_beep): new function, echo ^G, used to
-	initialise the rep_beep_fun hook
-
-	* main.c (Fget_command_line_option): don't return rep_NULL when
-	an option requiring an argument isn't given
-
-	* lispmach.c (Fjade_byte_code): optimise common cases of
-	OP_REFQ and OP_SETQ instructions, when accessing a variable
-	which can't be locally stored, and isn't a rep_Var type
-
-	* unix_processes.c (Fsignal_process): new function
-
-1999-05-31  John Harper  <john dcs warwick ac uk>
-
-	* rep_regexp.h (NGSTAR, NGPLUS): new operators, non-greedy plus
-	and minus
-	* regexp.c: implemented non-greedy *, + and ? operators: *?, +?
-	and ?? (as in Perl)
-
-1999-05-30  John Harper  <john dcs warwick ac uk>
-
-	* rep_regexp.h, regexp.c (WORD, NWORD, WSPC, NWSPC, DIGI,
-	NDIGI, WEDGE, NWEDGE): new operators; they are Perl's \w, \W,
-	\s, \S, \d, \D, \b, \B syntax, respectively
-
-1999-05-29  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (rep_lispcmds_init): add a null string to the end
-	of the load-path (i.e. the current directory)
-
-	* lisp.c (rep_load_autoload): only display messages if not in
-	batch-mode
-
-1999-05-26  John Harper  <john dcs warwick ac uk>
-
-	* repsdbm.c (Fsdbm_open): call local-file-name on the file
-	parameter
-
-1999-05-15  John Harper  <john dcs warwick ac uk>
-
-	* added `#define _GNU_SOURCE' at the top of all source files. This
-	seems to be necessary with glibc 2.1
-
-1999-04-25  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_kill): kill the dl libraries a bit later down the
-	line
-	* unix_processes.c (rep_proc_kill): disable SIGCHLD _before_
-	killing the processes
-
-1999-04-24  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c (Fjade_byte_code): yow! if a subr with five
-	parameters has four values applied to it, it was being called
-	_twice_ (a missing break statement). This bug must have existed
-	forever!
-
-1999-03-28  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c (Fjade_byte_code): don't test for called function
-	returning rep_NULL individually, since some don't even though
-	an error has been signalled. Instead check for, and handle,
-	errors outside the big switch
-
-1999-03-23  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (rep_sigchld_fun): new hook, called by the
-	sigchld handler
-
-	* repsdbm.c (rep_dl_init): set a rep_dl_feature value
-
-	* unix_dl.c (struct dl_lib_info): new field `feature_sym', a
-	symbol noting the feature provided by this library
-	(find_dl_by_feature): new function
-	(rep_open_dl_library): if a symbol `rep_dl_feature' exists in
-	the opened object, it's assumed to contain the name of the
-	feature provided by this object, Fprovide is called
-	(rep_find_dl_symbol): new function, given a feature and a
-	symbol name, return the address
-
-	* main.c (Frecursive_edit): update the rep_recurse_depth
-	variable here now
-
-1999-03-19  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_event_loop_fun): new hook, allows the standard
-	event loop to be replaced
-
-	* unix_main.c (rep_register_input_fd_fun,
-	rep_deregister_input_fd_fun): new hooks, allows non-standard
-	event loops to catch inputs
-
-1999-03-18  John Harper  <john dcs warwick ac uk>
-
-	* repsdbm.c (rep_dl_init): return Qt
-
-	* lisp.c (rep_test_int_period): this was a about factor of 100
-	too large
-
-	* unix_main.c (wait_for_input): break the timeout period into a
-	series of second-long timeouts, with a check for an interrupt
-	occurring between each call to select
-
-1999-03-17  John Harper  <john dcs warwick ac uk>
-
-	* rep.c (main): test for (throw 'quit RC) when exiting
-
-	* lisp.c (rep_readl): when `#!' is encountered at the start of
-	a file, skip until `!#' is found
-
-1999-03-16  John Harper  <john dcs warwick ac uk>
-
-	* values.c: allocate the buffer of static gc roots dynamically
-
-	* rep_lisp.h: define some new macros, rep_CDRLOC, and various
-	rep_CAAR, rep_CADR combinations (up to four dereferences)
-
-	* rep-config.sh: new option `--execdir'
-
-	* main.c (Qprogram_name): new symbol argv[0] of the invoking
-	program
-
-	* lispcmds.c (Qdl_load_reloc_now): new symbol
-	* unix_dl.c (rep_open_dl_library): when dl-load-reloc-now is
-	non-nil, open with the RTLD_NOW mode, not RTLD_LAZY
-
-1999-03-15  John Harper  <john dcs warwick ac uk>
-
-	* rep_lisp.h (rep_DECLARE): the third argument is now the
-	entire predicate expression, not just the name of the
-	predicate. The rep_DECLAREX variants are unchanged
-
-1999-03-12  John Harper  <john dcs warwick ac uk>
-
-	* files.c (file_prin): the `name' field is _nil_ if unbound,
-	not rep_NULL
-
-	* misc.c (Fchar_downcase): this was using toupper not tolower
-
-1999-03-09  John Harper  <john dcs warwick ac uk>
-
-	* repsdbm.c: changed all function names from dbm- to sdbm-
-
-	* sdbm_pair.c, sdbm_hash.c, sdbm.h, sdbm.c: replaced dbm_ by
-	sdbm_ and DBM by SDBM to prevent clashing with libc dbm
-
-	* repdoc.c: removed the -a option, never open the db O_TRUNC,
-	replace dbm_ by sdbm_
-
-1999-03-06  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_get_option): accept `--foo=bar' as well as `--foo
-	bar'
-	(Fget_command_line_option): wrapper for rep_get_option
-
-1999-03-02  John Harper  <john dcs warwick ac uk>
-
-	* main.c (rep_get_option): new function, searches the
-	command-line-args variable for a specified option
-
-	* main.c (get_main_options): new option `--interp', this sets
-	the LISP variable interpreted-mode
-	* lispcmds.c (Fload): if interpreted-mode is non-nil, don't
-	load .jlc or .jld files
-
-	* unix_processes.c (proc_puts): remember that the input data may
-	be a C or LISP string
-
-1999-02-28  John Harper  <john dcs warwick ac uk>
-
-	* MAJOR CHANGES: separated all LISP interpreter specific parts
-	into a separate library, librep (Read-Eval-Print)
-
-1999-02-17  John Harper  <john dcs warwick ac uk>
-
-        * unix_processes.c (check_for_zombies): always check for
-        zombies, even if we received no SIGCHLD
-
-1999-02-12  John Harper  <john dcs warwick ac uk>
-
-        * unix_files.c (sys_canonical_file_name): preserve the trailing
-        slash or lack thereof
-
-1999-01-31  John Harper  <john dcs warwick ac uk>
-
-	* bytecodes.h: several OP_PUSHI opcodes for pushing immediate
-	integers (of various sizes)
-	* lispmach.c (cmd_jade_byte_code): added PUSHI instructions
-
-	* lispmach.c (cmd_validate_byte_code): had the minor
-	comparisons the wrong way around
-
-	* x11_windowsys.h (struct x11_display): added `name' field
-	* x11_main.c (x11_get_display): new function, searches for a
-	named open display
-	(x11_open_display): call x11_get_display before creating a new
-	one
-
-1999-01-29  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (run_process): clean up better when fork
-	fails
-
-1999-01-27  John Harper  <john dcs warwick ac uk>
-
-	* views.c (cmd_with_view): fix bug when switching windows as
-	well as views
-
-1999-01-24  John Harper  <john dcs warwick ac uk>
-
-	* views.c (format_mode_string, format_mode_value,
-	update_status_buffer): buf_len is now signed, so that negative
-	values are detected, not wrapped around!
-
-1999-01-20  John Harper  <john dcs warwick ac uk>
-
-	* buffers.c (make_marks_non_resident): add a comment noting that
-	any TX fields used must be explicitly gc marked
-	* values.c (mark_value): in the V_Mark case, remember to mark
-	tx_File, now that make_marks_non_resident accesses it
-
-1999-01-17  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (cmd_eval): preserve regexp matches while calling the
-	debugger
-
-1999-01-14  John Harper  <john dcs warwick ac uk>
-
-	* buffers.c (cmd_set_mark_file): bug-fixes
-
-1999-01-13  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (cmd_lookup_event_binding): return multiple prefix
-	keymaps correctly, by faking a call to next-keymap-path. Also,
-	remove the optional RESET parameter, always reset
-	next-keymap-path to null
-
-	* edit.h (Lisp_Mark): new field `canon_file' used in
-	non-resident marks to store the canonical file name, `file'
-	reverts to being the possibly abbreviated file name
-	* buffers.c: changes for the modified Lisp_Mark structure, also
-	fix the mark_cmp function for non-resident marks
-	* values.c (mark_value): updated for `canon_file' mark field
-
-1998-12-09  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (eval_input_event): don't overwrite prefix-arg after
-	handling prefix-keymap
-
-1998-12-08  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (sys_expand_file_name): handle "foo/../bar"
-	correctly (where we have to backtrack to the start of the
-	output buffer)
-
-1998-12-03  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (cmd_user_full_name): if given a parameter, it's the
-	chosen name of the user
-
-1998-11-29  John Harper  <john jsh org>
-
-	* keys.c (overriding-local-keymap): new variable, when non-nil,
-	overrides all local keymaps
-
-1998-11-24  John Harper  <john dcs warwick ac uk>
-
-	* keys.c: big changes. No longer have the keymap-path variable,
-	instead we steal Emacs' notion of a set of active keymaps;
-	these include the variables global-keymap, and local-keymap,
-	the minor-mode-keymap-alist associating minor modes and their
-	keymaps, and the `keymap' extent properties of all extents
-	under the cursor (in reverse order of priority).
-	Also, when evaluating events, a command that is a symbol with
-	the function value `keymap' is used as a prefix key (keymap in
-	the value slot). Multiple bindings to the same prefix keys are
-	allowed, the union of their specified keymaps is used to
-	resolve the next event
-	(cmd_search_keymap): new function, scan a single keymap for a
-	binding of a specified event
-
-1998-11-20  John Harper  <john dcs warwick ac uk>
-
-	* lists.c, lists.h: removed these files, nothing uses them
-	anymore
-
-1998-11-14  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (handle_input): fixes to the input_pending stuff
-
-1998-11-12  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (sys_mark_input_pending): new function, records
-	that an input fd has input read but not yet handled (and
-	therefore needs to be disposed of next time round the event
-	loop)
-	* x11_main.c (x11_handle_input): when working asynchronously,
-	ensure that any events read but not handled cause
-	sys_mark_input_pending to be called
-
-1998-11-11  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (cmd_make_window): set the w_CurrVW field
-	explicitly to the first view in the window
-
-	* editcommands.c (cmd_empty_line_p): add some error checking
-
-	* views.c (cmd_with_view): save the current window and the
-	current view in the window to be altered so that the state can
-	be properly recovered later
-	* lispmach.c (cmd_jade_byte_code): in the BIND-VIEW
-	instruction, save the current window, and the current view in
-	the window to be altered
-
-1998-11-10  John Harper  <john dcs warwick ac uk>
-
-	* main.c (on_idle): protect against calling the idle-hook
-	recursively
-	* unix_main.c (handle_input): set refreshp on an interrupt
-
-1998-11-01  John Harper  <john dcs warwick ac uk>
-
-	* x11_windows.c (sys_new_window): when setting the XSizeHints
-	structure set the base_height to zero
-
-1998-10-27  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (stream_puts, stream_putc): when growing the window
-	message remember to allocate a byte for the zero terminator..
-
-	* values.c (data_types): remove mark_sweep
-	(mark_value): when marking a resident mark, mark the canonical
-	name of the associated buffer (it's required if the mark is
-	made non-resident)
-	* buffers.c (buffer_sweep): call mark_sweep before sweeping
-	buffers, the ordering is important. Only call
-	make_marks_non_resident if there actually are marks in the
-	buffer (this stops us occasionally using freed memory)
-
-	* streams.c (stream_putc, stream_puts): when appending to the
-	window's message, use sys_realloc not str_dupn
-
-	* edit.c (FREE_LL): fix non-r_alloc version
-
-	* buffers.c (mark_cmp): compare non-resident marks correctly
-
-1998-10-26  John Harper  <john dcs warwick ac uk>
-
-	* dlmalloc.c: enable __morecore_hook when JADE is defined, set
-	the default value to __jade_morecore
-	* ralloc.c: include "dlmalloc.h" or <malloc.h> when necessary
-
-	* dlmalloc.c, dlmalloc.h: use Doug Lea's malloc instead of GNU
-	malloc, it seems to use a lot less memory
-	* stringmem.c, stringmem.h: removed these two files, all
-	allocation is done by standard malloc now, dlmalloc.c seems to
-	handle it a lot better..
-
-	* buffers.c, edit.c, edit.h, find.c, jade.h, lisp.c, lisp.h,
-	lispcmds.c, main.c, misc.c, streams.c, unix_defs.c, unix_dl.c,
-	unix_main.c, unix_processes.c, values.c, windows.c, x11_main.c,
-	x11_misc.c: use sys_alloc (i.e. malloc) instead of sm_alloc or
-	str_alloc (and other associated functions)
-
-1998-10-25  John Harper  <john dcs warwick ac uk>
-
-	* ralloc.c: more fixes in non-emacs section for when
-	DOUG_LEA_MALLOC isn't defined (and therefore using gmalloc)
-
-1998-10-24  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: use the JADE_LIBOBJS variable, extra objects for
-	the jade[d] binary
-
-	* edit.c: switch on definition USE_R_ALLOC for whether or not
-	to use the relocating allocator for line arrays
-
-	* ralloc.c: in non-emacs section, include <config.h> when
-	HAVE_CONFIG_H is defined
-
-	* unix_main.c (sys_realloc): new function
-
-1998-10-23  John Harper  <john dcs warwick ac uk>
-
-	* edit.c: use GNU malloc's r_alloc relocating allocator for the
-	buffer line arrays (the tx_Lines field)
-	* streams.c, regjade.c, movement.c, glyphs.c, files.c,
-	editcommands.c, edit.c: remove all caching of the tx_Lines
-	field, the relocating malloc would screw this up
-
-	* values.c (gc_inhibit): removed this ill-advised feature (I
-	thought this the reason that the memory usage increased
-	massively sometimes--it's not, but it's a Good Thing) Anyway,
-	the effect of removing this variable is that all functions that
-	call stream_(getc|ungetc|putc|puts) must protect themselves
-	against a garbage collection (since a stream may be a Lisp
-	function)
-
-	* unix_processes.c, streams.c, main.c, lispmach.c, lisp.h,
-	lisp.c, keys.c: added more gc protection for the loss of
-	gc_inhibit
-
-1998-10-19  John Harper  <john dcs warwick ac uk>
-
-	* faces.c (mark_glyph_buf_faces): ignore GA_Garbage attributes
-
-	* edit.c (MAX_SPARE_LINES, ALLOC_SPARE_LINES): separated the
-	definitions of these two constants. Also increased both of them
-	(M_S_L by more than A_S_L though)
-
-1998-10-18  John Harper  <john dcs warwick ac uk>
-
-	* debug-buffer.c: on linux, undef DB_RESOLVE_SYMBOLS for the
-	time being--it crashes on my system (egcs-1.1/glibc-2.0.6)
-	(db_print_backtrace): changed output format, only look for at
-	most eight frames, and workaround for a egcs/linux bug
-
-1998-10-15  John Harper  <john dcs warwick ac uk>
-
-	* jade.h: describe the three preprocessor symbols noted below,
-	only DB_RESOLVE_SYMBOLS is set by default
-
-	* debug-buffer.c (db_print_backtrace): print symbols instead of
-	addresses when DB_RESOLVE_SYMBOLS is defined
-	(db_return_address): new function, try to return the return
-	address of the calling function
-
-	* unix_main.c: when DEBUG_SYS_ALLOC is defined, record all
-	outstanding memory allocations. On exit, print any that are
-	still unfreed. Also define a function unix-print-allocations
-	that does the same thing
-	(fatal_error_handler): print the C backtrace
-
-	* unix_dl.c (find_c_symbol): function to look up the name of
-	the closest symbol preceding a specified address
-
-	* edit.h, edit.c, buffers.c: only give each buffer it's own
-	allocation pool if STRINGPOOL_PER_BUFFER is defined
-
-1998-10-13  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (cmd_format): recognize the %X format (doh!)
-
-	* views.c (format_mode_string): added `%m' format, represents
-	the state of the marked block
-
-	* value.h (VALUE_BITS): defined as PTR_SIZED_INT_BITS
-	* main.c (main): validate PTR_SIZED_INT_BITS at startup
-	* lisp.h (LISP_INT_BITS): define from VALUE_BITS, don't assume
-	32-bit VALUEs
-	* misc.c (cmd_random): handle case where RAND_MAX is too small
-	to get all random bits in a single call to rand(). Also, prefer
-	lrand48() over rand() if it's available
-
-1998-10-12  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (sys_file_modes_as_string): use stat_file
-	directly instead of calling sys_file_modes which masks out all
-	but the permission bits
-
-	* unix_files.c (sys_delete_file): use `unlink' instead of
-	`remove'. This means it won't allow the deletion of directories
-	(sys_make_directory, sys_delete_directory): new functions 
-
-	* files.c (cmd_make_directory, cmd_delete_directory): new
-	functions, both have file-handler names associated with them
-
-	* files.c (read_file_into_tx): don't store the average line
-	length of the previous file read. Instead, defer predicting the
-	expected number of lines until N lines of the new file have
-	been read. This seems to drastically reduce the memory needed
-	to read large files
-
-1998-10-10  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (cmd_random): new function
-
-1998-10-08  John Harper  <john dcs warwick ac uk>
-
-	* editcommands.c (cmd_insert): when POSITION isn't specified
-	but BUFFER is, use the position of the cursor in BUFFER, not in
-	the current view
-
-1998-10-06  John Harper  <john dcs warwick ac uk>
-
-	* views.c (format_mode_string): fix printing percentages when
-	buffer is narrowed
-
-1998-10-04  John Harper  <john dcs warwick ac uk>
-
-	* debug-buffer.c (db_print_backtrace): minor bug fix
-
-	* commands.c (cmd_call_command): reinitialise the
-	current-prefix-arg before calling the actual command
-
-1998-09-21  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, bytecodes.h: changed op-set and op-fset to use
-	the CALL_2 macro. This means that there arguments are in the
-	reverse order to what they used to be, and they leave a value
-	on the stack
-
-	* extent.c (find_extent): when searching the cache for
-	"near-enough" extents, use the global position of the cached
-	extent, not the position local to its parent
-	(cmd_move_extent): use unlink_extent not several calls to
-	unlink_extent_fragment
-	(adjust_extents_XX): more fixes to these functions, in
-	addition, make sure that they invalidate the cache
-
-1998-09-17  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (cmd_format): make the "0" flag work with the %s
-	format
-
-1998-09-13  John Harper  <john dcs warwick ac uk>
-
-	* x11_windows.c (sys_draw_glyphs): when drawing underlines,
-	draw one less pixel than before
-
-1998-09-10  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (sys_sit_for): only redisplay if the timeout
-	is greater than zero
-
-1998-09-09  John Harper  <john dcs warwick ac uk>
-
-	* extent.c (insert_extent): when chaining frags together, do it
-	properly
-
-1998-09-08  John Harper  <john dcs warwick ac uk>
-
-	* extent.c (extent_cmp): only compare the two objects if they
-	have the same type (i.e. both extents)
-
-1998-09-06  John Harper  <john dcs warwick ac uk>
-
-	* main.c (get_main_options): added `-batch' option
-	(inner_main): if in batch mode, exit after executing the
-	initialisation script
-	* x11_windows.c (sys_new_window): if in batch mode, don't map
-	the window
-
-	* x11_main.c (x11_open_display): call sys_recolor_cursor
-
-	* debug-buffer.c (db_print_frame): renamed as
-	`db_print_backtrace', changed a few things
-
-1998-09-04  John Harper  <john dcs warwick ac uk>
-
-	* faces.c (mouse-cursor-face): new variable
-	* x11_main.c (sys_recolor_cursor): new function
-
-	* faces.c (mark_merged_faces): mark both glyph buffers
-	(faces_init): check for success of colour allocations,
-	returning failure if unsuccessful
-
-	* main.c (common_db): debug buffer for misc. uses
-	(inner_main): move faces_init later, move the error printing
-	code later so it catches more errors (not just from the init
-	script)
-
-	* redisplay.c (redisplay_lock): mutex variable to prevent
-	redisplay being entered more than once concurrently
-
-	* x11_main.c: added "-visual" option and "visual" resource to
-	allow the visual to be specified
-	(use_options): if specified, find the named visual with the
-	most bitplanes. Allocate a colormap when using a non-default
-	visual
-	(sys_make_color): use the first x11_display in the list
-	(x11_handle_async_input): only do anything if redisplay_lock
-	isn't set
-
-	* x11_windows.c (sys_new_window): use XCreateWindow so the
-	visual may be specified
-
-	* x11_windowsys.h (struct x11_display): added `visual', `depth'
-	and `colormap' fields
-
-	* unix_processes.c (get_pty): possibly check both /dev/ptmx and
-	/dev/ptyXX (if they both exist), in that order
-
-	* debug-buffer.c (db_print_frame): new function, print the
-	current call backtrace (gcc only)
-	(db_spew): ignore buffer if empty
-
-1998-09-02  John Harper  <john dcs warwick ac uk>
-
-	* edit.h (Merged_Face): new structure, pared down version of
-	Lisp_Face, used to amalgamate face attributes from the various
-	source faces for each character
-	(FACEFF_INVERT, FACEFF_BOXED): new face attributes, used for
-	drawing the cursor (and its ghosting)
-	(WIN): new field `w_MergedFaces', a table of the actual faces
-	used for drawing in this window. Currently it's limited to 64
-	entries
-
-	* faces.c (cmd_make_face): no longers copies from a source
-	face, now all faces are created equal (and empty)
-	(cmd_delete_face, mark_faces, cmd_face_id): deleted, no longer
-	needed now faces don't have id's associated with them
-	(cmd_set_face_attribute, cmd_face_attribute): new attributes
-	`inverted' and `boxed'
-	(merge_faces): new function, compute a face for an extent
-	(get_face_id): new function, compute a face from a face
-	(mark_merged_faces): new function
-
-	* glyphs.c (make_window_glyphs, make_message_glyphs): support
-	merged faces
-
-	* values.c (cmd_garbage_collect): call mark_merge_faces in each
-	window
-
-	* x11_windows.c: support merged faces
-
-	* x11_main.c (x11_free_dpy_colors): fix infinite loop bug
-
-	* unix_processes.c (cmd_accept_process_output): check if
-	there's any queued notifications as well as SIGCHLDs before
-	waiting for output
-
-1998-09-01  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (cmd_accept_process_output): accept
-	termination notifications as well as stream output
-
-1998-08-30  John Harper  <john dcs warwick ac uk>
-
-	* glyphs.c (make_window_glyphs): reload the glyph-table each
-	time the current extent changes
-
-1998-08-29  John Harper  <john dcs warwick ac uk>
-
-	* views.c (cmd_set_status_message): deleted this function
-	* edit.h (VW): deleted vw_StatusOverride field
-
-	* extent.c (cmd_extent_get, cmd_extent_put, cmd_extent_set):
-	moved the EXTENT argument to be first instead of last
-
-1998-08-28  John Harper  <john dcs warwick ac uk>
-
-	* main.c (on_idle): only call idle-hook once per idle period
-
-	* extent.c: various fixes, including reverting the last change
-	to unlink_extent_recursively. Mostly in the adjust_extents_X
-	functions
-
-	* extent.c (unlink_extent_recursively): fixed to unlink all
-	children in each node, not just the first
-	(make_global_extent, reset_global_extent): minor fixes, and
-	remember to invalidate the cache
-	(cmd_extent_get, cmd_extent_put): new special property
-	`catch-variables'. When set this hijacks any attempts at
-	setting non-permanent-local buffer-local symbols, and sets them
-	in the innermost extent with this property
-	(buffer_set_if_bound): function to implement the above
-	* edit.h (EXTFF_CATCH_VARIABLES): new flag in Lisp_Extent
-	* symbols.c (cmd_set): call buffer_set_if_bound if the symbol
-	has the SF_BUFFER_LOCAL property
-
-	* editcommands.c (cmd_clear_buffer): don't call
-	reset_global_extent until _after_ clearing the buffer
-
-
-1998-08-27  John Harper  <john dcs warwick ac uk>
-
-	* views.c (update-status-buffer): can now be customized through
-	the mode-line-format variable, I copied most of Emacs syntax..
-
-	* edit.h (tx_ModeName, tx_MinorModeNameList,
-	tx_MinorModeNameString): deleted these elements
-	* buffers.c (var_mode_name, var_minor_mode_names): deleted
-
-	* extent.c (cmd_buffer_symbol_value): only search if
-	SF_BUFFER_LOCAL is set
-
-	* faces.c (cmd_set_face_attribute): if setting the background
-	or foreground attributes, and the value is a string, call
-	get-color with that string
-
-	* editcommands.c (cmd_clear_buffer): call reset_global_extent
-
-	* extent.c (extent_cmp): function to test if two fragments
-	belong to the same `extent'. Used by the `equal' function
-	(cmd_buffer_put): deleted
-	(cmd_map_extents): map a function over all extents in an area
-	(map_section_extents): protect against gc
-
-1998-08-26  John Harper  <john dcs warwick ac uk>
-
-	* extent.c (cmd_extent_start, cmd_extent_end): new functions
-	(cmd_extent_put, cmd_extent_get): special property
-	`local-variables' linked to the `locals' field
-	(cmd_delete_extent): remove the option of deleting individual
-	fragments; this shouldn't be visible
-
-	* extent.c (find_extent): record cache miss statistics
-
-	* x11_windows.c (sys_set_font): for the specified font, try to
-	load a bold version as well. This is done by querying the full
-	name, then replacing the third component by `bold'
-	(sys_draw_glyphs): handle the bold attribute by swapping fonts
-	* x11_windowsys.c (w_WindowSys): new field ws_BoldFont
-
-	* extent.c: new file, extents allow property lists to be
-	maintained for buffer regions (also local variables). In fact
-	the old style buffer-local values are now a special case of
-	this, stored in the root extent covering the entire buffer
-
-	* faces.c: new file. Faces associate rendering attributes
-	(colour, underline, bold, etc) with the attribute codes
-	understood by the redisplay algorithm. This file also
-	implements the colour type
-
-	* glyphs.c: traverses the extent tree, modifying the output
-	attribute as the `face' property changes
-
-	* edit.c (read_only_pos, read_only_section): these functions
-	replace the read_only function. In case an extent has a local
-	value of the read-only variable
-
-	* housekeeping.c: the adjust_marks_X functions now call a
-	related adjust_extents_Y function, and also update the
-	positions in the extent caches
-
-	* symbols.c (cmd_symbol_value): look for buffer-local values in
-	the current stack of extents (use the buffer-symbol-value
-	function)
-	(cmd_set): if setting a buffer-local value, only ever set the
-	buffer-wide value (use the buffer-set function to set a value
-	in a specified extent)
-	(cmd_kill_all_local_variables, cmd_kill_local_variable): these
-	only kill the buffer-wide values, not in inner extents
-
-	* x11_main.c: support for colour allocation and management.
-	Also added some more resources for the various colours that are
-	always allocated on startup
-
-	* x11_windowsys.h, views.c, values.c, streams.c, redisplay.c,
-	main.c, lisp.h, keys.c, jade.h, files.c, editcommands.c,
-	edit.h, commands.c, buffers.c, Makefile.in: misc changes
-
-	* x11_windows.c (sys_draw_glyphs): support rendering from faces
-
-	* regexp.c, regjade.c (regmatch): fix bug of not being
-	case-insensitive (if necessary) after matching a star or plus
-
-1998-08-19  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (lookup_event_name): minor change to limit the number
-	of modifier bits tested
-
-1998-08-18  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (lookup_event, lookup_event_name): moved from
-	x11_keys.c and rewritten to be portable
-	* x11_keys.c (sys_lookup_mod, sys_lookup_code,
-	sys_lookup_mod_name, sys_lookup_code_name): new functions
-
-1998-08-11  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (funcall): support for autoloading macros (but only if
-	the list of arguments is still to be evaluated)
-
-1998-08-10  John Harper  <john dcs warwick ac uk>
-
-	* files.c (files_init): ADD_SUBR the make-file-from-stream
-	function
-
-1998-08-06  John Harper  <john dcs warwick ac uk>
-
-	* buffers.c, debug-buffer.c, lisp.c, streams.c, symbols.c,
-	unix_processes.c, views.c, windows.c: if possible, replace all
-	unsafe uses of sprintf and vsprintf with snprintf and vsnprintf
-
-1998-08-02  John Harper  <john dcs warwick ac uk>
-
-	* buffers.c, edit.h: tx_FileName and tx_CanonicalFileName are
-	now nil if unset, not the null string
-
-1998-07-16  John Harper  <john dcs warwick ac uk>
-
-	* x11_windowsys.h (struct x11_display): added last_click and
-	last_click_button fields, for tracking double-clicks
-	* x11_keys.c (translate_event): now takes an x11_display
-	structure as an extra argument, only accepts double clicks if
-	they're from the _same_ mouse button as the first click
-	* x11_main.c: pass extra arg to translate_event
-
-1998-07-12  John Harper  <john dcs warwick ac uk>
-
-	* redisplay.c (patch_display): fix warning about relative
-	precedence of && and || operators
-
-	* x11_main.c (x11_handle_input): when using WINFF_PRESERVING,
-	set it in all windows at once, since redisplay will update all
-	windows (possibly losing their original contents)
-
-1998-07-11  John Harper  <john dcs warwick ac uk>
-
-	* edit.h (WIN): added new flag `WINFF_PRESERVING' used by
-	asynchronous expose events to tell redisplay that the original
-	window contents are being redrawn
-	* x11_main.c (x11_handle_input): return whether or not a
-	redisplay might be required, use WINFF_PRESERVING in
-	asynchronous expose events
-	* redisplay.c (cmd_redisplay): don't generate w_NewContents if
-	WINFF_PRESERVING is set in the window
-
-1998-07-10  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c: deleted all the SIGIO stuff
-	(sys_poll_input): new function
-
-	* lisp.h (TEST_INT, TEST_INT_GUTS, TEST_INT_PERIOD,
-	TEST_INT_SLOW): expanded testing for interrupts
-	* lisp.c (lisp_test_int_counter): new variable
-
-	* x11_main.c (x11_handle_input): handle asynchronous input,
-	just look for the events we want, C-g causes an interrupt
-	(x11_handle_sync_input, x11_handle_async_input): new functions
-	* x11_defs.h: define TEST_INT_GUTS as x11_handle_async_input()
-	* unix_defs.h: remove the TEST_INT definition
-	* unix_processes.c (run_process): use TEST_INT_SLOW to test for
-	interrupts in synchronous processes
-
-1998-07-04  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c (cmd_make_byte_code_subr): don't allocate the
-	optional fourth and fifth elements unless they're required
-
-	* unix_defs.h: remove EXEC_DIR define, just use JADE_EXEC_DIR
-
-	* lispcmds.c: misc. changes to how the build directories and
-	load-paths are set up (mainly, rename `X-dir' as `X-directory')
-
-1998-07-03  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (dl-load-path, exec-directory): new variables for
-	dynamic loading
-	(cmd_load): support for dynamic loading (search dl-path after
-	exhausting load-path)
-	* unix_defs.h (EXEC_DIR): new definition
-	* unix_dl.c: new file, use dlopen() for dynamic loading
-	* values.c (cmd_garbage_collect): call mark_dl_data
-
-	* lisp.h (DEFUN, DEFUN_INT, ADD_SUBR, ADD_SUBR_INT): cleaned up
-	a bit
-
-1998-07-01  John Harper  <john dcs warwick ac uk>
-
-	* find.c (mark_cached_regexps): fixed bug in chopping the list
-	one element too late
-
-Tue Jun 30 00:08:36 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.h (enum Glyph_Attrs): added new _Rect variants of the
-	four standard attributes. These are used to display `ghosted'
-	cursors when the window is out of focus
-	* glyphs.c, redisplay.c, x11_main.c, x11_windowsys.h: changes
-	to support the above attributes
-
-Sun Jun 28 16:05:45 1998  John Harper  <john dcs warwick ac uk>
-
-	* windows.c (cmd_make_window): make a copy of the current
-	window's buffer-list with copy-sequence; don't use it twice
-
-Sat Jun 27 18:21:30 1998  John Harper  <john dcs warwick ac uk>
-
-	* find.c (compile_regexp): when searching the cache, before
-	comparing strings, test if they're eq to one another
-
-Fri Jun 26 16:54:54 1998  John Harper  <john dcs warwick ac uk>
-
-	* find.c (release_cached_regexp): renamed mark_cached_regexps,
-	now marks the `regexp' field as it should
-	(release_cached_regexps): new function, flushes the cache
-
-	* find.c (compile_regexp, release_cached_regexp): instead of
-	just caching a single compile regular expression, cache all of
-	them. Then at gc, release as many of the least-recently-used
-	regexps to satisfy a size limit (by default 1k). The hit ratios
-	are immense
-	(regexp-cache-control): function to set the size limit, and to
-	report cache statistics
-
-	* regexp.h, regexp.c (regexp): added regsize field, contains
-	the true size of the compiled regular expression
-
-Tue Jun 23 12:19:54 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (check_for_zombies): before closing all
-	streams, check for any pending output
-	(read_from_one_fd): only check errno==EINTR when the result
-	from read is _less_ than zero (doh!)
-
-	* buffers.c (cmd_make_mark): ensure that all fields of the new
-	mark object are valid for when GC could occur
-
-Mon Jun 22 10:48:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* glyphs.c (make_message_glyphs): when outputting messages that
-	are longer than the window is wide, use more than the single
-	bottommost line (when the minibuffer view has > 1 row)
-
-Sun Jun 21 01:14:21 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (run_process): the new method of detecting
-	when synchronous processes have exited still didn't work. Use
-	the simple option, only exit when EOF on oth streams is
-	received. This puts the onus on callers to redirect streams if
-	necessary
-
-	* unix_processes.c (cmd_call_process): ensure that the
-	INPUT-FILE parameter is a _local_ file name (signal an error if
-	it points to a remote file)
-
-Fri Jun 19 00:06:20 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (sys_directory_file_name): don't remove the
-	trailing slash in a single character string (i.e. "/")
-
-Thu Jun 18 23:50:37 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (handle_input, cmd_sit_for, sys_accept_output):
-	stop prematurely if a Lisp error is detected
-	* unix_processes.c (proc_notification): stop on a Lisp error
-
-Tue Jun 16 12:00:24 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (run_process): another attempt at fixing the
-	process-exited-but-no-eof problem. Again, I think I may have it
-	this time..
-
-	* lispcmds.c (make-list, nth, nthcdr, make-vector, aset, aref,
-	make-string, substring): check and signal negative arguments
-
-	* stringmem.h, stringmem.c: add some more statistics: the
-	number of _block_ allocations and frees
-
-Sun Jun 14 11:53:36 1998  John Harper  <john dcs warwick ac uk>
-
-	* files.c (cmd_copy_file): handle local->remote and
-	remote->local copies correctly
-
-Sat Jun 13 11:08:18 1998  John Harper  <john dcs warwick ac uk>
-
-	* buffers.c (var_last_save_time): was expecting parameters in
-	long-int format, not as a timestamp
-
-	* unix_files.c (sys_file_modes): mask out all but the
-	permission bits
-
-Fri Jun 12 18:11:17 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (sys_expand_file_names): fix somes bugs when
-	handling "." and ".." in otherwise empty strings
-
-Thu Jun 11 16:44:42 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (wait_for_input, handle_input, sys_event_loop,
-	sys_sit_for, sys_accept_input): use local copies of the master
-	fd set to allow recursive use of sys_accept_input
-
-Wed Jun 10 20:49:05 1998  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (cmd_sit_for): new function, wait for input or a
-	timeout
-
-	* unix_main.c (sys_event_loop): split into separate parts to
-	allow new functions sys_sit_for and sys_accept_input
-
-	* unix_processes.c (cmd_accept_process_output): new function,
-	accept and process output, or timeout
-
-Mon Jun  8 14:50:17 1998  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (read_symbol): don't accept `0x' as a hex. number
-
-	* lispcmds.c (cmd_mapc, cmd_mapcar): tidied up slightly
-
-	* lispmach.c (cmd_jade_byte_code): ensure that _all_ functions
-	that may end up calling Lisp code set the gc_stackbase slot
-
-	* lisp.c (funcall): always add the current function to the
-	backtrace stack. This simplifies gc protection, and provides
-	better Lisp debugging information
-
-Sat Jun  6 16:09:35 1998  John Harper  <john dcs warwick ac uk>
-
-	* views.c (kill_view): new function to clean up an unused but
-	non-gc'd view
-	(update_views_dimensions): dont crash when the window no longer
-	has room for all views, instead delete views from the top of
-	the window until they all fit
-	(cmd_next_view, cmd_previous_view): don't ignore inactive
-	minibuffer views
-
-	* glyphs.c (make_window_glyphs, make_message_glyphs): handle
-	minibuffer views with more than one line. Always output the
-	minibuffer contents, then if necessary overwrite the _bottom_
-	line with the window's message
-
-	* views.c (cmd_view_position): new function, return the
-	position in the window of a specified view
-	(cmd_find_view_by_pos): include status line in view
-	(cmd_translate_pos_to_view): do boundary checks, return nil if
-	the position isn't in the specified view, return t if it's in
-	the status line
-
-Thu Jun  4 14:52:49 1998  John Harper  <john dcs warwick ac uk>
-
-	* find.c (mystrcmp, mystrrstrn, mystrrchrn): deleted these
-	functions
-
-	* misc.c (cmd_make_completion_string): renamed as
-	`complete-string', added another arg FOLD-CASE
-
-	* bytecodes.h, lisp.c, lispmach.c: excise all traces of the
-	return function and the OP_RETURN instruction
-
-	* buffers.c (cmd_all_buffers): new function, return a list of
-	all existing buffers
-
-Tue Jun  2 09:06:58 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_load): execute multiple matching items from
-	the after-load-alist, not just the first
-
-	* lispcmds.c (cmd_load): after using an entry in
-	after-load-alist, delete it
-
-	* main.c: add -no-rc to usage string
-
-Sun May 31 19:13:39 1998  John Harper  <john dcs warwick ac uk>
-
-	* views.c (cmd_viewp): new function
-	* windows.c (cmd_windowp): new function
-
-Thu May 28 18:07:09 1998  John Harper  <john dcs warwick ac uk>
-
-	* lisp.h (MAKE_TIME, GET_TIME, TIMEP): new way of storing
-	timestamps (DAYS . SECONDS) instead of in long-integer form
-	* unix_files.c (sys_file_modtime): use new timestamp format
-	* misc.c (cmd_current_time, cmd_current_time_string): use new
-	timestamp format
-	(cmd_fix_time): new function to normalise the two parts of a
-	timestamp
-
-Mon May 25 17:11:32 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_if, cmd_and, cmd_or): reinstated these
-	special forms
-
-	* lisp.c (throw_value): declared as volatile. This stops the
-	compiler optimizing tests out of existence
-
-Sun May 24 10:24:16 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.h (WIN): new field w_DisplayedName; the string currently
-	displayed as the name of this window (the current buffer's
-	status id string)
-	* values.c (mark_value): mark w_DisplayedName
-	* redisplay.c (cmd_redisplay): if a window's current buffer's
-	status id is different to its displayed name, reset it
-	* x11_windows.c (sys_set_win_name): new function, set the name
-	of a window
-
-	* x11_windows.c (sys_new_window): fix size_hints structure, set
-	icon name to `jade', don't bother setting window name
-
-	* x11_main.c: added a `-rv' option to give proper reverse video
-	(get_resources): capitalise resource names when we search under
-	"Jade" (I'm sure this is incorrect, but who knows). Also added
-	a reverseVideo resource
-	* x11_windows.c (sys_new_window): take note of -rv option
-
-Sat May 23 11:28:01 1998  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (cmd_make_keytab, cmd_make_keylist): renamed as
-	make-keymap and make-sparse-keymap. make-sparse-keymap takes an
-	optional argument, a sparse keymap whose bindings should be
-	inherited (achieved by consing the whole thing onto the end of
-	the new keymap)
-	(findkey, cmd_unbind_keys): cope with finding inherited keymaps
-	in the middle of lists
-
-	* keys.h, keys.c: changed the definition of KEY (the
-	representation of a single binding) to (COMMAND . (CODE .
-	MODS)) instead of the old [CODE MODS COMMAND]. The cons cell
-	version uses less memory
-
-Fri May 22 10:13:26 1998  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (next_keymap_path): changed semantics slightly, now
-	it's LISP_NULL if unset, not nil. Also changed the Lisp
-	variable next-keymap-path into a function
-
-	* buffers.c (cmd_set_buffer_name): if the buffer-status-id
-	looks as though it still just names the buffer, reset it to
-	use the new name
-
-Mon May 18 09:21:33 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_delete_if, cmd_delete_if_not): added gc
-	protection to these functions; how long have they been unsafe?
-
-Sun May 17 19:50:36 1998  John Harper  <john dcs warwick ac uk>
-
-	* housekeeping.c (adjust_marks_split_y): fix this again, maybe
-	this time I've got it right
-
-Sat May 16 13:51:54 1998  John Harper  <john dcs warwick ac uk>
-
-	* housekeeping.c (adjust_marks_split_y): wasn't looking at the
-	column position to ignore positions before the split in the
-	line
-
-	* x11_misc.c (write_clip, read_clip): deleted, not used anymore
-
-	* unix_files.c, ../config.h.in: remove definition and use of
-	HAVE_REALPATH since we provide an implementation for when libc
-	doesn't
-
-Tue May 12 16:35:42 1998  John Harper  <john dcs warwick ac uk>
-
-	* x11_keys.c (translate_mods): extra arg SUBST-META controlling
-	whether or not to switch the designated meta modifier for the
-	more general EV_MOD_META bit. Needed by x11_find_meta.
-
-Sun May 10 21:19:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (ev_mod_meta): deleted, replaced by window-local meta
-	codes
-	* keys.h (EV_MOD_FAKE_META): renamed as EV_MOD_META; this is
-	now used internally, instead of its translation
-	* x11_keys.c (translate_mods): if the translated set of
-	modifiers includes the current window's meta mask, replace this
-	bit by EV_MOD_META
-	(sys_find_meta): renamed x11_find_meta, now takes a x11_display
-	structure as its argument. It finds the Meta modifier for a
-	particular display
-	* x11_main.c (x11_open_display): call x11_find_meta and set the
-	display's meta_mod field
-	* x11_windowsys.h (struct x11_display): added meta_mod field,
-	the Meta modifier for this display
-
-Wed May  6 12:49:17 1998  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (load_autoload): new parameter IS-VARIABLE for
-	autoloading variables
-	* lispcmds.c (cmd_defvar): set variables that are boundp, but
-	whose value is an autoload definition
-	* keys.c (lookup_binding): works with autoloaded variables
-
-	* unix_client.c (main): call make-window-on-display, not
-	open-window-on-display for the -x and -X options
-
-Tue May  5 10:29:45 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_call_hook): allow the HOOK argument to be a
-	symbol or a list, not just a symbol
-
-Mon May  4 12:12:53 1998  John Harper  <john dcs warwick ac uk>
-
-	* views.c (update_status_buffer): changed the layout of the
-	status line again; also some kludgey attempts at catching
-	buffer overruns
-
-Sun May  3 12:20:21 1998  John Harper  <john dcs warwick ac uk>
-
-	* views.c (update_status_buffer): pad the gap between the
-	tx_StatusId string and the mode details with hyphens not spaces
-
-	* misc.c (cmd_version_and_build_string): renamed as
-	build-id-string, doesn't have the version-string on the front,
-	but does have the HOST_TYPE (i.e. i586-pc-gnu, or whatever) on
-	the end
-
-	* unix_main.c (fatal_signal_handler): minor changes to try and
-	stop the infinite looping seen with Linux at times
-
-Wed Apr 29 09:48:37 1998  John Harper  <john dcs warwick ac uk>
-
-	* debug-buffer.c, redisplay.c: change malloc/free for
-	sys_alloc/sys_free
-
-	* undo.c (cmd_undo): when clearing the modified status, set
-	tx_LastSaveChanges as well as tx_ProperSaveChanges
-
-Tue Apr 28 15:57:54 1998  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: added files.o to list of dependencies
-
-	* edit.h (TX): added tx_StatusId field, a string to display in
-	the status line
-	(VW): removed vw_StatusBuf and STATUS_BUFSIZ, added
-	vw_StatusOverride, remove VWFF_CUSTOM_STATUS flag
-	* buffers.c (cmd_make_buffer): set tx_StatusId to
-	"Jade: BUFFER-NAME" by default
-	(buffer-status-id): interface to tx_StatusId
-	* glyphs.c (make_window_glyphs): change how
-	update_status_buffer is called, now it formats straight into
-	the glyph buffer
-	* values.c (mark_value): add tx_StatusId and vw_StatusOverride
-	* views.c (make_view): don't allocate vw_StatusBuf
-	(update_status_buffer): changed dramatically, now it looks more
-	like Emacs; still needs to be more customisable
-	(cmd_set_status_message): changed for VW structure mods
-
-	* symbols.c (cmd_put): fix how dumped plists are modified; cons
-	onto their head any new values instead
-
-Mon Apr 27 10:51:34 1998  John Harper  <john dcs warwick ac uk>
-
-	* symbols.c (kill-all-local-variables): obey the
-	`permanent-local' property of symbols
-
-	* views.c (make_view): when copying the vw_BufferList, actually
-	make a _copy_ using copy-sequence not just copy the pointer
-
-Sun Apr 26 19:23:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* views.c (make_view): minor changes to how we set up the view
-	* windows.c (cmd_make_window, cmd_destroy_window): assume
-	responsibilities of open-window and close-window.
-	destroy-window renamed as delete-window, and split into two
-	functions, delete_window, and cmd_delete_window. The Lisp
-	variant calls save-and-quit if window_count==1
-	(sym_make_window_hook): no longer passed an argument
-	(sym_destroy_window_hook): renamed delete-window-hook
-	(cmd_window_list): new function
-	(sym_window_closed_hook): deleted
-	* x11_windows.c (cmd_make_window_on_display): made interactive
-	* x11_main.c (handle_event): call delete-window, not
-	window-closed-hook
-
-	* redisplay.c, glyphs.c: another attempt to fix a display bug
-
-	* edit.h (TXFF_SPECIAL): deleted this flag
-
-	* buffers.c (destroy-buffer): deleted this function, let
-	buffers be garbage collected as other objects are
-	(buffer-modified-p): don't look at the TXFF_SPECIAL flag
-	(set-buffer-special, buffer-special-p): deleted
-
-	* views.c (update_status_buffer): ignore TXFF_SPECIAL, give
-	read-only flag higher priority than modified flag
-
-Fri Apr 24 11:35:03 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (cmd_active_processes): new function, return
-	a list of all active processes
-	(proc_notification): when calling functions, now pass the
-	process as the sole argument
-
-	* unix_processes.c (mark_active_processes): function to mark
-	any processes that are currently active
-	* values.c (cmd_garbage_collect): call mark_active_processes
-	when HAVE_SUBPROCESSES is defined. This stops executing
-	processes with no references from disappearing
-
-Wed Apr 22 17:21:07 1998  John Harper  <john dcs warwick ac uk>
-
-	* views.c (make_view): try to initialise the vw_BufferList
-	(cmd_make_view): renamed split-view, deleted the BUFFER
-	parameter, made interactive. This replaces open-view
-	(cmd_destroy_view): renamed delete-view, made interactive. This
-	replaces close-view
-
-Tue Apr 21 16:45:05 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (get_pty): minor change to order in which
-	pty masters are searched
-
-	* misc.c (cmd_sleep_for): new function, pauses for a specified
-	time length
-	* unix_main.c (sys_sleep_for): support for sleep-for
-
-	* buffers.c, streams.c (mark_prin, file_prin): wasn't calling
-	stream_puts correctly
-
-Sat Apr 18 00:16:46 1998  John Harper  <john dcs warwick ac uk>
-
-	* find.c (buffer_reverse_strpbrk): when matching a newline, the
-	position returned was one column too far to the left
-
-	* unix_processes.c (run_process): when running synchronously,
-	if the child exits before EOFs are received, allow a few more
-	polls of input before exiting. Hopefully this should be enough
-	to ensure that no final output from the process is missed. Of
-	course, this means that putting a shell command into the
-	background will take a few seconds to return
-
-	* lispcmds.c (sym_jade_dir, sym_lisp_lib_dir,
-	sym_site_lisp_dir): new pre-defined symbols
-	(lispcmds_init): when defined, the environment variables
-	JADEDIR, JADELISPLIB, JADESITELISP and JADEDOCFILE are used to
-	initialise the locations of the corresponding files and
-	directories
-	* unix_defs.h (LISP_LIB_DIR, SITE_LISP_DIR, DOC_FILE): renamed
-	each macro to ..._SUFFIX, removing the constant JADE_DIR prefix
-
-Fri Apr 17 14:20:01 1998  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c, lispmach.c, redisplay.c, symbols.c: add preprocessor
-	magic from autoconf manual to handle alloca declaration
-	* unix_main.c (sys_event_loop): when C_ALLOCA is defined call
-	alloca(0) to garbage collect
-
-	* files.c (cmd_canonical_file_name): call
-	sys_canonical_file_name for unhandled files
-	* unix_files.c (sys_canonical_file_name): new function, uses
-	realpath to expand links in a file name
-	(sys_expand_file_name): fix bug in expanding "foo/../bar"
-	* unix_defs.h: prototype for realpath when HAVE_REALPATH isn't
-	defined
-
-	* Makefile.in: handle LIBOBJS and ALLOCA correctly, some
-	cosmetic changes
-
-Tue Apr  7 11:20:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (run_process): when running synchronously,
-	look for the child exiting, as well as EOF on its output
-	streams. If it does exit, stop and close all streams. This is
-	to allow shell commands to be put into the background mainly
-	(though they'll get a SIGPIPE if they do any output)
-
-Mon Apr  6 09:26:30 1998  John Harper  <john dcs warwick ac uk>
-
-	* glyphs.c (make_window_glyphs): reinitialise glyph_row each
-	view; I think this may fix an intermittent bug in which the
-	line after the end of the glyph buffer is accessed
-
-Sat Apr  4 17:57:50 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_files.c (sys_file_symlink_p): fixed to use lstat() again
-	instead of stat_file(), and therefore stat()
-	(sys_file_modes_as_string): S and T bits had their case the
-	wrong way around, now they're lowercase if the corresponding
-	execute bit is also set, as in "ls -l"
-
-Fri Apr  3 10:47:31 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.h (glyph_buf): includes arrays of pointers to each line
-	instead of the GLYPH_BUF_CODES and GLYPH_BUF_ATTRS macros
-	* glyphs.c, redisplay.c: modifications for new glyph_buf
-	structure
-	* redisplay.c (hash_glyph_row): don't rotate, the hash values
-	it generated weren't very well distributed. Go back to K=33
-
-	* unix_server.c: if DEBUG_SERVER is defined generate trace of
-	all server traffic into a debug buffer
-	(server_accept_connection): set the fd returned from accept()
-	to be _blocking_. I didn't realise that accepted connections
-	inherit the characteristics of listening socket. This was the
-	cause of the intermittent bug (a read returning EAGAIN when I
-	didn't expect it)
-
-	* unix_main.c (unix_set_fd_blocking): new function, opposite of
-	unix_set_fd_nonblocking
-
-	* jade.h: include <stdarg.h>
-
-	* debug-buffer.c (db_printf, db_vprintf): split the old
-	db_printf into these two functions
-
-	* undo.c (undo_record_unmodified): function to call when a
-	buffer is set as being unmodified; it deletes any previous
-	"unmodified" mark in the undo list
-	* buffers.c (cmd_set_buffer_modified): when STATUS is nil, call
-	undo_record_unmodified
-
-	* redisplay.c (hash_glyph_row): rotate the hash value instead
-	of just shifting
-
-Wed Apr  1 00:54:36 1998  John Harper  <john dcs warwick ac uk>
-
-	* files.c: new file, groups together all functions dealing with
-	files; also implements Emacs-like magic-file-names using the
-	`file-handler-alist' variable
-	* unix_files.c: new file, functions to implement the built-in
-	file handler for files in the local filing system
-	* lisp.h: changed Lisp_File structure slightly
-
-	* buffers.c, edit.c, lispcmds.c, streams.c, unix_main.c,
-	unix_processes.c, unix_server.c, values.c, x11_main.c:
-	modifications to handle new file primitives. Mainly to deal
-	with canonical names (to compare to files), and most
-	importantly, ensuring that everything is gc-protected whilst
-	calling any function in files.c that could invoke some Lisp
-	code
-
-	* edit.h (TX): added tx_CanonicalFileName field
-
-	* find.c (push_regexp_data, pop_regexp_data): functions for
-	preserving the regexp match data
-
-	* jade.h: always include regexp.h
-
-	* keys.c (eval_input_event): fix bug when inserting repeated
-	string
-
-	* lisp.c (cmd_add_doc_string, cmd_get_doc_string): deleted
-	(call_lisp3, call_lisp4): new functions
-	(funcall): guarantee that arguments will be gc-protected
-
-	* lispcmds.c (sym_documentation_file): new variable
-	(cmd_substring): moved here from misc.c
-
-	* main.c: if an error occurs in startup, print it to stderr
-
-	* misc.c: lots of reorganisation, including:
-	(sym_operating_system, sym_window_system): replace
-	x11-p, unix-p and amiga-p functions
-	(system): deleted
-	(getenv): deleted, now in environ.jl
-
-	* unix_main.c (unix_set_fd_nonblocking, unix_set_fd_cloexec):
-	new functions
-	(sigio_handler): unused support for async input
-
-	* unix_processes.c: use process-environment variable to give
-	environ of each subprocess
-
-Fri Mar 20 12:24:50 1998  John Harper  <john dcs warwick ac uk>
-
-	* x11_windowsys.h (CLEAR_GLYPHS, FILL_GLYPHS): new macros, for
-	clearing and filling a horizontal sequence of glyphs in a window
-
-	* redisplay.c (redisplay_do_draw): while scanning a line for
-	attribute changes, also check if the chunk to be drawn consists
-	only of spaces. If so use the CLEAR_GLYPHS or FILL_GLYPHS
-	macros to draw it
-
-Thu Mar 19 14:54:39 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_client.c: two new options "-" and "--", for different
-	methods of evaluating forms read from stdin. "-" is intended
-	for interactive use, "--" for batch use
-
-	* symbols.c (cmd_makunbound, cmd_fmakunbound): don't set slots
-	to LISP_NULL, but to void_value
-
-Tue Mar 17 11:11:29 1998  John Harper  <john dcs warwick ac uk>
-
-	* glyphs.c (recenter_cursor): fixed a couple of bugs
-	(line_glyph_length): added special case for direct-mapped
-	cache; currently this is what's being used
-
-Mon Mar 16 10:47:21 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, bytecodes.h (OP_FILTER, OP_MACROP, OP_BYTECODEP):
-	new opcodes
-
-	* lispcmds.c (cmd_filter): new function, similar to the Miranda
-	function of the same name, construct a new list containing
-	elements of an input list that satisfy a predicate
-
-	* x11_keys.c (translate_event): was always using the display at
-	the head of the x11_display_list to convert keycodes to
-	keysyms; now use the display that the event came from
-
-Sat Mar 14 14:58:34 1998  John Harper  <john dcs warwick ac uk>
-
-	* streams.c (cmd_format, sym_format_hooks_alist): big overhaul
-	of the format function. Now flags work with most conversions,
-	and user-defined conversions are possible via the
-	format-hooks-alist variable
-
-	* unix_main.c (cmd_file_symlink_p): was using stat() instead of
-	lstat() to get the file's attributes
-
-Fri Mar 13 15:06:28 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_main.c (cmd_file_modes_as_string): returns an "ls -l"
-	type attribute string
-
-	* misc.c (cmd_file_name_as_directory, cmd_directory_file_name):
-	new functions
-	* unix_main.c (file_name_as_directory, directory_file_name):
-	support for the above
-
-	* misc.c (cmd_current_time_string): now takes two optional
-	arguments, a timestamp and a strftime() style format string
-
-	* lisp.c (bindlambdalist): fixed the bug of binding like let*
-	instead of like let
-
-Tue Mar 10 20:23:41 1998  John Harper  <john dcs warwick ac uk>
-
-	* find.c (cmd_search_forward, cmd_search_backward): fixed
-	case-insensitive matching (first character was always being
-	compared sensitively)
-
-Mon Mar  9 09:29:23 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (get_pty, run_process): handle not being able
-	to get a pty gracefully (i.e. don't dump core)
-
-	* regexp.c (regmatch_string): new function, basically a wrapper
-	for regtry(), i.e. compares a regexp to a string with no
-	searching
-
-	* find.c (cmd_string_match): swapped the order of the NOCASEP
-	and START args (now START is first). Should really make NOCASEP
-	a variable
-	(cmd_string_looking_at): new function, matches a regexp at one
-	place and one place only in a string
-
-Tue Mar  3 22:13:22 1998  John Harper  <john dcs warwick ac uk>
-
-	* redisplay.c (COMPARE_FAST_AND_LOOSE): when defined as
-	non-zero (the default) just compare hash codes to see if two
-	lines are the same, don't bother actually comparing them byte
-	by byte
-	(hash_glyph_row): changed how the attrs are included
-	(redisplay_message): hash the message line
-
-Mon Mar  2 11:10:59 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_client.c: new options "-x DISPLAY" and "-X" to simplify
-	opening a window to the server process
-
-	* x11_windowsys.h (struct x11_display): data structure to track
-	per-Display data
-	(WINDOW_XDPY): macro giving a pointer to the display data of a
-	partcular window
-	* x11_main.c (x11_open_display, x11_close_display,
-	x11_close_all_displays): functions for managing Displays
-	(x11_display_list): list of all open Display connections
-	* x11_windows.c: misc. updates to handle multiple displays
-	(cmd_make_window_on_display): low-level function to open a
-	window on a specified display (currently always opening a new
-	display connection)
-	* x11_keys.c: misc. updates to handle multiple displays; needs
-	to maintain individual Meta mappings per display
-	* x11_misc.c: misc. updates to handle multiple displays
-
-	* windows.c (cmd_destroy_window): call sys_unset_font before
-	closing the window
-
-	* unix_server.c: now accepts different types of requests, the
-	old find-file, eval, and end-of-session. Also, the connection
-	isn't closed after a file has been replied to
-	* unix_client.c: expanded to handle the new multiple request
-	server. New options -f, -e, and -q
-	* unix_defs.h (enum server_request): defines the request types
-	for the client/server stuff
-
-	* values.c (STATIC_ROOTS): increased from 128 to 160
-
-Sat Feb 28 15:38:33 1998  John Harper  <john dcs warwick ac uk>
-
-	* keys.c (eval_input_event): always clear prefix-arg
-
-Fri Feb 27 12:31:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* movement.c (cmd_center_display): changed semantics of
-	argument, positive args now count from zero, not one
-
-	* command.c (cmd_call_command): two new flags, @ and !. If the
-	result of the command is a position, and @ is set, move the
-	cursor to this position before returning. If ! is set, before
-	moving the cursor call the lisp function set-auto-mark
-
-	* movement.c (cmd_end_of_buffer, cmd_start_of_buffer,
-	cmd_end_of_line, cmd_start_of_line, cmd_forward_line,
-	cmd_forward_char, cmd_forward_tab, cmd_find_matching_bracket):
-	use new interactive decl flags @ and !
-
-Tue Feb 24 12:16:47 1998  John Harper  <john dcs warwick ac uk>
-
-	* redisplay.c (redisplay_message): new function, draws the
-	message line in the specified window
-	* glyphs.c (make_message_glyphs): new function, outputs the
-	glyphs needed to draw the message in the specified window
-	* windows.c, lisp.c: when the message has to be redisplayed
-	immediately call redisplay_message() instead of doing a full
-	redisplay
-
-	* views.c (cmd_get_buffer_view): new function, find a view
-	displaying a specified buffer
-
-Thu Feb 19 00:01:16 1998  John Harper  <john dcs warwick ac uk>
-
-	* Makefile.in: added @top_srcdir@/lib-src to VPATH
-
-	* lispcmds.c: added prototypes for all DEFSYMS
-
-	* windows.c (no_message): deleted, it was never called
-
-	* glyphs.c (recenter_cursor): global instead of static
-	* views.c (cmd_view_origin): calls recenter_cursor() to ensure
-	that the returned value will be correct after the next
-	redisplay (assuming that the current configuration still
-	exists)
-
-	* buffers.c (swap_buffer, swap_buffer_tmp): swap_buffer_tmp
-	deleted, this was almost the same as swap_buffer anyway. Added
-	code to remove a message that may obscure a newly activated
-	minibuffer
-
-	* keys.c (eval_input_event): modifications to allow prefix
-	arguments to work with unbound events (i.e. they insert ARG
-	copies of whatever they would normally insert)
-	(unbound-key-hook): this is now an `or' style hook
-
-	* glyphs.c (make_window_glyphs): only display a cursor in the
-	current window
-
-	* lisp.c (readl): accept the various backquote characters, that
-	is `X => (backquote X), ,@X => (backquote-splice X), and
-	,X => (backquote-unquote X)
-
-Wed Feb 18 22:52:13 1998  John Harper  <john dcs warwick ac uk>
-
-	* glyphs.c (gl_cache_entry_t, gl_cache, line_glyph_length):
-	structures and functions for caching the number of glyphs in a
-	line. Currently a 2-way associative 200 entry cache (indexed by
-	line number)
-	(string_glyph_length): renamed as uncached_string_glyph_length
-	(make_window_glyphs): much work to support line wrapping as
-	well as the old truncation display method
-	(skip_glyph_rows_forwards, skip_glyph_rows_backwards): new
-	functions for moving through a buffer as it would be displayed
-	on screen
-	(recenter_cursor): new function to handle the display origin of
-	each view. Replaces the old resync_xy()
-	(calc_cursor_offset): renamed as get_cursor_column(), now
-	actually returns the column number
-	(char_glyphs): deleted
-	(adjust_cursor_to_glyph): replaced by set_cursor_vertically,
-	this takes a view and a line number and moves the cursor to
-	that line trying to keep the original horizontal screen
-	position
-	(cmd_display_to_char_pos, cmd_char_to_display_pos): translate
-	between screen coordinates in a view and character positions
-
-  	* redisplay.c (cmd_redisplay): don't call resync_xy()
-
-	* movement.c (sym_next_screen_context_lines): overlap for when
-	scrolling by the screenful
-	(cmd_center_display, cmd_forward_line): updated for wrapped
-	lines
-	(move_down_screens, move_up_screens): deleted
-	(cmd_next_screen, cmd_prev_screen): updated for wrapped lines,
-	also moves the cursor relative to the screen origin, and may
-	leave some context
-	(cmd_mouse_pos): deleted, now implemented in edit.jl
-
-	* housekeeping.c (resync_xy, set_start_col, set_start_line):
-	all deleted
-
-	* editcommands.c (cmd_indent_to): call get_cursor_column()
-	instead of calc_cursor_offset()
-
-	* edit.h (Mark): type renamed as Lisp_Mark, removed mk_ prefix
-	from field names, removed MKFF_RESIDENT flag, implied by type
-	of "file" field. Added MARK_IS_RESIDENT_P() macro
-	(TXFF_DONT_WRAP_LINES): flag controlling whether long lines are
-	truncated or wrapped when rendering. TX_WRAP_LINES_P() accessor
-	macro.
-	(VWFF_AT_BOTTOM): flag set by recenter_cursor() when the end of
-	the buffer is displayed by the view
-
-	* edit.c (check_row): new function, similar to check_line but
-	takes a line number instead of a position
-
-	* buffers.c (cmd_in_restriction_p): deleted
-	(cmd_buffer_restricted_p): new function, returns t when the
-	buffer is restricted to less than its full size
-	(var_truncate_lines): new variable, controls the
-	TXFF_DONT_WRAP_LINES flag
-	(cmd_set_mark): deleted
-	(cmd_set_mark_pos, cmd_set_mark_file): new functions
-
-	* windows.c (cmd_make_window): call make-window-hook
-
-	* views.c (cmd_destroy_view): updated for line wrapping (use
-	skip_glyph_rows functions)
-	(update_status_buffer): use VWFF_AT_BOTTOM for position flag
-	(cmd_translate_pos_to_view): updated for new display regime
-
-	* unix_server: replace all occurrences of server-open-file with
-	server-find-file
-
-	* symbols.c (symbols_init): explicitly initialise the function
-	value of sym_nil in case it was dumped (and left as 0)
-
-	* lispcmds.c (cmd_list): add test for interrupt
-	(cmd_list_star): new function, creates a dotted list
-	(cmd_atom): somehow I'd inverted the meaning of this predicate
-	(cmd_macrop): new function
-	(cmd_subrp): don't treat bytecode objects as subrs
-
-	* Makefile.in: use substitution opt_enable_dumped instead of
-	enable_dumped
-
-Thu Feb 12 18:30:19 1998  John Harper  <john dcs warwick ac uk>
-
-	* jade.h, io.c, lispcmds.c, lispmach.c, redisplay.c, regexp.c,
-	symbols.c, undo.c, unix_client.c, unix_main.c,
-	unix_processes.c, unix_server.c, x11_defs.h, x11_keys.c,
-	x11_misc.c: changes to work with autoconf/configure managed
-	configuration process
-
-	* memcmp.c: new file, defines the memcmp() library function in
-	case its not in libc
-
-	* unix_processes.c (get_pty): support for /dev/ptmx style
-	opening of pseudo terminals
-
-	* glyphs.c (make_window_glyphs): a lot of reorganisation,
-	mostly aimed at simplifying things
-
-	* housekeeping.c (resync_y): fixed gaps at the end of buffers
-	not being suppressed. It now goes the other way, and is
-	possibly a bit too eager now, but I'll see if I get used to
-	it.. (see the function for a comment)
-
-Tue Feb 10 11:15:06 1998  John Harper  <john dcs warwick ac uk>
-
-	* glyphs.c (make_window_glyphs): fix for rectangular blocks not
-	working in glyph coordinates
-
-Thu Feb  5 17:46:50 1998  John Harper  <john dcs warwick ac uk>
-
-	* glyphs.c (make_window_glyphs): fix for block ending past last
-	displayed column
-
-	* views.c (update_status_buffer): fix for "All of" not being
-	displayed when the last line in the buffer falls exactly on the
-	last line of the view
-
-Mon Feb  2 00:05:12 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.h (TX): deleted tx_LastLogical? and tx_Mod?, also
-	removed the flags TXFF_REFRESH_ALL and TXFF_REFRESH_STATUS.
-	The functions flag_insertion, flag_deletion, and
-	flag_modification are now macros that simply bump the buffer's
-	change counter.
-	(VW): removed vw_LastDisplayOrigin and vw_LastBlock?. Changed
-	vw_BlockStatus to an int. Replaced vw_?Pix by vw_FirstX and
-	vw_FirstY. Deleted VWFF_FORCE_REFRESH, VWFF_REFRESH_BLOCK, and
-	VWFF_REFRESH_STATUS flags.
-	(glyph_code, glyph_attr, enum Glyph_Attrs, glyph_buf): types
-	for glyph buffers
-	(WIN): w_Content and w_NewContent, old and new glyph buffers.
-	Deleted w_FontStart, not used anywhere.
-
-	* glyphs.c (make_glyph_array, expand_tabs): deleted
-	(make_window_glyphs): new function, out of the ashes of
-	make_glyph_array(), it creates the glyph buffer of a window
-	(GlyphTable): changed name to glyph_table_t
-
-	* redisplay.c: new file, provides a general redisplay algorithm
-	using diffing of glyph buffers to decide what to redraw
-
-	* x11_windowsys.h: all macros deleted, replaced by DRAW_GLYPHS
-	and COPY_GLYPHS
-
-	* main.c (inner_main): call redisplay_init instead of
-	refresh_init, don't control cursor
-	(cmd_recursive_edit): don't mess with cursor
-
-	* unix_main.c (event_loop): don't control refresh explicitly,
-	just call cmd_redisplay() once per loop
-
-	* views.c (recalc_pixel_measures): renamed recalc_measures
-	(cmd_destroy_view): when there's no preceding view to give the
-	space to, ensure that the following view is ``scrolled''
-	upwards such that no display scrolling takes place	
-	(var_max_scroll): deleted
-
-	* windows.c: allocation/deallocation of glyph buffers
-	(update_window_dimensions): centralised function to call when
-	the window changes size
-
-	* x11_main.c: handle Expose events by marking that a rectangle
-	of the current glyph buffer is garbage. Also handle
-	GraphicsExpose here now
-	(sys_flush_output): deleted, call cmd_flush_output() instead
-
-	* x11_windows.c: minor changes
-	* edit.c (pos_in_block, page_in_block, line_in_block,
-	set_block_refresh): all deleted
-	* editcommands.c: don't call set_block_refresh
-	* housekeeping.c: don't update vw_LastBlock? or tx_Mod?
-	positions since they don't exist anymore
-	* buffers.c, io.c, streams.c: don't set any of the explicit
-	refresh flags anymore, since they were removed
-	* values.c (make_value): don't mark tx_Mod? or vw_LastBlock? or
-	vw_LastDisplayOrigin
-	* movement.c (cmd_mouse_pos): use vw_FirstY instead of
-	vw_TopPix
-	* refresh.c, render.c, x11_render.c: deleted
-	* unix_processes.c, unix_server.c: don't control cursor anymore
-
-	* lisp.c: don't call refresh_message(); cmd_flush_output() to
-	get a message displayed, just cmd_redisplay(), also don't turn
-	cursor on or off, or call refresh_X
-	* lisp.h (VGLYPHTAB): new name for underlying typedef
-
-	* keys.c (usekey): renamed as eval_input_event(). Also, don't
-	do anything to handle the display
-
-Sun Jan 25 14:03:09 1998  John Harper  <john dcs warwick ac uk>
-
-	* io.c (cmd_write_buffer_contents): don't call check_section to
-	check the START and END arguments since it looks at the current
-	restriction, not what is required, so do it manually. Also try
-	to defend against START and END pointing past the end of their
-	respective lines
-
-Sat Jan 24 16:46:25 1998  John Harper  <john dcs warwick ac uk>
-
-	* io.c (cmd_read_buffer): renamed as read-file-contents
-	(cmd_write_buffer): deleted
-	(cmd_write_buffer_area): renamed as write-buffer-contents.
-	Moved the FILE argument to be first, START and END are now
-	optional, by default the start and end of the current buffer
-	(ignoring restrictions)
-	(cmd_insert_file_contents): new function
-	* unix_processes.c (cmd_call_process_area): calls
-	cmd_write_buffer_contents now
-
-	* jade.h: moved CONCAT() and QUOTE() to the top of the file,
-	include "unix_defs.h", "x11_defs.h" and "amiga_defs.h" (when
-	necessary) instead of in the config file. Also the
-	configuration file is defined by the macro CONFIG_FILE (it will
-	be quoted)
-
-	* lisp.c (eval_lambda, funcall): handle throw to 'defun (i.e. a
-	non-local return) properly
-	(cmd_condition_case): ensure that throw_value == LISP_NULL
-	while chasing down the list of handlers
-
-	* lisp.h: definitions for dumped Lisp constants
-	(CONS_WRITABLE_P): true when the cons cell arg is not in
-	read-only storage
-	(V_Compiled): set to 7
-	(VECTOR_WRITABLE_P): defined in terms of dumped_text_start and
-	dumped_text_end
-	(COMPILED_WRITABLE_P): deleted, use VECTOR_W_P
-	(dumped_X_{start,end}): prototypes for the symbols created by
-	dump.jl
-	(DUMPED_SYM_NIL): a pointer to the dumped nil symbol
-
-	* symbols.c (OB_NIL): now defined as &void_object
-	(symbols_sweep): treat all dumped symbols as an extra
-	allocation block (albeit one in which unused symbols are never
-	put on the free-list)
-	(cmd_put): check that cons cell being updated is
-	CONS_WRITABLE_P, if not allocate a new one
-	(pre_symbols_init): new function to create the obarray
-
-	* lispcmds.c (cmd_nconc, cmd_rplaca, cmd_rplacd, cmd_nreverse):
-	check if CONS_WRITABLE_P(), signal setting-constant error if
-	not
-	(cmd_load): check for ".jld" suffix first when DUMPED is
-	defined, these are the files of non-constant forms output by
-	dump.jl
-	(cmd_subr_documentation): for built-in subroutines, don't
-	return the string from the DOC file, just its position
-
-	* lispmach.c (cmd_jade_byte_code): in OP_ERRORPRO don't do one
-	to many cdrs when finding the error data
-
-	* main.c (main): mods for dumped constants. Call
-	pre_values_init() and pre_symbols_init(), then dumped_init()
-	when DUMPED is defined, then the normal stuff
-
-	* regexp.h, regjade.c, regsub.c: replace #ifdef BUILD_JADE by
-	#ifdef JADE. Also moved to the main src directory so remove ..
-	in included file names.
-
-	* streams.c (cmd_open, cmd_close): renamed as open-file and
-	close-file
-	(cmd_seek_file): new function, a combination of ftell() and
-	fseek()
-	(cmd_read_file_until): deleted
-
-	* unix_main.c (read_file): deleted
-
-	* unix_processes.c (run_process): set close-on-exec for
-	pr_Stderr. Order of interrupt signals for synchronous processes
-	is not SIGINT, SIGTERM, SIGKILL.
-
-	* values.c (string_cmp): use memcmp to compare strings, not
-	strcmp which exits on finding a zero byte, doh!
-	(mark_value): don't mark read-only cons or vector cells
-	(values_init): now called pre_values_init
-	(values_init2): now called values_init
-	(dumped_init): function to get all dumped data ready for use,
-	basically interns all symbols, setting NULL pointers they
-	contain to nil. Also initialises the allocated_X counts
-
-	* io.c (cmd_read_file, cmd_write_file): deleted these
-	functions
-
-Mon Jan 19 00:32:48 1998  John Harper  <john dcs warwick ac uk>
-
-	* lisp.h (Lisp_Compiled): changed to allow a minimum of four
-	items in the vector, also changed some of the related macros
-
-	* lispcmds.c (cmd_bytecodep): new function
-	(cmd_defun, cmd_defmacro): now accept bytecode objects as
-	second argument
-
-	* lispmach.c (cmd_jade_byte_code): check when handling
-	exceptions that throw_value != LISP_NULL
-
-	* find.c (compile_regexp): check for NULL value of last program
-
-	* buffers.c, commands.c, editcommands.c, find.c, keys.c,
-	lisp.c, lispmach.c, main.c, symbols.c, undo.c,
-	unix_processes.c, unix_server.c, views.c, windows.c,
-	x11_misc.c: made all DEFSYM's global and ensured that each
-	DEFSYM is on a separate line.
-
-	* lisp.h (VECTOR_WRITABLE_P): check if a vector is in writable
-	memory or not
-	* lispcmds.c (cmd_aset): check when modifying a vector that the
-	cell8 static bit isn't set. For this and (now) for modifying a
-	static string the setting-constant error is raised
-
-	* lispmach.c (cmd_jade_byte_code): use a single switch
-	statement, instead of differentiating between those
-	instructions with embedded arguments, and those without.
-
-Sun Jan 18 00:10:41 1998  John Harper  <john dcs warwick ac uk>
-
-	* lisp.h (Lisp_Compiled): new type, a five-element vector
-	representing a byte code subroutine
-	(Lisp_Cell): given each cell8 type a `static' bit as bit 7,
-	this also doubles the maximum size of strings
-
-	* values.c: minor changes for new type
-
-	* streams.c (stream_put_cntl): deleted since it was never used
-
-	* lispmach.c (cmd_jade_byte_code): calling byte code subrs
-	(cmd_make_byte_code_subr): new function
-
-	* lispcmds.c: updated to support byte code subrs in most places
-	that vectors are supported
-
-	* lisp.c: big changes: support for byte code subrs, eval now
-	uses funcall to call functions, only macroexpands expands
-	macros, #[...] reads and prints as a byte code object, cleaned
-	up what is protected from garbage collection, only funcall
-	increments and checks max-lisp-depth..
-	(print-escape-newlines): now called `print-escape', can also be
-	set to produce octal escapes for _all_ non-printing characters
-
-	* edit.c (free_line_buf): function version of FREE_LINE_BUF
-	* io.c (read_tx): use free_line_buf() to free lines
-
-	* commands.c: updated to handle byte code subrs
-
-	* edit.h, edit.c, buffers.c, io.c: each buffer now gets its own
-	StrMem pool
-
-	* stringmem.c (sm_init): initialise more of the fields
-
-	* stringmem.h, stringmem.c: new field in MemBucket structure,
-	`mbu_FreeCount', contains the number of available objects in
-	the buffer
-
-	* lisp.h: Changed the VALUE format again. Now its:
-
-	"Bit definitions for VALUE pointers. The lowest bit is always
-	zero except during GC. If bit one is set the object is a 30-bit
-	signed integer, with the data bits stored in the pointer as
-	bits 2->31.
-
-	If bit one is clear the VALUE is a pointer to a "cell", all
-	objects apart from integers are represented by various types of
-	cells. Every cell has a VALUE as its first element, the lowest
-	bits of this VALUE define the actual type of the cell.
-
-	If bit zero is unset, the cell is a cons, a pair of two
-	values the car and the cdr (the GC mark bit of the cons is bit
-	zero of the cdr).
-
-	If bit zero is set the cell more type information is stored
-	in bits 1->6, with bit 7 the mark bit."
-
-Fri Jan 16 00:40:41 1998  John Harper  <john dcs warwick ac uk>
-
-	* unix_misc.c: renamed as unix_main.c
-	(register_input_fd, deregister_input_fd): functions to register
-	that we need to listen for input on a file description, and the
-	function to be called when input is available
-	(event_loop): a totally general input loop using select(), made
-	from old bits of x11_eventloop.c
-
-	* x11_display.c: renamed as x11_main.c, inherited what's left
-	of x11_eventloop.c
-	(x11_handle_input): a function that's registered as the input
-	handler for the X11 Display fd; does all event handling
-	(sys_flush_output): a function called from event_loop() that
-	just calls XFlush()	
-
-	* main.c (on_idle): new function to move the idle actions out
-	of the system-specific code
-	(handle_input_exception): similar idea for handling of
-	exceptions in low-level input loops
-	(doconmsg, input_lock, cmd_input_lock): deleted all these
-	remnants of Amigadom
-
-	* unix_processes.c: uses [de]register_input_fd()
-	(cmd_signal_process): deleted this function, it was ill-guided,
-	instead define a function do_signal_command by which the Lisp
-	functions that send signals are implemented
-
-	* unix_server.c: uses [de]register_input_fd()
-
-	* values.c (cmd_cons): _will_ return LISP_NULL if we are out of
-	memory, this will break things further up the line..
-
-Thu Jan 15 12:46:46 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_nth, cmd_nthcdr): these now check for interrupts
-
-	* lisp.c (find_member_by_index, move_down_list): removed these
-	functions, they were (almost) the same as nth and nthcdr
-
-	* commands.c (interactive_spec, cmd_interactivep): don't use
-	find_member_by_index() and move_down_list(), use nth and nthcdr
-	instead.
-	* streams.c (cmd_format): don't use ARG1 and ARG2 macros
-	* lisp.h: removed ARG1-4 and ARGN macros
-
-	* lisp.c (debug_on_error): made this into a normal variable,
-	not a subr-variable type thing
-
-	* misc.c (cmd_make_completion_string): cleaned up this function
-
-	* lispcmds.c (cmd_function, cmd_return): removed, defined as a
-	macro in lisp.jl
-	(cmd_make_list): don't build the list front-to-back, ordering's
-	not important
-	(cmd_eval_hook, cmd_eval_hook2): deleted
-	(cmd_call_hook): new function, three arguments, HOOK-SYMBOL,
-	ARG-LIST, and optionally TYPE. TYPE is one of nil, or, and,
-	defining how the return values of the hook functions are
-	treated.
-
-	* commands.c, editcommands.c, keys.c, views.c, windows.c,
-	x11_eventloop.c: changed calls to eval-hook to use call-hook
-
-Wed Jan 14 17:49:27 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispmach.c, bytecodes.h: totally rethought how exceptions
-	(i.e. unwind-protect, catch/throw and condition-case) are
-	handled. Before the handler forms were compiled into separate
-	byte-code forms. Now we handle them inline to the original
-	piece of code. The idea is that the new instruction OP_BINDERR
-	registers an exception handler (an offset into the byte-code
-	string), along with the current stack pointer, by adding to the
-	binding stack. When an exception occurs the bind stack is
-	unbound, when a (PC . SP) item is found, the stack pointer is
-	set to SP, throw_value is pushed onto it, and PC is jumped to.
-	The EJMP instruction can be used to give control back to the C
-	error handler.
-
-	(OP_CATCH_KLUDGE, OP_UNWIND_PRO, OP_UN_UNWIND_PRO,
-	OP_ERROR_PRO) all been deleted.
-
-	(OP_CATCH): new opcode. This takes two arguments, TAG and
-	THROW-VALUE. THROW-VALUE is the saved copy of throw_value, if
-	(car THROW-VALUE) == TAG we match, and we leave two values on
-	the stack, nil on top (to pacify EJMP), (cdr THROW-VALUE) below
-	that.
-
-	(OP_BINDERR): Pop our single argument and cons it onto the
-	bind- stack in a pair with the current stack-pointer. This
-	installs an address in the code string as an error handler.
-
-	(OP_ERRORPRO): This should be called with three values on the
-	stack. 1. conditions of the error handler 2. throw_value of the
-	exception 3. symbol to bind the error data to (or nil). It pops
-	(1) and tests it against the error in (2). If they match it
-	sets (2) to nil, and binds the error data to the symbol in (3).
-
-	(OP_EJMP): Pop the stack; if it's nil jmp pc[0,1], otherwise
-	set throw_value=ARG and goto the C error handler.
-
-	* lisp.c (cmd_error_protect): renamed this as condition-case
-	and inserted a new first parameter VAR, the symbol to bind the
-	error data to. This is the same as Emacs function, it's
-	necessary for the new VM error handling
-	(compare_error): new function to compare the conditions a
-	handler says it will take, against the error that was
-	signalled
-
-	* lispcmds.c (cmd_unwind_protect): only reinstall the old throw
-	if it's actually an error and there was no error in the cleanup
-	forms. This way the newest error takes precedence
-
-Mon Jan 12 22:15:55 1998  John Harper  <john dcs warwick ac uk>
-
-	* find.c (buffer-compare-string): function to compare a string
-	with a position in a buffer
-
-	* lisp.c (sym_debug_macros, eval): when debug-macros is nil the
-	debugger is never entered to expand a macro definition
-
-	* lispcmds.c (cmd_max, cmd_min): new functions
-	* bytecodes.h, lispmach.c (OP_MAX, OP_MIN): new instructions
-
-Sun Jan 11 19:16:09 1998  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_load, sym_eval_after_load): a method of having
-	a form be evaluated after a specified Lisp-library is loaded.
-
-Tue Jan  6 13:06:06 1998  John Harper  <john dcs warwick ac uk>
-
-	* edit.c (pad_cursor): reinstall the original cursor position
-	after calling pad_pos(), since spaces may have been inserted
-	before it, pushing it further down the line.
-
-	* unix_processes.c (check_for_zombies): re-ordered a lot of this
-	function. Also fixed the bug where errno was being looked at
-	even if the return from waitpid() was zero.
-
-Sat Jan  3 20:57:03 1998  John Harper  <john dcs warwick ac uk>
-
-	* refresh.c (refresh_block): move the initialisation of tstart
-	and tend to before they're passed as arguments to sub_regions()
-
-Sun Dec 21 02:48:28 1997  John Harper  <john dcs warwick ac uk>
-
-	* lisp.h (VCONS): don't mask out the VALUE_CONS_MARK_BIT, if
-	this needs to be done, it's done explicitly
-
-	* lisp.h (LISP_MAX_INT, LISP_MIN_INT): macros defining the
-	limits of what can be stored in integer values
-
-	* lisp.c (read_symbol): rewrote the code to parse integers, it
-	does all calculation inline, removing the need to call
-	strtol() at the end, plus negative hexadecimal numbers work
-	properly now.
-
-Sat Dec 20 00:01:55 1997  John Harper  <john dcs warwick ac uk>
-
-	* misc.c, build-info, Makefile.in: the shell script build-info
-	produces a header file build.h, defining some of the
-	circumstances of the build process. misc.c includes this
-	header file and makes the information available through the
-	`version-and-build-string' function.
-
-	* lisp.h (Lisp_Data_Type): Added a new `sweep' field, a
-	function to call in the sweep phase of GC
-
-	* values.c (data_types): filled in the new `sweep' field
-	(cmd_garbage_collect): call each `sweep' function in turn
-	instead of doing this by name
-
-	* unix_processes.c (proc_init): now installs type information
-	about V_Process objects in data_types[] itself.
-	also removed the __waitpid__ debugging since the bug never
-	occurred, maybe it will now...
-
-	* lisp.h: Positions are now (ROW . COL), we keep the `Pos'
-	structures for internal use, to avoid the masking and shifting
-	required to access Lisp cons and integers. Having said that,
-	they're not used that widely, just a few functions.
-
-	* editcommands.c (pos-col, pos-line): removed these, they're
-	defined in lisp.jl as macros (cdr and car respectively)
-
-	* bytecodes.h, lispmach.c (OP_POS, OP_POSP): two new opcodes,
-	the pos and posp functions. Note that pos isn't the same as
-	cons since it replaces nil arguments with the current row or
-	column of the cursor (also, of course, the arguments are the
-	opposite order to in the cons function.)
-
-	* lisp.h: Totally changed the way that VALUEs (Lisp objects)
-	are defined; instead of wasting memory storing type
-	information in cons cells and storing integers as allocated
-	objects, we now do some bit-twiddling to store a subset of the
-	type information in the two or three lowest bits of the VALUE.
-
-	This means that cons cells only take 2 words (8 bytes) instead
-	of 3, and integers can be stored in the VALUE itself (but now
-	we only have 29-bit signed integers, not 32). Also we have to
-	enforce strict alignment rules: cons cells to at least eight
-	bytes, _everything_ else to at least four bytes.
-
-	It's basically trading memory use in the data section for
-	some code bloat (the extra instructions to do the bit
-	twiddling). It's not too bad though, all objects but cons
-	cells and numbers can be accessed from a VALUE as-is, once
-	their type has been established (which does take a few more
-	instructions).
-
-	I've also taken this opportunity to clean up some of the other
-	Lisp object handling code. Also, the plan is to remove
-	position objects completely and store them as a cons cell
-	containing two integers.
-
-	To overcome the loss of the three bits in integers, I've
-	defined a new pseudo-type called LONG_INT, which is a cons
-	cell containing the low 24 bits in its car, and the high bits
-	in the cdr. This allows large values like time stamps to be
-	stored without dropping bits.
-
-	* configs/config.h.*: added some more configuration macros, all
-	to do with alignment,
-	(MALLOC_ALIGNMENT): this has to be defined to the minimum
-	alignment of malloc() allocations. It's checked in an assert
-	in unix_memory.c currently
-	(PTR_SIZED_INT): by default `long int', this must be an
-	implicitly signed integer of the same size as a standard
-	pointer (i.e. sizeof(PTR_SIZED_INT) == sizeof(void *), this is
-	also checked, in main.c)
-	(ALIGN_4, ALIGN_8): these aren't actually mentioned in the
-	config files, but they align definitions to four and eight
-	bytes respectively. For GNU CC they'll be defined in jade.h
-	when not already existing
-
-	* lisp.c (handle_var_long_int): similar to handle_var_int, but
-	for 32 bit integers stored in cons cells
-	* buffers.c (var_last_save_time): defined as a LONG_INT now
-	* misc.c (cmd_current_time): returns a LONG_INT now
-	(cmd_time_later_p): new function for comparing time stamps
-
-	* edit.h (TX): Changed some long fields to ints, to signal
-	that they can be stored in less than 24 bits
-
-	* jade.h (ALIGN_4, ALIGN_8): definitions for GNU CC
-	(CONCAT, OFFSETOF): new macros
-
-	* stringmem.c, stringmem.h: formalised old alignment
-	assumptions, all allocated blocks will be aligned to at least
-	four bytes.
-	(STRMEM_ALIGNMENT): defined to the minimum alignment of blocks
-	allocated by sm_alloc()
-
-Tue Dec 16 12:05:14 1997  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_or, cmd_and): deleted, these are now macros
-	in lisp.jl
-
-Mon Dec 15 10:52:24 1997  John Harper  <john dcs warwick ac uk>
-
-	* edit.c: When allocating line buffers, use the knowledge that
-	stringmem.c allocates memory in multiples of eight bytes to
-	improve our allocation strategy. Lines are also allocated in
-	multiples of eight bytes, and insertions/deletions that don't
-	cause a multiple-of-eight boundary to be crossed are handled
-	by a simple memory copy.
-	(LINE_BUF_SIZE, ALLOC_LINE_BUF, FREE_LINE_BUF): macros to
-	implement the above strategy
-	(alloc_line_buf): function version of ALLOC_LINE_BUF
-	(delete_section): when joining two lines, optimise the case
-	where either of the lines is empty
-	* io.c (read_tx): all line allocations use alloc_line_buf()
-	now.
-
-	* bytecodes.h (OP_JPN, OP_JPT): new opcodes, jump-and-pop-if-t
-	and jump-and-pop-if-nil
-	* lispmach.c (jade-byte-code): implemented JPN and JPT
-
-Sun Dec 14 14:10:47 1997  John Harper  <john dcs warwick ac uk>
-
-	* editrect.c: removed, now implemented in Lisp in rectangle.jl
-	* Makefile.in: removed editrect.c from COMMON_SRCS
-	* main.c (inner_main): removed call to editrect_init()
-
-	* glyphs.c (char-to-glyph-pos, glyph-to-char-pos): now check
-	the validity of the POS argument
-
-	* find.c (string-match): new optional arg START, defining
-	where in the string to start searching
-
-	* Radically changed the way in which position objects are
-	handled. Removed the old POS/LPos distinction; now we only
-	have positions as Lisp objects, two new macros VCOL(p) and
-	VROW(p) to access the two components of a position.
-
-	But perhaps the most important change is that positions in
-	Lisp objects are _immutable_, that is, once they've been
-	created their contents can not be modified. Although this may
-	appear to involve many more objects being allocated, this
-	isn't necessarily the case since pointers to position objects
-	may be passed around much more freely, for example, when
-	creating undo information.
-
-	There is a distinction made between accessing positions
-	through VALUEs, and through `Pos *' pointers---the latter are
-	generally stored on the stack and hence writable.
-
-	The immutability of positions means that the functions
-	next-char, et al. which _modify_ position objects are no
-	longer valid. A list of function changes follows:
-
-	* editcommands.c (set-pos-col, set-pos-row, split-line):
-	removed, split-line implemented in edit.jl
-
-	* movement.c (next-char, prev-char): renamed as forward-char
-	(next-line, prev-line): renamed as forward-line
-	(next-tab, prev-tab): renamed as forward-tab
-	In all of these backward-X is provided by lisp/edit.jl. These
-	functions are similar to the old ones, but always return a new
-	position.
-	(screen-top-line, screen-bottom-line,
-	screen-first-column, screen-last-column): removed, they were
-	never used
-	(left-char, right-char): removed, sort of implemented as
-	macros in edit.jl
-	(goto-char): renamed as `goto'
-	(buffer-end, line-end): renamed as `end-of-X'
-	(buffer-start, line-start): renamed a `start-of-X'
-	(goto-buffer-start, goto-buffer-end, goto-line-start,
-	goto-buffer-end, goto-next-line, goto-prev-line,
-	goto-left-char, goto-right-char, goto-prev-tab, goto-next-tab,
-	goto-next-char, goto-prev-char): removed, most of the new
-	functions can be called interactively instead
-	(match-brackets): renamed as `find-matching-bracket'
-
-	* find.c: lots of name changes. Also added a 1-deep cache of
-	compiled regexps, preliminary results indicate a 10% hit ratio
-	(find-next-regexp, find-prev-regexp): renamed as
-	`re-search-forward' and `re-search-backward'
-	(find-next-string, find-prev-string): renamed as
-	`search-forward' and `search-backward'
-	(find-next-char, find-prev-char): renamed as
-	`char-search-forward' and `char-search-backward'
-	(regexp-quote): renamed as `quote-regexp'
-	(regexp-match): renamed as `string-match'
-	(replace-string, replace-regexp, regexp-expand,
-	regexp-expand-line, regexp-match-line): removed,
-	replace-string implemented in lisp/replace.jl
-	(expand-last-match): expands a template using the
-	subexpression data of the most recent regexp match
-
-	* I have a sed script that will perform a lot of these name
-	changes,
-
-s/(buffer-start/(start-of-buffer/
-s/(buffer-end/(end-of-buffer/
-s/(line-start/(start-of-line/
-s/(line-end/(end-of-line/
-s/(goto-char/(goto/
-s/(match-brackets/(find-matching-bracket/
-s/(next-char/(forward-char/
-s/(next-line/(forward-line/
-s/(next-tab/(forward-tab/
-s/(goto-buffer-start)/(goto (start-of-buffer))/
-s/(goto-buffer-end)/(goto (end-of-buffer))/
-s/(goto-line-start)/(goto (start-of-line))/
-s/(goto-line-end)/(goto (end-of-line))/
-s/(find-next-regexp/(re-search-forward/
-s/(find-prev-regexp/(re-search-backward/
-s/(find-next-string/(search-forward/
-s/(find-prev-string/(search-backward/
-s/(find-next-char/(char-search-forward/
-s/(find-prev-char/(char-search-backward/
-s/(regexp-quote/(quote-regexp/
-s/(regexp-match/(string-match/
-
-	It still leaves a lot to be done by hand though, all prev-char,
-	prev-line and prev-tab calls should be changed to forward-X
-	with negative arguments (faster than calling backward-X); also
-	the result of the function must be used now.
-
-	* unix_processes.c: once again I've simplified the process
-	termination code; now the only thing done in the SIGCHLD
-	handler is to set a flag that is checked by a function called
-	after every event/timeout by x11_eventloop.c, I've also added
-	some debugging trace info. to try and narrow down the
-	intermittent bug that causes synchronous processes to hang on
-	exit (if it still exists)
-
-	* debug-buffer.c: new file; provides circular output buffers
-	and a `db_printf' function to output to them, on a crash or by
-	called `db_spew' their contents is output
-
-	* unix_misc.c: all standard signal handling is here now,
-	including the SIGINT handler that used to be in x11_display.c
-
-	All error signals (FPE, ILL, SEGV, BUS, QUIT, ABRT) are
-	trapped and cause all debug buffers, and the lisp backtrace to
-	be output before termination.
-
-	SIGINT works as before, by stuffing int_cell into throw_value
-
-	All other termination signals (TERM, HUP) cause term_cell to
-	be stuffed into throw_value, this winds back to the top-level
-	event loop, which auto-saves all modified files before quitting
-
-	* x11_eventloop.c: now calls proc_periodically() instead of
-	proc_notification(), also handles finding sym_term_interrupt
-	in the car of the throw_value (as described in the previous
-	paragraph).
-
-	* x11_windows.c (screen-width, screen-height, window-left-edge,
-	window-top-edge, window-width, window-height,
-	window-bar-height): removed, they weren't used by anything
-
-	* buffers.c (auto-save-buffers): new boolean argument,
-	`force_save', when true the time factor when looking for files
-	to auto save is ignored.
-	(get_tx_cursor_ptr): similar to `get_tx_cursor' but returns a
-	ptr-to-a-ptr
-
-	* edit.c: cleaned up the myriad of insignificant functions
-
-	* misc.c (strtoc, ctostr): removed these ugly functions
-	(version-string): new function returning a string describing
-	the current editor version
-
-	* streams.c (stderr-file): does for stderr what stdout-file
-	does for stdout
-
-	* views.c (view-origin): returns the position of the top-left
-	character in the view
-
-	* configs/config.h.* (HAVE_PSIGNAL, HAVE_STRSIGNAL): two new
-	configuration macros
-
-	* regexp/regexp.h, regexp/regjade.c, regexp/regsub.c: changes
-	for new position objects, also some changes to calling format
-
-Mon Dec  8 11:32:15 1997  John Harper  <john dcs warwick ac uk>
-
-	* undo.c (undo_record_insertion, undo_record_deletion,
-	undo_record_modification, undo_push_deletion): ensure that
-	null commands are ignored (i.e. when START == END)
-
-	* editcommands.c (cmd_set_indent_pos): in the `diff > 0'
-	section, the undo_record_modification() function was being
-	called _after_ the modification had been performed, not before
-	as it should be
-
-	* unix_processes.c: Simplified the async. process clean up; the
-	PR_EXITED value has been scrapped. Now we assume that once we
-	receive SIGCHLD from a process there won't be any more output
-	coming from it. This seems to work ok but I think there may be
-	race-conditions involved (between the main select() and the
-	clean up code). Needs serious investigation.
-
-	* x11_eventloop.c: Removed call to proc_on_idle()
-
-Wed Nov 26 13:13:52 1997  John Harper  <john dcs warwick ac uk>
-
-	* jade.h: reorganised a bit
-	(MAX,MIN,POS): macros for maximum, minimum, and positive part,
-	respectively
-	(ROUND_UP_INT, ROUND_DOWN_INT): rounding macros
-
-	* housekeeping.c (resync_y): rewritten; fixed the bug in which
-	the cursor was sometimes being left outside the visible
-	region. Also avoids unnecessary space being left at the bottom
-	of the display in certain circumstances
-
-Mon Nov 24 11:25:06 1997  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c (cmd_last): now returns the last element as it
-	should, not the last cons cell
-
-Sun Nov 23 16:09:44 1997  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (signal_missing_arg): put the argument number into a
-	list.
-
-	* lispcmds.c (APPLY_COMPARISON): don't check for numerical
-	args, comparison works on all objects. Signal an error if less
-	than two arguments are given
-
-	* lispmach.c (unbind_one_level): when reinstalling a view,
-	check that its parent window is still valid
-
-	* views.c (cmd_with_view): don't save the old window, it's
-	stored in the view structure
-
-	* windows.c (cmd_with_window): reinstall the current view in
-	the old window, as well as the window itself
-
-Fri Nov 21 12:23:16 1997  John Harper  <john dcs warwick ac uk>
-
-	* lispcmds.c: generally improved error reporting, especially
-	of missing arguments (a lot of functions just returned NULL,
-	no errors or anything..) Also functions which take lists as
-	arguments don't silently ignore anything that's not a cons
-	cell, an error is signalled if it's not LISTP (cons or nil)
-	(cmd_plus): no arguments gives a result of zero.
-	(cmd_product): no arguments gives a result of one.
-	(cmd_remainder): restricted to two arguments now, any more are
-	pretty meaningless
-	(cmd_mod): new function implementing the modulo operation,
-	similar to cmd_remainder but works properly for negative
-	arguments.
-	(cmd_gtthan, cmd_gethan, cmd_ltthan, cmd_lethan): can now take
-	more than two arguments
-
-	* lisp.c (signal_missing_arg): new function for convenience
-
-	* lisp.h (LISTP): new macro, disjunction of NILP and CONSP
-
-	* bytecodes.h, lispmach.c (OP_MOD): renamed as OP_REM to allow
-	a new instruction OP_MOD that does the proper modulo operation
-
-	* lispmach.c (cmd_validate_byte_code): new function to check
-	if a given byte code instruction set version may be executed
-	in the current version of the editor
-	* bytecodes.h (BYTECODE_MAJOR_VERSION, BYTECODE_MINOR_VERSION):
-	macros defining the current byte code version
-
-Mon Nov 17 19:02:44 1997  John Harper  <john dcs warwick ac uk>
-
-	* undo.c (undo_end_of_command): this new function replaces
-	both undo_distinct() and undo_new_group(). Instead of trying
-	to be clever when adding group separators, simply add one
-	after _every_ event is processed. Also, separators are added to
-	_every_ buffer whose last undo item is not already a separator.
-	(cmd_undo): new optional arg controlling the number of
-	commands that are undone; when called interactively this is
-	taken from the prefix arg.
-
-	* commands.c (cmd_call_command): removed calls to
-	undo_distinct().
-	* x11_eventloop.c, amiga_eventloop.c: removed all calls to
-	undo_distinct(), replaced by two strategically placed calls to
-	undo_end_of_command().
-	* keys.c (usekey): removed calls to undo_distinct(). To ensure
-	that successive self-bound key insertions are merged in the
-	undo list, any leading group-separator after a previous
-	insertion command is removed before inserting the text (and
-	then replaced at the head of the undo list afterwards).
-
-	* views.c (cmd_translate_pos_to_view): adds vw_StartCol into
-	the column of the result
-
-Sun Nov 16 01:22:06 1997  John Harper  <john dcs warwick ac uk>
-
-	* movement.c (cmd_raw_mouse_pos): new function giving the
-	glyph position of the mouse relative to the origin of the
-	current window
-
-	* views.c (cmd_find_view_by_pos): new function to find the
-	view in a window specified by a window-relative position
-	(cmd_translate_pos_to_view): new function to make a
-	buffer-relative glyph position from a window-relative glyph
-	position and a view
-
-	* x11_eventloop.c, x11_windows.c (handle_event,
-	sys_get_mouse_pos): try not to query the server for the
-	pointer position---when possible grab it from the last event.
-
-	* glyphs.c (char_col): try to handle columns past the end of
-	a line without crashing
-
-Fri Nov 14 12:44:01 1997  John Harper  <john dcs warwick ac uk>
-
-	* io.c (read_tx): Now uses a predictive method of allocating the
-	array of line headers whilst loading files. The average number of
-	chars-per-line in the last file loaded is used to predict the
-	number of lines in the current file. If this prediction is wrong
-	the chars-per-line of the loaded portion of the new file is used
-	to refine the predicted number of lines.
-
-	* unix_misc.c, amiga_misc.c (sys_file_length): new function to
-	return the size, in bytes, of a named file, or -1 if the size
-	is unknown. Currently the Amiga implementation is totally
-	untested.
-
-	* edit.c (clear_line_list, kill_line_list, resize_line_list): the
- 	tx_Line array of line headers now includes "slack", i.e. unused
- 	entries at the end of the array. Currently a maximum of 32 extra
-	entries, allocated as +/- 16. This makes line insertion/deletion
-	faster, as well as possibly reducing memory fragmentation.
-	* edit.h (TX): added tx_TotalLines field to allow unused entries
-	at the end of the tx_Lines array
-
-Fri Nov  7 09:52:30 1997  John Harper  <john dcs warwick ac uk>
-
-	* render.c (draw_bit, draw_line, draw_block_line, draw_line,
-	draw_line_part, draw_line_glyph_length): miscellaneous fixes,
-	mostly to help fix block rendering
-	
-	* edit.h (TX): new variables tx_LastLogicalStart and
-	tx_LastLogicalEnd; the restriction at the last refresh.
-	* refresh.c: now uses tx_LastLogical{Start,End} to see if the
-	restriction has changed, if so just redraw everything
-	* buffers.c (cmd_restrict_buffer): don't set TXFF_REFRESH_ALL
-	anymore, it's covered by the variables described above
-	* housekeeping.c: the position updating functions also update
-	tx_LastLogical{Start,End}
-
-Mon Nov  3 01:27:49 1997  John Harper  <john dcs warwick ac uk>
-
-	* refresh.c (refresh_block, refresh_view,
-	sub_intersect_regions, sub_regions): _much_ better handling of
-	block refresh--now only the stuff that needs to be redrawn
-	actually is! The sub_* functions implement two set/logical
-	operations on pairs of regions
-
-	* render.c (redraw_region): better clipping of region
-
-	* views.c (cmd_set_rect_blocks): sets the VWFF_FORCE_REFRESH
-	flag; this should really be done properly
-
-	* edit.c (set_block_refresh): just sets VWFF_REFRESH_BLOCK
-
-	* edit.h (VW): new fields vw_LastBlockS, vw_LastBlockE,
-	vw_LastBlockStatus.
-
-	* housekeeping.c: updates the two new fields in the VW
-	structure.
-
-Thu Oct 30 13:16:45 1997  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (run_process): some fixes made to the
-	synchronous parent code; shouldn't hang anymore (?) and now does
-	time outs to look for user interruptions
-
-Tue Oct 28 17:07:53 1997  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c: Hopefully fixed the long-running "process
-	exited but no eof" debacle; everything should work now (famous
-	last words). Also separates the stdout and stderr streams when
-	using pipes; the process-error-stream and set-process-error-stream
-	functions control where the output actually goes. By default it's
-	set to the same value as the output-stream
-	(run_process): when using a pty initialise some of the more basic
-	control codes to sensible values
-
-	* x11_eventloop.c (event_loop): now calls proc_notification()
-	_after_ going through the input fd's and handling the idle
-	stuff
-
-Tue Oct  7 13:12:03 1997  John Harper  <john dcs warwick ac uk>
-
-	* movement.c (cmd_center_display): renamed from
-	centre-display. Now takes a second optional argument
-	controlling where in the display to put the line under the
-	cursor. Taken from the prefix-arg when interactive.
-
-Thu Oct  2 18:32:17 1997  John Harper  <john dcs warwick ac uk>
-
-	* unix_processes.c (proc_on_idle): new function called when the
-	editor is idle; it acts as a safety net for processes that have
-	exited but haven't given an EOF over the connection. Any such
-	processes are marked as truly dead
-	* x11_eventloop.c (event_loop): calls proc_on_idle()
-
-Wed Oct  1 21:00:17 1997  John Harper  <john dcs warwick ac uk>
-
-	* render.c (redraw_lines_clr): check arguments against
-	tx_Logical{Start,End} more rigorously.
-
-Sun Sep 28 22:03:43 1997  John Harper  <john dcs warwick ac uk>
-
-	* housekeeping.c (adjust_marks_join_y): fixed a really bad bug
-	that must have existed for _years_. If the position being updated
-	was past the two lines being joined it wasn't adjusted
-
-Sat Sep 27 11:34:13 1997  John Harper  <john dcs warwick ac uk>
-
-	* lisp.c (sym_print_escape_newlines, sym_print_level,
-	sym_print_length): variables controlling how lists and strings
-	are printed
-
-	* housekeeping.c (adjust_marks_add_y, adjust_marks_sub_y,
-	adjust_marks_split_y, adjust_marks_join_y): these now update
-	vw_LastDisplayOrigin iff they update vw_DisplayOrigin. This
-	stops the refresh code scrolling erroneously
-
-	* x11_render.c (redraw_exposed_area): recognises when expose
-	events hit status lines correctly now
-
-Thu Sep 25 09:48:57 1997  John Harper  <john dcs warwick ac uk>
-
-	* unix_misc.c (same_files): tries to compare files that don't
- 	actually exist
-	(cmd_file_absolute_p): new function
-
-	* amiga_misc.c (cmd_file_name_absolute_p): new function
-
-	* unix_defs.h, amiga_defs.h: Define SITE_LISP_DIR
-
-	* lispcmds.c (sym_load_path): added site-lisp directory
-
-	* revision.h: Now protected by #ifndef stuff
-
-	* Makefile.in: Added revision.h to HDRS
-
-	* jade.h: Include revision.h
-
-Wed Sep 24 11:11:49 1997  John Harper  <john dcs warwick ac uk>
-
-	* misc.c (cmd_file_name_equal):	new function, called file-name=,
-	that tests whether two filenames actually refer to the same
-	file.
-
-	* x11_eventloop.c (x11_last_event_time): variable containing the
-	timestamp from the last X11 event (that has a timestamp).
-
-	* x11_misc.c: Now each selection info has the timestamp of when
-	the selection was created. x11_lose_selection() ignores events
-	with times less than or equal to this time
-
-	* x11_misc.c (cmd_x11_own_selection_p): returns t when Jade has
- 	the selection
-	(x11_window_lose_selections): lose anything owned by a particular
-	window
-	(x11_set_selection): can now set a string as the current selection
-
-	* x11_windows.c (sys_kill_window): calls
-	x11_window_lose_selections()
-
-Tue Sep 23 10:55:03 1997  John Harper  (john dcs warwick ac uk)
-
-	* views.c (update_status_buffer): all line numbers/counts now
-	take note of the current restriction. Also the buffer position
-	is displayed in "all/top/bottom/percentage" style
-
-	* refresh.c (refresh_view): call resync_xy() before redrawing
-	the status line, not after.
-
-	* unix_server.c, amiga_server.c: (server-reply): compare files
-	with same_file() not just comparing their names (which doesn't
-	always work)
-
-Mon Sep 22 17:53:50 1997  John Harper  (john gem dcs warwick ac uk)
-
-	* editcommands.c (delete-area): given it an interactive spec 
-	(the current block)
-
-	* buffers.c (restrict_buffer): made the interactive spec clear
-	the block
-
-	* keys.c, keys.h: new handling of meta modifier. Now defined as a
- 	variable in keys.c. This allows meta to change from system to
- 	system.
-
-	* x11_keys.c, amiga_keys.c (sys_find_meta): new function
-	to return the meta modifier mask for the current system. Also some
-	work to decode and encode meta modifiers
-
-Mon Sep 22 00:03:08 1997  John Harper  (john orcrist)
-
-	* lispmach.c: (slightly) better error reporting for when
-	arguments aren't of the required type for inlined functions
-
-	* views.c, windows.c, buffers.c (cmd_with_view,
-	cmd_with_window, cmd_with_buffer): these now signal an error
-	if the first argument isn't of the required type
-
-	* lispcmds.c (cmd_unwind_protect): don't lose errors occuring
-	in the cleanup-forms anymore
-
-Sun Sep 21 14:42:19 1997  John Harper  (john orcrist)
-
-	* views.c (cmd_destroy_view): don't let minibuffer views be
-	killed anymore
-
-Sat Sep 20 00:20:29 1997  John Harper  (john orcrist)
-
-	* unix_processes.c (cmd_call_process_area): new function to
-	call a process with a portion of the current buffer as its
-	input.
-
-	* misc.c (cmd_tmp_file_name): now uses its own buffer
-
-	* io.c (cmd_write_buffer_area): fixed bug which could cause an
-	attempt to write -1 (i.e. MAXUINT) bytes. Also added an
-	interactive spec so it can be called as a command
-
-	* unix_processes.c (cmd_run_process): renamed as call-process
-
-	* unix_misc.c, amiga_misc.c (cmd_file_size): new function that
-	return the size of a specified file. The Amiga version is totally
-	untested and probably wrong
-
-	* io.c (cmd_write_buffer, cmd_write_buffer_area): both functions
-	now accept streams for output, as well as the original file name
-	interface
-
-	* lisp.h (VIEWP): now checks if vw_Win pointer is non-null;
-	this happens when the view has been destroyed but is still in
-	scope.
-
-	* views.c (view_prin): prints "#<dead-view>" for views that
-	have been destroyed
-
-Fri Sep 19 00:48:20 1997  John Harper  <john dcs warwick ac uk>
-
-	* find.c (buffer_strpbrk, buffer_reverse_strpbrk, buffer_strchr,
-	buffer_reverse_strchr, buffer_compare_n, forward_char,
-	backward_char): new buffer utility functions. Used mainly by the
-	new regexp matcher
-
-	* find.c: Most of the lisp functions have been rewritten to use
-	the new regexp matcher. All functions now allow matches across
-	line boundaries (including string and char variants)
-	find-{next,prev}-string both set the match-start and match-end
-	variables.
-
-	* editcommands.c (sym_flatten_table): variable containing a
- 	translation table that converts newlines to spaces
-
-Thu Sep 18 21:06:05 1997  John Harper  <john dcs warwick ac uk>
-
-	* movement.c (prev_char, delete_char): deleted these functions,
-	they're replaced by forward_char and backward_char in find.c
-
-	* edit.c (delete_section): doesn't trash the `startPos' and
-	`endPos' parameters anymore
-
-Sun Sep 14 19:39:50 1997  John Harper  (john orcrist)
-
-	* views.c (cmd_view_dimensions, cmd_set_view_dimensions):
-	commands for reading and manipulating the size of a view
-	(set_scroll_steps): checks that the scroll step isn't greater
-	than the width/height of the view
-
-	* windows.c (cmd_window_dimensions): returns the glyph
-	dimensions of a window
-
-	* movement.c (cmd_mouse_pos): now adds in vw_StartCol
-
-Sat Sep 13 11:55:23 1997  John Harper  (john orcrist)
-
-	* edit.c (check_pos, check_line, check_section): when these
-	functions return FALSE they also signal an error. Also
-	check_pos() now returns FALSE (not void), when the line is out
-	of range
-
-	* find.c, movement.c, editcommands.c: now check the return
-	value of check_pos()
-
-	* lisp.c (sym_invalid_pos): new error symbol
-
-	* buffers.c (cmd_restrict_buffer): now calls
-	cmd_unrestrict_buffer() before checking the validity of the
-	specified section. Otherwise anything outside the current
-	restriction will be rejected.
-
-Mon Sep  8 00:24:47 1997  John Harper  (john orcrist)
-
-	* unix_misc.c (cmd_system_name): try harder to get a fully
-	qualified host name (with domain information)
-
-Sun Sep  7 00:05:37 1997  John Harper  (john orcrist)
-
-	* views.c (update_status_buffer): surrounds the cursor
-	position with square brackets when a restriction is in effect
-
-	* streams.c: all streams using buffers take note of any
-	restriction to that buffer
-
-	* io.c (read_buffer): clears any restriction before reading
-	(write_buffer): option to only write restricted text
-
-	* edit.c (check_pos, check_line, check_section): region being
-	validated must be inside any restriction
-
-	* movement.c, editcommands.c, find.c: restrict parts of the
-	buffer that may be used to the restriction (if it exists)
-
-	* buffers.c (cmd_in_restriction_p): new function; a predicate
-	on whether a position is in the restricted part of a buffer
-
-	* buffers.c (cmd_restriction_end): now does what it is
-	documented as doing, returns the last character of the line
-	before tx_LogicalEnd
-
-	* movement.c (cmd_buffer_end): when I-R-P is null just return
-	the value of restriction-end
-
-Sat Sep  6 13:34:55 1997  John Harper  (john orcrist)
-
-	* housekeeping.c (adjust_marks_add_y): doesn't shift
-	tx_LogicalStart if it equals the insertion line
-
-	* buffers.c (cmd_restrict_buffer, cmd_unrestrict_buffer,
-	cmd_restriction_start, cmd_restriction_end): new functions to
-	work with tx_LogicalStart and tx_LogicalEnd
-
-	* edit.h (TX): added tx_LogicalStart and tx_LogicalEnd fields;
-	the line numbers of the first and last+1 lines that may be
-	displayed in the buffer
-
-	* movement.c (cmd_buffer_end, cmd_buffer_start): extra
-	argument IGNORE-RESTRICTION-P
-	(cmd_centre_display, cmd_goto_buffer_end,
-	cmd_goto_buffer_start, cmd_goto_next_line, cmd_goto_prev_line,
-	move_down_screens, move_up_screens): modified to work with
-	buffer restrictions
-
-	* housekeeping.c (adjust_marks_add_y, adjust_marks_sub_y,
-	adjust_marks_split_y, adjust_marks_join_y, resync_y): modified
-	to work with buffer restrictions
-
-	* io.c (read_tx): sets the buffer restriction to the entire
-	file initially.
-
-	* edit.c (clear_line_list): initialises restriction
-
-	* render.c: ensure that nothing outside the restriction is
-	rendered.
-
-	* All files are now under RCS control, not before time
-
-Fri Sep  5 20:06:32 1997  John Harper  (john orcrist)
-
-	* view.c (update_status_buffer): fixed display "line" or 
-	"lines" depending on the number of lines in the buffer
-
-Thu Sep  4 00:11:59 1997  John Harper  (john orcrist)
-
-	* command.c (sym_pre_command_hook, sym_post_command_hook,
-	cmd_call_command): these two hooks bracket the evaluation of
-	each command. pre-command-hook is given the command to be
-	called as its sole arg.
-
-	* keys.c (usekey): calls pre-command-hook and
-	post-command-hook around insertion of unbound keys.
-
-Wed Sep  3 20:41:19 1997  John Harper  (john orcrist)
-
-	* render.c (redraw_status_buffer): when VWFF_CUSTOM_STATUS is
-	set draw the status line in the highlight colour to make it
-	stand out.
-
-	* lispmach.c, bytecodes.h: renamed quite a few opcodes. Also
-	changed the op-setq and op-set (previously op-vsetc and
-	op-vset) instructions to the set value on the stack.
-
-Wed Sep  3 15:53:37 1997  John Harper  (john gem)
-
-	* stringmem.c, stringmem.h: some general cleaning up of the
-	code. Only notable change is that when STRMEM_STATS is defined
-	it now prints the statistics when sm_kill() is invoked.
-
-	* revision.h: bumped version to 4.0 alpha
-
-Tue Sep  2 23:38:39 1997  John Harper  (john orcrist)
-
-	* bytecodes.h: new header file defining all bytecodes in
-	lispmach.c
-
-	* lispmach.c (unbind_one_level): new function that handles
-	undoing the first element in the `bindstack'. It can handle
-	symbol bindings, unwind-protect forms, and binding to buffers,
-	views and windows. OP_UNWIND calls this function.
-	(OP_BIND_BUFFER, OP_BIND_VIEW, OP_BIND_WINDOW): these opcodes
-	replace the OP_SWAP_X opcodes. They install their sole
-	argument (on the stack) (a buffer, view or window) and add an
-	entry to the bindstack to let it be unwound later.
-	(OP_UN_UNWIND_PRO): removed, OP_UNWIND does this now.
-
-Mon Sep  1 21:52:48 1997  John Harper  (john orcrist)
-
-	* lisp.c (max_lisp_depth): doubled to 500, the compiler was
-	catching the limit sometimes
-
-	* lispcommands.c (cmd_if, cmd_when, cmd_unless): removed;
-	these are now defined as macros in lisp.jl
-
-	* view.c (update_views_dimensions): won't abort if vertical
-	size is still the same but horizontal has changed
-
-Sun Aug 31 11:12:09 1997  John Harper  (john orcrist)
-
-	* Makefile.in: removed *commandline.c; added views.c
-
-	* amiga_commandline.c, commandline.c, x11_commandline.c:
-	banished to the obsolete directory (not before time)
-
-	* buffers.c (first_buffer): creates the buffer before the
-	window, this lets make-view find at least one buffer in
-	existence.
-
-	(get_tx_cursor): now checks active-view, other views in the
-	same window, then views in other windows.
-
-	(cmd_current_buffer, cmd_set_current_buffer): now operate on
-	views not windows
-
-	(cmd_set_buffer_file_name, cmd_set_buffer_name,
-	cmd_set_buffer_modified, cmd_set_buffer_special,
-	cmd_set_buffer_read_only, var_mode_name, var_minor_mode_names):
-	all set the flag TXFF_REFRESH_STATUS to show that any status
-	lines reflecting this buffer may need updating.
-
-	(cmd_with_buffer): saves the current view so that the reset
-	stage works when the active view changes. I don't think this
-	works in the compiled version properly..
-
-	* configs/: all config-*.h files now have an extra Makefile
-	entry, EXTRA_LIBS
-
-	* edit.c (resize_line_list): uses memset() not bzero()
-
-	* edit.h (TX): new flag TXFF_REFRESH_STATUS -- reflects when a
-	view displaying the buffer needs to refresh its status display
-
-	(VW): now represents a single view in a window, as such all
-	window system data has been removed. Has a `vw_NextView' field
-	pointing to the view beneath it in the window. `vw_MaxY' and 
-	`vw_MaxX' refer to the size of the view.
-	The flags VWFF_SLEEPING and VWFF_MESSAGE have been removed;
-	new flags VWFF_MINIBUF and VWFF_CUSTOM_STATUS have been added.
-
-	(WIN): new structure representing a physical window (what
-	Emacs would call a frame). Most things are those that were
-	removed from the VW. `w_ViewList' points to the top view in
-	the window, `w_CurrVW' to the current view, and `w_MiniBuf' to
-	the minibuffer view.
-
-	(MINIBUFFER_ACTIVE_P(win)): macro to check if a window's
-	minibuffer view is in use.
-
-	* editcommands.c (sym_block_status_hook): hook called when the
-	current view's block status changes; one argument the block
-	status.
-
-	* editrect.c (cmd_insert_rect): tries to return the position
-	following the insertion; not so useful as it doesn't lead to
-	the size of the rectangle.
-
-	* lisp.c (sym_window_error): new error type
-
-	* lisp.h (V_View, VVIEW, VIEWP): define the view type
-
-	* lispmach.c (OP_VIEWP, OP_SWAP_VIEW, OP_CURRENT_VIEW,
-	OP_SWAP2): new opcodes. swap-buffer has changed incompatibly!,
-	but probably still won't work in case of errors
-
-	* movement.c (cmd_centre_display, cmd_mouse_pos): work
-	relative to the current view now, not the window.
-
-	* refresh.c (refresh_window) renamed as `refresh_view' and
-	made to work on a per-view basis. A new function `
-	refresh_window' has been added that cycles through each view
-	in a window refreshing each in turn.
-	(vert_scroll): calls portable scroll_vw() not sys_scroll_vw()
-	(refresh_message): function to redraw a window's message if
-	necessary.
-
-	* render.c: all functions work relative to the view now, in
-	fact they assume the view is at position (0,0) and let the
-	window-system macros (i.e. MOVE, DRAW, etc...) work out where
-	the view actually is.  It is also assumed that four pens exist
-	now: P_TEXT, P_TEXT_RV, P_BLOCK, and P_BLOCK_RV.
-	(redraw_cmd_line, redraw_cmd_line_from, cmd_line_cursor):
-	deleted.
-	(draw_message_line, redraw_message, redraw_status_buffer):
-	added.
-	(scroll_vw): portable version of sys_scroll_vw(), uses
-	CLR_AREA and COPY_AREA macros
-
-	* streams.c: writing to the message line works on the current
-	window, not the current view
-
-	* unix_misc.c: used ENVIRON_UNDEFINED, not ENVIRON_UNDECLARED,
-	doh!
-
-	* unix_processes.c: include <signal.h> not <sys/signal.h>,
-	also includes <stdio.h> and <fcntl.h>
-
-	* values.c (ValueClasses): entries for V_View
-	(mark_value): changed V_Window and V_View actions
-	(cmd_garbage_collect): added view_sweep() to list of sweep
-	functions.
-
-	* views.c: new file providing view functions
-	(view_chain, curr_vw): list of all views, and current view
-	(make-view-hook, destroy-view-hook): what they say
-	(cmd_make_view, cmd_destroy_view): also what they say
-	(update_view_dimension): recalibrates the view dimensions of a
-	window after the window size has changed
-	(update_status_buffer): reformats the status line
-	(cmd_next_view, cmd_previous_view): for traversing views
-	(cmd_with_view): similar to `with-window'
-	(cmd_minibuffer_view, cmd_minibuffer_view_p,
-	cmd_minibuffer_active_p): new functions
-	(cmd_set_status_message): allows the hijacking of the status
-	line.
-
-	* windows.c: many things changed to use `WIN *' instead of 
-	`VW *', some functions moved to the new file views.c
-	(win_chain, curr_win): replace `view_chain' and `curr_vw'
-	(copy_prefs): renamed `copy_win_prefs'
-	(cmd_make_window): creates two views by default, a main view
-	with everything but the one row taken by the minibuffer view
-
-	* x11_display.c: includes <signal.h> not <sys/signal.h>
-	(x11_high_pixel): pixel colour used to provide P_BLOCK pens
-	(x11_jade_sel): property used to transfer selection's atom
-	(x11_get_options): `-hl' for highlight pixel
-	(handle_event): works in windows not views, now handles
-	MotionNotify, SelectionRequest, and SelectionClear events.
-	(event_loop): in the timeout try to remove messages from
-	minibuffers if the minibuffer is active.
-
-	* x11_keys.c (translate_event): handles MotionNotify events
-	(KeyDescr): remove pounds-sterling sign; it seems that Solaris
-	strcasecmp() only works with 7-bit ASCII?
-
-	* x11_misc.c (x11_convert_selection, x11_lose_selection,
-	cmd_x11_set_selection, cmd_x11_selection_active_p,
-	cmd_x11_get_selection, cmd_x11_lose_selection, sym_xa_primary,
-	sym_xa_secondary, x11_misc_init): selection handling
-
-	* x11_render.c (redraw_exposed_area): new function; given a
-	window and a rectangular region, works out which bits in each
-	view need redrawing, and redraws them.
-	(sys_scroll_vw): deleted
-
-	* x11_windows.c (INPUT_EVENTS): added ButtonMotionMask and
-	PointerMotionHintMask.
-	(sys_sleep_vw, sys_unsleep_vw, sys_set_vw_pos): renamed
-	`sys_sleep_win', `sys_unsleep_win', and 'sys_set_win_pos'
-	(sys_new_window): creates GCs for all four pens
-
-	* x11_windowsys.h (W_WindowSys): new entry ws_GC_array[] which
-	holds all GCs.
-	(P_TEXT, P_TEXT_RV, P_BLOCK, P_BLOCK_RV, P_MAX): defined
-	(MOVE, PEN_X, PEN_Y, CLR_AREA, CLR_RECT, SET_AREA, SET_RECT,
-	COPY_AREA, DRAW_LINE): all coordinates are relative to the
-	specified view. SET_{RECT,AREA} now take a PEN argument
-	defining the GC to use.
-
-Thu Jul 13 11:56:35 1995  John Harper  (jsh orcrist)
-
-	* Makefile.in: fixed the _JADE_DIR macro containing a leading
-	space character.
-
-	* unix_defs.h, unix_server.c, unix_client.c (JADE_SOCK_NAME):
-	This is now defined in the unix_defs.h header file to prevent
-	any more embarassing mistakes (changing its definition in only
-	one place)
-
-	* render.c (clear_lines): New function
-
-	* refresh.c (flag_deletion): The tx_ModEnd is set to the end
-	of the deleted text, not the same place as the beginning of
-	the deletion. This fixes the annoying ``delete a block near
-	the end of the buffer'' bug which sometimes occurs. What does
-	it break though? (it probably hits performance..)
-
-Sun May 28 01:11:57 1995  John Harper  (jsh orcrist)
-
-	* jade.h (QUOTE): Macro to stringify its argument
-	* Makefile.in, unix_defs.h (_JADE_DIR, JADE_DIR): Due to rot
-	in cpp the method of passing in JADE_DIR broke. Now it's
-	passed from the command line without quotes. The definitions
-	of LISP_LIB_DIR and DOC_FILE quote it.
-
-Wed Feb 22 20:15:18 1995  John Harper  (jsh orcrist)
-
-	* movement.c (next_char): When POS is past the end of the line
-	move it back to the end.
-
-Thu Jan 12 16:27:23 1995  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_divide, cmd_remainder): Now check for
-	divide-by-zero and signal an error if it will occur.
-
-Wed Jan 11 14:43:33 1995  John Harper  (jsh orcrist)
-
-	* commands.c (interactive_spec): Doesn't assume that lambda
-	expressions are always valid anymore
-
-Sat Dec 24 15:46:52 1994  John Harper  (jsh orcrist)
-
-	* render.c (draw_line_glyph_length, draw_rect): Hopefully
-	fixed the problem of the glyph in the right-most column
-	sometimes being left undrawn.
-
-Sun Nov 13 19:48:55 1994  John Harper  (jsh orcrist)
-
-	* buffers.c (var_auto_save_interval): corrected its doc-string
-
-Sun Oct 30 15:24:16 1994  John Harper  (jsh orcrist)
-
-	* x11_windows.c (sys_new_window): windows are now called `Jade'
-
-Wed Oct 26 17:52:44 1994  John Harper  (jsh orcrist)
-
-	* unix_client.c (JADE_SOCK_NAME): changed to ".Jade_rendezvous";
-	I'd changed this in unix_server.c but not here (oops!)
-
-Sun Oct 23 19:54:24 1994  John Harper  (jsh orcrist)
-
-	* windows.c (save_message, restore_message): Mechanism for
-	temporarily installing a message.
-
-	* values.c (cmd_garbage_collect): Prints a message while
-	gc'ing (again).
-
-	* lisp.c (load_autoload): Temporarily prints a message
-	while loading the file.
-
-	* Makefile.in: moved the definitions of CFLAGS and LDFLAGS to
-	`../Makefile'; hopefully this means the user can override them
-	properly when compiling.
-
-Fri Oct  7 15:12:19 1994  John Harper  (jsh orcrist)
-
-	* Version 3.2 released
-
-Tue Oct  4 00:06:10 1994  John Harper  (jsh orcrist)
-
-	* lisp.h, symbols.c, values.c: new type V_Void. Used to denote
-	a void value in a symbol.
-	
-	* symbols.c (cmd_symbol_value, cmd_symbol_function,
-	cmd_default_value): these now take an extra argument `NO-ERROR'.
-	Unless this is t, when the value is void they signal an error.
-
-	* symbols.c: rewrote buffer-local variables to be compatible
-	 with Emacs. Removed `set-buffer-variable' and
-	`buffer-variable-p', renamed `delete-buffer-variables' to
-	`kill-all-local-variables' and created the new functions,
-	`make-local-variable', `make-variable-buffer-local' and
-	`kill-local-variable'.
-	(cmd_set): SF_BUFFER_LOCAL only means that a variable may
-	have a local value; not that one should be created (see next
-	entry)
-
-	* lisp.h (SF_SET_BUFFER_LOCAL): new flag, means that setting
-	this symbol gives it a buffer-local binding
-
-Mon Oct  3 17:53:07 1994  John Harper  (jsh orcrist)
-
-	* io.c (read_tx): no longer scans for code section
-	* buffers.c (eval_file_code): removed
-	* editrect.c (col_copy_sect): removed
-
-	* housekeeping.c (set-start-line): this was doing it's own
-	rendering; a bad thing all in all
-
-	* Most module's _kill function didn't set that module's private
-	chain of objects to NULL. In particular the Amiga menus were
-	stepping through the de-allocated view_chain and guruing...
-
-Sat Oct  1 14:48:49 1994  John Harper  (jsh orcrist)
-
-	* amiga_keys.c (lookup_event_name): doesn't pass any qualifiers
-	to MapRawKey() anymore
-
-	* commands.c (cmd_call_command): the `N' code-letter was screwed
-
-	* main.c, x11_display.c, amiga_display.c: startup modified so
-	that the sys_init() function calls a new function inner_main()
-	which does most of what main() used to do. This allows the Amiga
-	version of sys_init() to play with the stack
-
-	* amiga_display.c (sys_init): now contains code to allocate a
-	larger stack if the `-stack' argument is given.
-
-	* unix_processes.c (run_process): when using pipes stderr is also
-	connected up
-
-Thu Sep 29 15:33:23 1994  John Harper  (jsh orcrist)
-
-	* unix_processes.c (cmd_signal_process, cmd_interrupt_process,
-	cmd_kill_process, cmd_stop_process, cmd_continue_process): All
-	have a new argument, SIGNAL-GROUP, which makes them signal the
-	whole process group.
-
-Mon Sep 26 21:13:32 1994  John Harper  (jsh orcrist)
-
-	* unix_processes.c (cmd_make_process): default value of the
-	connection-type component is now `pipe'
-
-Tue Sep 20 14:22:22 1994  John Harper  (jsh orcrist)
-
-	* refresh.c (refresh_world_curs): no longer makes an ill-judged
-	guess as to whether a window should be refreshed or not; sometimes
-	it got it wrong :-(
-
-	* keys.c (var_next_keymap_path): now passes the prefix-arg through
-	the chain of multi-key bindings
-
-	* x11_keys.c, amiga_keys.c (lookup_event): doesn't look for backslash
-	characters anymore, also a `-' character as the first character in
-	a token won't terminate the token.
-
-Sun Sep 18 15:37:00 1994  John Harper  (jsh orcrist)
-
-	* misc.c (cmd_file_concat): renamed as `file-name-concat'
-
-Wed Sep 14 15:08:52 1994  John Harper  (jsh orcrist)
-
-	* misc.c (cmd_path_name, cmd_base_name): renamed as `file-name-
-	directory' and `file-name-nondirectory' respectively
-
-	* symbols.c (bind_symbol, unbind_symbols): uses the `set-default'
-	and `default-value' functions to bind variables
-	(cmd_set_default, cmd_default_value): now checks for a V_Var type
-	of object
-
-Tue Sep 13 15:10:56 1994  John Harper  (jsh orcrist)
-
-	* unix_misc.c, amiga_misc.c (cmd_setenv): new function
-
-	* housekeeping.c (resync_y): checks for a blank area at the
-	bottom of the display; if one exists it's removed
-
-Fri Sep  9 14:59:16 1994  John Harper  (jsh orcrist)
-
-	* render.c (cut_paste_lines): when deleting lines, and the stuff
-	which couldn't be blitted is only partly in the buffer, the rest is
-	cleared.
-	(cut_paste_lines): doesn't check if `srcLine' is greater than
-	the last line displayed anymore; this is perfectly valid
-
-Tue Sep  6 14:47:48 1994  John Harper  (jsh orcrist)
-
-	* housekeeping.c (resync_y): when the cursor goes totally out
-	of the display its put back at the center of the screen.
-
-	* unix_server.c, amiga_server.c (cmd_server_open, cmd_server_close):
-	these can now be called interactively
-
-Sat Sep  3 15:50:18 1994  John Harper  (jsh orcrist)
-
-	* find.c (replaceit): now expands the replacement before deleting
-	the original text; a much better idea (i.e. it works)
-
-Thu Sep  1 14:17:57 1994  John Harper  (jsh orcrist)
-
-	* commands.c (cmd_interactive): now a special form
-
-Wed Aug 31 20:28:06 1994  John Harper  (jsh orcrist)
-
-	* x11_eventloop.c, amiga_eventloop.c: the hook `close-gadget-hook'
-	has been renamed to `window-closed-hook'.
-
-Tue Aug 30 11:47:17 1994  John Harper  (jsh orcrist)
-
-	* keys.c (cmd_bind_keys, cmd_unbind_keys): the KEY-DESCRIPTION
-	may now be an event
-
-	* keys.h: redefined the EV_TYPE and EV_MOD defines so that
-	most events will fit this field into 8 bits, and hence will
-	use the pre-allocated static integers to save memory.
-
-Mon Aug 29 12:47:47 1994  John Harper  (jsh orcrist)
-
-	* glyphs.c (cmd_set_glyph): when a glyph-string of "" is
-	set the first glyph is set to ' '
-	(cmd_glyph_to_char_pos): POS isn't optional anymore
-
-	* buffers.c (mark_prin): doesn't add one to the marks line and
-	column before printing them anymore. Also resident marks have
-	their buffer printed not their name
-	(cmd_set_mark): setting the name of the file should work now
-
-Tue Aug 23 13:11:34 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_bit_not, cmd_bit_or, cmd_bit_and): renamed
-	as `lognot', `logior' and `logand' respectively.
-
-	* lispcmds.c (cmd_logxor): new function
-	* lispmach.c (OP_LOGXOR_2): new opcode
-
-Thu Aug 18 16:20:48 1994  John Harper  (jsh orcrist)
-
-	* streams.c (cmd_make_string_input_stream,
-	cmd_make_string_output_stream, cmd_get_output_stream_string,
-	cmd_streamp): new functions
-	(cmd_file_p): renamed as `filep'
-
-Wed Aug 17 14:30:17 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_defvar, cmd_defconst): the default value of
-	buffer-local variables is set, not the local value
-	(cmd_list): now conses up a *new* list, doesn't use its arg list;
-	this could be risky
-	(cmd_apply): now signals an error if its last argument is not
-	a list
-
-Tue Aug 16 19:32:02 1994  John Harper  (jsh orcrist)
-
-	* symbols.c (cmd_default_boundp, cmd_set_default): new functions
-
-Sun Aug 14 19:45:52 1994  John Harper  (jsh orcrist)
-
-	* symbols.c: obarrays no longer use NULL to terminate a bucket: any
-	non-symbol object can be used instead. This means that having a
-	NULL sym_Next can signify that a symbol is not interned, making
-	the SF_INTERNED flag obsolete -- it's been removed.
-
-	* symbols.c (var_obarray): new variable -- provides access
-	to the default obarray
-
-Sat Aug 13 12:40:00 1994  John Harper  (jsh orcrist)
-
-	* glyphs.c (cmd_glyph_table_p): new function
-
-	* lispcmds.c (cmd_reverse): this was totally screwed
-	(cmd_aref, cmd_aset): changed documentation
-	(cmd_arrayp, cmd_elt): new functions
-
-	* editcmds.c (cmd_alpha_char_p, cmd_upper_case_p, cmd_lower_case_p,
-	cmd_digit_char_p, cmd_alphanumericp, cmd_space_char_p): these now
-	accept non-integer arguments -- they just return nil for them.
-
-Fri Aug 12 14:09:06 1994  John Harper  (jsh orcrist)
-
-	* x11_display.c (x11_text_cursor): cursor to use in all windows
-	* x11_windows.c (sys_new_window): sets the window's cursor
-
-Thu Aug 11 20:13:10 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_mod): this was actually a remainder function
-	not modulo; it's renamed to `%'
-	(cmd_lsh): this was actually an arithmetic shift, new function
-	`ash' to do this and lsh is fixed
-	(cmd_integerp): new function
-
-Sun Jul 17 13:46:40 1994  John Harper  (jsh orcrist)
-
-	* movement.c (cmd_next_char, cmd_goto_next_char, cmd_prev_char,
-	cmd_goto_prev_char): now take a COUNT argument: the number
-	of characters to move. The new args to next-char and prev-char
-	are incompatible with the old ones :-(
-
-Fri Jul 15 15:01:20 1994  John Harper  (jsh orcrist)
-
-	* lisp.c (lisp_init): int_cell is now (user-interrupt)
-	not (error user-interrupt). This means that interrupts are no
-	longer errors and therefore are unable to be caught by error-pro.
-	* x11_eventloop.c, amiga_eventloop.c (event_loop): checks for
-	explicitly for user-interrupt
-
-Thu Jul 14 15:54:10 1994  John Harper  (jsh orcrist)
-
-	* unix_server.c (server_accept_connection): the connection fd is
-	marked to be discarded on exec()
-	(server_kill): closes the open connections now
-
-Wed Jul 13 18:20:03 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_eql): new function
-	* lispmach.c (cmd_lisp_code2): added OP_EQL
-
-Tue Jul 12 13:05:08 1994  John Harper  (jsh orcrist)
-
-	* amiga_menus.c (cmd_set_menu): the action of the menu is a command
-	not a list of forms
-
-	* undo.c (undo_trim): when an undo is in progress tries to
-	truncate the oldest of the three undo-lists
-
-	* lispmach.c (CALL_1, CALL_2, CALL_3): macros containing the code
-	to call a function for an instruction. Lots more opcodes have
-	been added.	
-
-Mon Jul 11 11:53:56 1994  John Harper  (jsh orcrist)
-
-	* edit.c (pad_pos): now adds the insertion to the buffer's undo-list
-
-	* undo.c: doesn't use prefix counts to group items anymore. Instead
-	a marker (`nil') is placed between each group. This lets me make
-	each command a separate undo-group; also undo through several
-	recursive edits works properly.
-
-	* commands.c (var_last_command): no longer checks if VAL is nil
-
-Sun Jul 10 20:06:15 1994  John Harper  (jsh orcrist)
-
-	* keys.c (print_event_prefix): now prints the whole sequence
-	each time.
-	(event_buf, event_index): records all events in the current
-	sequence.
-	(cmd_current_key_string): renamed to `current-event-string'
-
-Thu Jul  7 15:05:40 1994  John Harper  (jsh orcrist)
-
-	* commands.c: New file; stuff for interactive function calling
-
-	* streams.c (stream_puts, stream_putc): When writing to a string
-	an extra byte is allocated to hold the zero terminator
-	(cmd_format): writes each chunk of characters between format
-	specifiers as one string instead of individually
-
-Wed Jul  6 19:32:31 1994  John Harper  (jsh orcrist)
-
-	* streams.c (cmd_format): with a STREAM of nil a string is
-	constructed.
-
-	* edit.h, symbols.c, windows.c: Window-local Lisp variables are
-	no longer supported; they were only used for one variable, the
-	`buffer-list'. This variable is now an entry in the VW structure.
-
-	* lispcmds.c (cmd_aset): doesn't modify V_StaticString's
-
-	* editcommands.c (cmd_translate_string): checks for read-only
-	strings
-
-	* lisp.h (STRING_WRITEABLE_P): macro to check if a Lisp string
-	may be modified.
-
-Sun Jul  3 15:08:17 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_defconst): an error is signalled if the symbol
-	is already bound.
-
-	* refresh.c (refresh_window): when a deletion is recognised the line
-	it occurs is *always* redrawn from the first char deleted.
-
-	* misc.c (cmd_expand_file_name): new arg, QUALIFY-FULLY. When t
-	this says to get an absolute name.
-	* amiga_misc.c, unix_misc.c (sys_fully_qualify_file_name): new
-	function for the above Lisp function.
-
-	* movement.c: (cmd_file_start, cmd_file_end, cmd_goto_file_start,
-	cmd_goto_file_end): renamed, ``file'' replaced by ``buffer''
-
-	* buffers.c (cmd_file_length): now called `buffer-length'
-	(cmd_file_name): now called `buffer-file-name'
-	(cmd_set_file_name): now called `set-buffer-file-name'
-
-Fri Jul  1 10:51:45 1994  John Harper  (jsh orcrist)
-
-	* refresh.c (flag_deletion): tx_ModEnd is set to the start of the
-	deletion not the end
-	(refresh_window): when (tx_ModDelta < 0) (i.e. a deletion) the
-	cut & paste operation is a bit different now (hopefully this way
-	works!?)
-
-	* render.c (redraw_region): returns immediately when (START == END)
-
-	* editcommands.c (sym_inhibit_read_only): new variable
-	* edit.c (read_only): takes note of `inhibit-read-only' when it's
-	bound and non-nil.
-
-Wed Jun 29 16:48:46 1994  John Harper  (jsh orcrist)
-
-	* Major alterations to all files; I've tried to impose
-	a sensible naming style onto all symbols. All global
-	symbols have a prefix. This is either null for files
-	common to all configurations, `x11_' for stuff accessed
-	only by the X files, likewise for `unix_' and `ami_'.
-	The `sys_' prefix is for things which are accessed from
-	the common area but exists in one of the non-common
-	files.
-
-Tue Jun 28 14:42:30 1994  John Harper  (jsh orcrist)
-
-	* amiga_windows.c (newwindow): calculates for the status line
-	when opening the window
-
-	* amiga_display.c (initwinsys): uses onbreak() to hijack
-	^C signals caught by stdio
-	* configs/config.h.amiga (HAVE_ONBREAK): new macro for above
-
-Sun Jun 26 16:26:43 1994  John Harper  (jsh orcrist)
-
-	* x11_windowsys.h, amiga_windowsys.h (DRAW_LINE): new macro,
-	draws a 1-pixel wide line
-	* render.c, x11_render.c, amiga_render.c, x11_windows.c,
-	amiga_windows.c: all stuff to do with the status/message line
-	is made system-independant. This means that messages on the
-	Amiga now use the bottom line of the window as in X
-
-	* amiga_eventloop.c (eventloop): in idle timeout calls
-	print_event_prefix() and also refreshes the display if
-	necessary.
-
-	* amiga_keys.c (lookup_event_name): uses MapRawKey() to
-	decipher unknown keycodes.
-
-	* amiga_eventloop.c (eventloop): calls undo_distinct() when
-	the current window changes
-
-	* amiga_defs.h (TEST_INT): tests for SIGBREAKF_CTRL_C and calls
-	amiga_interrupt_handler()
-	* amiga_display.c (amiga_interrupt_handler): new function, resets
-	the ^C signal bit and throws an interrupt
-	(JadeProc): pointer to our process
-
-Thu Jun 23 19:57:13 1994  John Harper  (jsh orcrist)
-
-	* keys.c (KEYTAB_HASH_FUN): macro defining how to make a hash
-	key from an event. Now key-tables are 127 entries long not 128.	
-
-	* keys.c: meta-sends-esc is reversed to become esc-means-meta, now
-	there is no separate map for meta/esc keys
-
-Wed Jun 22 16:38:52 1994  John Harper  (jsh orcrist)
-
-	* unix_processes.c (proc_notification): now blocks sigchld
-
-	* keys.c (usekey): unbound insertions now set the last-command
-	variable to t.
-
-	* undo.c: now records when a buffer changes from un-modified
-	to modified so this too can be undone.
-
-Mon Jun 20 22:23:46 1994  John Harper  (jsh orcrist)
-
-	* undo.c: new file, undo recording and undo-ing
-	* Wherever flag*tion() is called undo_record_*tion() is also
-	called.
-	* x11_eventloop.c (eventloop): calls undo_distinct() when the
-	current window changes
-
-	* editcommands.c (cmd_insert): now returns the position of the
-	end of the insertion
-
-Sat Jun 18 11:54:50 1994  John Harper  (jsh orcrist)
-
-	* lisp.c (read_str): an escaped newline is now ignored
-	(read_symbol): checks that its static buffer doesn't overflow
-
-	* x11_windows.c (unsleep): this may work now?
-	(sleepwin, unsleep): now use the VWFF_SLEEPING flag
-	* x11_eventloop.c (handleevent): if we get an Expose event while
-	sleeping assume that we woke up. Also if the VWFF_FORCE_REFRESH
-	flag is set we discard all Expose events, when one has a count of
-	zero (the last) do a total redraw of the window
-
-Thu Jun 16 20:18:58 1994  John Harper  (jsh orcrist)
-
-	* refresh.c (refreshwindow): sets vw_LastDisplayOrigin here after
-	completing refresh
-	* housekeeping.c (resyncxy): no longer sets vw_LastDisplayOrigin
-
-	* movement.c (cmd_centre_display): new function
-
-Wed Jun 15 16:06:13 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_concat): no longer stomps on memory when the
-	string grows very quickly :-)
-
-	* streams.c (cmd_write): optional LENGTH arg for strings
-
-	* symbols.c (cmd_delete_buffer_variables): new function
-
-Tue Jun 14 10:54:03 1994  John Harper  (jsh orcrist)
-
-	* windows.c (stdtitle): now calls calc_cursor_offset()
-
-	* find.c (cmd_match_start, cmd_match_end): new functions; these
-	replace the variables `find-last-start-pos' and `find-last-end-pos'.
-	Now the position of any expression can be found and in strings
-	as well as in buffers.
-
-	* editcommands.c (cmd_offset_to_pos, cmd_pos_to_offset): new
-	functions for converting between byte counts and positions
-
-	* unix_processes.c (struct Proc): pr_UsePty changed to pr_ConnType
-	(runproc): option to set the ECHO flag in a pty
-	(cmd_set_process_connection_type): now uses named symbols
-
-Mon Jun 13 00:44:26 1994  John Harper  (jsh orcrist)
-
-	* unix_processes.c (runproc): now connects stdin of the child to
-	a defined file when running synchronously.
-	(cmd_run_process): new arg IN-FILE to make use of the above feature
-	(runproc, readfromproc): don't write to pr_OutputStream if it's nil
-
-Sun Jun 12 02:05:10 1994  John Harper  (jsh orcrist)
-
-	* unix_processes.c (struct Proc): pr_File becomes pr_Prog, pr_Argv
-	becomes pr_Args and is now a list of arguments 1..N. Arg #0 is
-	taken from pr_Prog
-	(cmd_start_process, cmd_run_process): new arg spec. ARGS are now
-	passed as the last N args in the call. Also the PROCESS arg
-	is optional, a vanilla process will be created if necessary
-	(cmd_process_name, cmd_set_process_name): renamed to process-prog
-	and set-process-prog
-	(cmd_process_argv, cmd_set_process_argv): renamed argv to args and
-	takes a list instead of a vector
-
-	* lispcmds.c (cmd_copy_list, cmd_copy_string): combined into
-	cmd_copy_sequence().
-	(cmd_sequencep): new function
-
-Sat Jun 11 19:21:00 1994  John Harper  (jsh orcrist)
-
-	* x11_eventloop.c (eventloop): some reorganisations
-
-	* lisp.c (handleerror): now handles cursor and reresh itself
-
-	* windows.c (cmd_title): renamed as `message', also a new arg
-	saying draw it immediately
-	(cmd_title_now): removed
-	(var_status_line_cursor): variable controlling VWFF_STATUS_CURS
-
-	* render.c (cursor): Takes note of VWFF_STATUS_CURS (but only
-	in X11 so far)
-
-	* edit.h (VW): vw_Sleeping and vw_NonStdTitle now in vw_Flags.
-	New flag VWFF_STATUS_CURS means draw the cursor in the status
-	line.
-
-	* keys.c (usekey, print_event_prefix): a second after a prefix
-	key is received the current prefix is displayed
-
-Fri Jun 10 19:24:36 1994  John Harper  (jsh orcrist)
-
-	* streams.c (cmd_format): added octal formatting (`%o')
-	(cmd_format): `%%' doesn't swallow an argument anymore
-
-	* keys.c (usekey): the `unbound-key-hook' is now called for all
-	unbound events -- not just keyboard events
-
-	* amiga_keys.c: updated after yesterday's changes, not finished
-	yet I can't remember the name of a function I need to use :-(
-
-Thu Jun  9 11:32:49 1994  John Harper  (jsh orcrist)
-
-	* keys.c, keys.h: massive changes; all key/event structures are
-	now standard Lisp types (vector & cons cells). Some new functions
-	for manipulating events and their bindings.
-	* x11_keys.c (lookup_event_name): new function
-
-Wed Jun  8 20:04:27 1994  John Harper  (jsh orcrist)
-
-	* keys.c (sym_idle_hook): new hook, called periodically when idle
-	time is available
-	* amiga_eventloop.c, x11_eventloop.c (eventloop): calls idle-hook
-
-	* values.c (cmd_garbage_collect): no longer prints a message
-	while gc is in progress
-
-Tue Jun  7 00:24:30 1994  John Harper  (jsh orcrist)
-
-	* edit.c (cmd_set_indent_pos): didn't rebuild line if it already
-	had the correct number of indentation characters
-
-	* unix_processes.c (queue_notify, proc_notification): The callback
-	function for a process isn't called directly anymore, this is too
-	risky.
-	(cmd_make_process, runproc, cmd_fork_process, cmd_run_process): now
-	more arguments can be passed to set the state of the process object.
-	(cmd_process_connection_type, cmd_set_process_connection_type):
-	support for using pipes *or* ptys when connecting to a process
-	(cmd_fork_process): renamed as `start-process'
-
-Mon Jun  6 20:23:55 1994  John Harper  (jsh orcrist)
-
-	* unix_misc.c (cmd_copy_file): oops, didn't open the destination
-	file with O_TRUNC :-(
-
-	* misc.c (cmd_substr): renamed as `substring' and significantly
-	changed.
-
-	* find.c (cmd_regexp_quote): new function
-
-Sun Jun  5 22:58:43 1994  John Harper  (jsh orcrist)
-
-	* lisp.c, lispcmds.c, lispmach.c, lisp.h, x11_eventloop.c,
-	amiga_eventloop.c: Interrupt support -- now you can break those
-	annoying infinite loops :)
-	* x11_display.c (x11_int_handler): handler for SIGINT
-
-Sat Jun  4 14:08:48 1994  John Harper  (jsh orcrist)
-
-	* keys.c (var_this_command, var_last_command): new functions
-
-Thu Jun  2 12:29:11 1994  John Harper  (jsh orcrist)
-
-	* Version 3.1 released
-
-Wed Jun  1 21:02:03 1994  John Harper  (jsh orcrist)
-
-	* x11_windows.c (makemousepos): didn't check that the returned value
-	was legal
-
-Mon May 30 16:48:21 1994  John Harper  (jsh deep)
-
-	* windows.c (stdtitle): changed the format string
-
-	* amiga_misc.c (cmd_file_req): sets the length of the returned string
-	to its correct value
-
-	* render.c (cutpastelines): doesn't assume that the window contains
-	an integral number of lines -- screen debris was left between the
-	end of the last line and the bottom of the window
-
-	* misc.c (memchr): in case the C library doesn't provide memchr(),
-	one of mine doesn't :(
-
-	* configs/: new option in all config files `HAVE_MEMCHR'
-
-	* amiga_menus.c (setallmenus, clearallmenus): Didn't ignore window
-	objects which don't have a physical window open, this was causing
-	Enforcer hits
-	
-Wed May 25 19:16:11 1994  John Harper  (jsh orcrist)
-
-	* find.c (findprev): kludged the index manipulation
-
-	* movement.c (findmatchingbracket): new argument ESC plus code
-	to check for escape chars
-	(cmd_match_brackets): new arg ESC, for the above modification
-
-Tue May 24 16:06:14 1994  John Harper  (jsh orcrist)
-
-	* movement.c (cmd_screen_bottom_line, cmd_screen_last_column):
-	returned 1 to big
-
-	* editcommands.c (get-char): didn't return newlines
-
-	* lispmach.c (cmd_lisp_code2): renamed the conditional jumps
-
-	* render.c (redraw_line_from, redraw_region): these now notice if
-	they're told to start drawing before the first visible column
-
-	* lispmach.c (cmd_lisp_code2): wasn't setting ThrowValue to NULL
-	while evaluating unwind-protect forms
-
-	* symbols.c (cmd_setq_default, cmd_default_value): new functions
-	for accessing the default value of symbols
-
-	* Makefile.in: no longer uses CFLAGS to pass the JADE_DIR define
-
-Mon May 23 02:07:53 1994  John Harper  (jsh orcrist)
-
-	* Changed the origin of a buffer's coordinates to (0,0) not (1,1),
-	what will this break??
-
-	* glyphs.c (expand_tabs): didn't like START-GLYPH==0
-
-	* editcommands.c (cmd_set_indent_pos, cmd_indent_to): options
-	to only insert spaces, not tabs
-
-	* movement.c: fixed the `tab' functions to work with glyph
-	positions
-
-	* stringmem.c (sm_free): when a (non-malloc'd) string is freed
-	increment DataAfterGC by its size
-
-Sun May 22 23:13:10 1994  John Harper  (jsh orcrist)
-
-	* values.c (cmd_garbage_collect): calls sm_flush() on the MainStrMem
-	block.
-
-	* buffers.c (cmd_destroy_buffer): doesn't bother calling sm_flush()
-	anymore
-
-Sat May 21 20:59:11 1994  John Harper  (jsh orcrist)
-
-	* refresh.c (refreshworldcurs): doesn't try to setvwtitle()
-	closed windows anymore
-
-Fri May 20 21:52:37 1994  John Harper  (jsh orcrist)
-
-	* configs: added HAVE_SETPGID and HAVE_SETPGRP options
-	* unix_processes.c: takes note of the above macros
-
-Thu May 19 21:02:06 1994  John Harper  (jsh orcrist)
-
-	* unix_client.c, amiga_client.c (main): resets the line number for
-	each file.
-
-	* x11_windows.c (cmd_window_left_edge, cmd_window_top_edge): these
-	used to return coordinates relative to our parent window (created
-	by the wm) not the root window.
-
-Sun May 15 00:30:48 1994  John Harper  (jsh orcrist)
-
-	* lispmach.c: new instruction OP_RETURN
-
-	* find.c (replacit, replaceitstr): calls flaginsertion() before
-	inserting the string not after (when the pos has been advanced)
-
-	* lispcmds.c (cmd_unwind_protect): temporarily sets `ThrowValue' to
-	NULL while evaluating the body.
-	* lispmach.c (cmd_lisp_code2): similar to the above when unwinding
-
-Fri May 13 21:52:40 1994  John Harper  (jsh orcrist)
-
-	* editcommands.c (cmd_set_char): new function
-
-Thu May 12 19:24:22 1994  John Harper  (jsh orcrist)
-
-	* lispmach.c: cmd_lisp_code renamed as cmd_lisp_code2 since
-	compiled forms are now different.
-
-	* lisp.c (string_print): no longer escapes tabs or newlines
-
-	* editcommands.c (cmd_translate_string, cmd_get_char): new
-	functions.
-
-Tue May 10 21:19:29 1994  John Harper  (jsh orcrist)
-
-	* lisp.h, value.h: New definition of the VALUE type, no longer
-	is it (void *)
-
-Sun May  8 18:42:03 1994  John Harper  (jsh orcrist)
-
-	* editrect.c: New file. Most rectangle code has moved here from
-	edit.c and updated to cope with the fact that a character's position 
-	in a line may not be the same as its position on the screen. Also 
-	lots of TAB handling.
-
-	* keys.c (evalbinding): if the symbol `meta-sends-esc' is non-nil
-	any meta-modified events get translated into ESC then the
-	un-meta'd event.
-
-Sat May  7 13:53:59 1994  John Harper  (jsh orcrist)
-
-	* glyphs.c: each buffer can now have its own glyph-table. A new
-	data type for glyph-tables has been created. New functions to
-	manipulate these.
-
-Fri May  6 20:31:33 1994  John Harper  (jsh orcrist)
-
-	* editcommands.c (cmd_indent_to): new function
-
-	* edit.c: changes uses of strcpy() and family to memcpy() so
-	nul bytes don't cause havoc.
-
-Thu May  5 17:08:23 1994  John Harper  (jsh orcrist)
-
-	* unix_processes.c (writetoproc): new arg BUFLEN
-
-	* streams.c (stream_puts): new arg BUFLEN, the length of the
-	string being written
-	(stream_read_esc): now understands octal escapes of less than 3
-	chars and hex escapes
-
-	* lisp.h: strings allocated (as opposed to being string-constants)
-	now contain a length field. This will allow these strings to
-	contain '\000' characters. The macro STRING_LEN gives the number
-	of characters in any type of Lisp string.
-
-	* values.c: accommodate the above changes
-
-	* io.c (cmd_write_file): uses fwrite() not fputs
-
-Wed May  4 20:28:31 1994  John Harper  (jsh orcrist)
-
-	* edit.c (posinblock): for rectangular blocks uses glyph coords
-
-	* housekeeping.c: the block marks are only updated in the y direction
-        if rectangular blocks are being marked.
-
-	* render.c (draw_bit): END arg is now inclusive
-
-	* amiga_misc.c, unix_misc.c (fileexists): now returns bool
-
-Tue May  3 08:30:52 1994  John Harper  (jsh orcrist)
-
-	* buffers.c (var_disk_tab, var_save_tabs): removed
-	(var_screen_tab): renamed as var_tab_size
-
-	* edit.h (struct _TX): removed tx_DiskTab and tx_SaveTabs :)
-
-	* movement.c (cmd_next_tab, cmd_goto_next_tab, cmd_prev_tab,
-	cmd_goto_prev_tab): new arg TAB-SIZE. Also the goto variants
-	convert glyph-pos to char-pos. The other return the *glyph* pos.
-
-	* find.c (strrchrn, strrstrn): renamed as mystrrchrn() and
-	mystrrstrn() incase they clash with anyone's C library
-
-	* misc.c (stpblk, stpalnum, cpyalnum): deleted, they were
-	not used anymore
-
-	* find.c (mystricmp): args toupper() and tolower() had side
-	effects! Deleted this function since it's not used anymore
-	anyway
-
-	* housekeeping.c: #undef's no longer state the macro's args,
-	I'm told this is illegal
-
-	* movement.c (cmd_goto): renamed as cmd_goto_char
-	(cmd_goto_glyph): new function
-
-	* editcommands.c (cmd_indent_pos, cmd_set_indent_pos): hacked
-	to allow `proper' TABs
-
-	* edit.c (insertstring): no longer has to expand TAB chars.
-
-	* io.c (readtx): rewritten, no longer has to expand TAB chars,
-	should make it a lot faster?
-	(writeline): not needed anymore
-
-	* render.c: many changes to cope with the `glyphs' code, now
-	there are two types of column position, the `character' one
-	which is the number of characters from the start of the line, and
-	the `glyph' pos, the number of glyphs from the start of the
-	line.
-
-	* glyphs.c: new file, manages mappings between characters and
-	their printed representations. Includes new Lisp functions,
-	`glyph-to-char-pos', `char-to-glyph-pos', `set-glyph' and
-	`get-glyph'.
-
-Mon May	 2 10:13:12 1994  John Harper  (jsh orcrist)
-
-	* windows.c (stdtitle): bracketing around mode names now shows
-	if in a recursive-edit
-
-	* values.c (cmd_dup_pos): renamed as cmd_copy_pos
-
-	* streams.c (streamputc, streamputs): strings now have a number
-	associated with them, their *actual* size.
-
-	* lispcmds.c (cmd_rassoc, cmd_rassq): new functions
-	(cmd_copy_string): new function
-
-Sun May	 1 23:36:00 1994  John Harper  (jsh orcrist)
-
-	* lisp.c: Optimised some of the read functions, got rid of the
-	nextlispexp() function.
-
-Sat Apr 30 10:44:56 1994  John Harper  (jsh orcrist)
-
-	* symbols.c (symbols_init): nil and t are now constants
-
-	* windows.c (cmd_make_window): only calls updatescroller() if
-	tx is non-NULL, should fix the other Enforcer hit?
-
-	* buffers.c (firstbuffer): now calls updatescroller() *after*
-	switching in the first buffer, I think this should kill the
-	Enforcer hit at startup?
-
-	* refresh.c (refreshworldcurs): updates status line properly
-
-	* edit.c (checksect, checkpos, checkline): didn't make sure the
-	line number was positive
-
-	* unix_client.c: now takes a series of files
-
-	* amiga_eventloop.c (eventloop): Wait()'s for ServerSig as well
-
-	* amiga_server.c, amiga_client.c: new files (untested, as yet)
-
-Fri Apr 29 21:38:03 1994  John Harper  (jsh orcrist)
-
-	* unix_server.c, unix_client.c: new files
-
-Thu Apr 28 19:21:43 1994  John Harper  (jsh orcrist)
-
-	* amiga_defs.h, unix_defs.h (DOC_FILE): renamed as DOC
-
-	* unix_misc.c (geterrstring): macro HAVE_STRERROR replaces
-	 ERRNO_STRING, much simpler.
-
-Thu Apr 28 14:39:49 1994  J.S.Harper  (jsh raven ukc ac uk)
-
-	* render.c (cutpastelines): fixed one [more] bug
-
-Thu Apr 28 01:26:58 1994  John Harper  (jsh orcrist)
-
-	* editcommands.c (cmd_delete_area, cmd_cut_area): these now
-	call padpos() on their section markers.
-
-Wed Apr 27 19:53:27 1994  John Harper  (jsh orcrist)
-
-	* unix_memory.c, unix_defs.h (myfree, initmem, killmem): these are
-	now macros in unix_defs.h
-
-Tue Apr 26 22:59:44 1994  John Harper  (jsh orcrist)
-
-	* Makefile.in: new file, cpp source to make src/Makefile. Now only
-	one configuration file has to be edited, src/config.h, it's used
-	for both Makefile and C configurations.
-
-Mon Apr 25 22:14:41 1994  John Harper  (jsh orcrist)
-
-	* keys.c (cmd_current_key_string): new function
-
-	* buffers.c (var_minor_mode_names): list of strings which is printed
-	in the status line.
-	* edit.h (TX): tx_MinorModeNameList and tx_MinorModeNameString
-
-Sun Apr 24 13:06:56 1994  John Harper  (jsh orcrist)
-
-	* unix_misc.c (cmd_directory_files): oops. If it couldn't open the
-	named dir, it signalled the error with the C-string not the Lisp one.
-
-	* misc.c (cmd_expand_file_name): new function
-	* unix_misc.c (expand_file_name): does the work of the above function
-	* unix_defs.h: #define EXPAND_FILE_NAME expand_file_name
-
-	* unix_processes.c (runproc): initialises the pty more carefully
-
-	* streams.c (posputc, posputs): uses `tx_DiskTab' for tab size, not
-	`tx_TabSize'. What will this break?
-
-Sat Apr 23 21:05:34 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_defvar, cmd_defconst): these are now in C
-
-	* find.c (cmd_looking_at): used to set `find-last-end-pos' to the
-	wrong position, also, the NOCASE_P arg was being ignored.
-
-Wed Apr 20 16:02:28 1994  John Harper  (jsh orcrist)
-
-	* Version 3.0 released
-
-Tue Apr 19 20:51:28 1994  John Harper  (jsh deep)
-
-	* refresh.c (refreshworldcurs): Checks if buffer has switched
-
-	* amiga_minrexx.c (disp_rexx_port): changed the way that results are
-	returned. Numbers and Strings are returned via RESULT. `nil'
-	means RC=1 (command failed), anything else RC=0 (command succeeded).
-
-Mon Apr 18 20:54:42 1994  John Harper  (jsh orcrist)
-
-	* lisp.c (LispDepth, MaxLispDepth, var_max_lisp_depth, _eval, funcall):
-	Protection against infinite recursion.
-
-Mon Apr 18 11:13:52 1994  John Harper  (jsh deep)
-
-	* prefs.c (copyfileprefs): by default `save-tabs' is 'all
-
-Sun Apr 17 19:29:37 1994  John Harper  (jsh orcrist)
-
-	* refresh.c (refreshwindow): simpler way of checking if block has
-	already been drawn. Not good, but it may actually work!
-
-	* render.c (cursor): checks if cursor is off bottom of window
-
-	* x11_commandline.c (docmdline): now redraws the separator line
-	on an expose event.
-
-	* unix_misc.c, amiga_misc.c (cmd_move_file): renamed to
-	`cmd_rename_file'.
-
-	* unix_misc.c, amiga_misc.c (cmd_copy_file, cmd_file_nlinks,
-	cmd_file_modes, cmd_set_file_modes): New functions
-
-Sat Apr 16 14:04:45 1994  John Harper  (jsh orcrist)
-
-	* Added license notices at the beginning of all source files.
-
-	* All instances of the string `jed' have been changed to `jade'. I
-	decided to change its name since there is at least one other editor
-	called jed.
-
-Fri Apr 15 14:35:55 1994  John Harper  (jsh deep)
-
-	* amiga_windows.c (newwindow, sleepwin): `DefDims' contains the
-	number of rows/columns, not pixels.
-
-	* amiga_display.c (initwinsys): Command line arguments `-pubscreen'
-	and `-font'
-
-Thu Apr 14 20:23:27 1994  John Harper  (jsh deep)
-
-	* values.c (values_kill): Due to a typo blocks of Numbers weren't being
-	deallocated, now they are.
-
-	* amiga_eventloop.c (eventloop): Fixed idle test. It's not ideal
-	-- it uses 10 Intuiticks equal one second. Of course, the main
-	loss is that Intuiticks are only sent while one of our windows is
-	active :-(
-
-Thu Apr 14 11:31:49 1994  John Harper  (jsh orcrist)
-
-	* amiga_menus.c: More or less wholly rewritten. Doesn't take menu
-	definitions from a file anymore, but from a list. No support for
-	submenus at the moment though.
-
-	* buffers.c (makemarksres, makemarksnonres): Don't bother checking
-	for a NULL `tx_FileName', this can't happen.
-
-	* values.c (markvalue): Marks don't get gc-marked down their
-	chain, this was wrong.
-	* buffers.c (sweep_mark, unchainmark): To go with the above, marks
-	are now unchained from their buffer when swept.
-
-	* misc.c (cmd_file_concat): function to stick together
-	path-name components.
-	* amiga_misc.c, unix_misc.c (addfilepart): for the above function
-
-Wed Apr 13 11:31:45 1994  John Harper  (jsh orcrist)
-
-	* symbols.c (bindsymbol, unbindsymbols): Can now bind to V_Var
-	objects properly (the function is used to retrieve and set its
-	value)
-
-Tue Apr 12 14:55:56 1994  John Harper  (jsh orcrist)
-
-	* x11_windowsys.h: CLR_RECT and SET_RECT did one two many columns/rows
-
-	* find.c (cmd_looking_at): new function
-
-Mon Apr 11 23:17:56 1994  John Harper  (jsh orcrist)
-
-	* symbols.c: `make-*-variable' functions have been changed to
-	`set-*-variable'. They don't make anything, just set a flag.
-
-Sun Apr 10 19:22:35 1994  John Harper  (jsh orcrist)
-
-	* find.c (strrchrn): Now uses a pointer instead of an array index.
-
-Fri Apr	 8 20:21:07 1994  John Harper  (jsh orcrist)
-
-	* symbols.c (cmd_symbol_value, symbol_function): Got rid of the
-	`void-symbol-function' hook.
-
-Tue Apr 05 15:19:47 1994  John Harper  (jsh deep)
-
-	* amiga_windows.c (cmd_font_size): Removed, obsoleted by the
-	`font-y-size' function
-
-	* windows.c (cmd_font_x_size, cmd_font_y_size): New commands
-
-	* amiga_misc.c (cmd_full_name): No longer returns NULL when it
-	can't read the ENV: variable `REALNAME'.
-
-	* amiga_clipboard.c: Errors now reported via signal, not just printed
-	in the status line.
-	(readclip): Used to return a normal string not a VALUE
-
-Mon Apr	 4 12:40:00 1994  John Harper  (jsh orcrist)
-
-	* Makefile, DMakefile: Now *all* source files are scanned for
-	doc-strings. This is so that there is only one `DOC-strings' file
-	for any particular revision (not one for each target OS).
-
-Sun Apr	 3 20:57:24 1994  John Harper  (jsh orcrist)
-
-	* main.c, x11_eventloop.c, amiga_eventloop.c: Now eventloop() calls
-	refreshworldcurs() when it is entered, this used to be done in
-	cmd_recursive_edit() (but not in main()).
-
-Thu Mar 31 12:27:21 1994  John Harper  (jsh orcrist)
-
-	* Files in the directories `amiga/', `unix/' and `x11/' have been
-	moved into the root source dir with prefixes of `amiga_', `unix_' and
-	`x11_' respectively. This makes compilation a lot easier.
-
-Tue Mar 29 00:45:13 1994  John Harper  (jsh orcrist)
-
-	* render.c: As much as possible of x11/render.c has been moved to
-	here. Uses macros defined in windowsys.h to do as much platform-
-	independant rendering as possible. This turns out to be everything
-	but the prompt line.
-
-	* refresh.c: Copied most of render.c into this file.
-
-Fri Mar 25 13:20:11 1994  John Harper  (jsh orcrist)
-
-	* x11/eventloop.c: increasing the vertical size of a window no longer
-	leaves the old status line in the middle of the display (if the buffer
-	doesn't overwrite it).
-
-	* values.c (cons_sweep): wholly unused blocks are now freed
-	(markvalue): attempt to limit recursion as much as possible
-
-Thu Mar 24 09:51:07 1994  John Harper  (jsh orcrist)
-
-	* symbols.c: Got rid of `symbol-flags' function. Now there's none
-	of these annoying `flags' functions left :-)
-
-	* buffers.c: TXFF_IMMORTAL and TXFF_NOCHANGE are consolidated
-	into TXFF_SPECIAL. New functions `set-buffer-special' and
-	`buffer-special-p'. Got rid of `tx-flags' function.
-	(set-buffer-name, set-file-name): Order of arguments reversed,
-	this is more consistent with all other `set*' functions.
-
-	* files.c: renamed to buffers.c, this makes more sense now
-
-Wed Mar 23 12:06:02 1994  John Harper  (jsh orcrist)
-
-	* values.c (markvalue): Two new algorithms for marking cons cells
-
-	* General code cleanup so that it will compile with -Wparentheses.
-
-Sat Mar 19 03:45:03 1994  John Harper  (jsh orcrist)
-
-	* find.c (cmd_find_next_regexp, cmd_find_prev_regexp, cmd_regexp_match,
-	cmd_regexp_match_line): optional arg `IGNORE-CASE-P'
-
-	* regexp/regexp.h, regexp/regexp.c: new flag to regexec2(),
-	REG_NOCASE, means ignore case when comparing strings (but not
-	for character classes).
-
-	* io.c: new command `read-file-from-to'
-
-	* streams.c: new commands `read-line' and `read-file-until'
-
-Fri Mar 18 01:03:28 1994  John Harper  (jsh orcrist)
-
-	* doc/: Directory with manual stuff, new Makefile
-
-	* find.c: New command `regexp-expand-line' a cross between
-	`regexp-expand' and `regexp-match-line'.
-
-Thu Mar 17 18:55:54 1994  John Harper  (jsh orcrist)
-
-	* jed.h, windows.c: Got rid of obsolete VWFF_NOSAVEPOS flag. Also
-	the var `vw-flags' is gone. Functions `rect-blocks-p' and
-	`set-rect-blocks' are used instead (the other flags are internal).
-
-	* unix/processes.c: Now uses SA_RESTART if possible and O_NONBLOCK
-	instead of O_NDELAY.
-
-Tue Mar 15 23:04:34 1994  John Harper  (jsh orcrist)
-
-	* jed.texi: New file, at last! I've started the manual
-
-	* files.c (var_save_tabs): Now uses descriptive symbols for the
-	options, not magic numbers.
-
-Mon Mar 14 21:21:41 1994  John Harper  (jsh orcrist)
-
-	* unix/processes.c: Now uses sigaction() and sigprocmask() instead
-	of signal(). I'm not sure if I've done this correctly, from looking
-	at the kernel sources it seems ok...
-
-Sat Mar 12 22:25:36 1994  John Harper  (jsh orcrist)
-
-	* x11/display.c: Added `-name' option -- sets the name which is
-	primarily used to lookup resources with.
-	* x11/display.c (getxresources): If unable to find a resource with
-	the program name tries with the string "Jed".
-
-Thu Mar 10 22:08:33 1994  John Harper  (jsh orcrist)
-
-	* find.c: (cmd_replace_regexp, cmd_replace_string): Checks if `pos'
-	is out of range (instead of just seg-faulting).
-
-Mon Mar	 7 21:27:25 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c: New symbol `lisp-lib-dir'
-	* lisp.c (cmd_add_doc_string): New command to write a new doc-string
-	to the DOC file and return its index.
-
-Sun Mar	 6 12:49:38 1994  John Harper  (jsh orcrist)
-
-	* windows.c (window_prin): Handles dead windows now.
-
-	* windows.c (cmd_destroy_window): Now does (throw 'quit 0) when no
-	more windows exist.
-	* windows.c, amiga/windows.c: Fixed `NumWindows' variable -- it's
-	now decremented in `cmd_destroy_window'.
-
-Sat Mar	 5 01:21:35 1994  John Harper  (jsh orcrist)
-
-	* edit.c: #if 0'd `stuffline'. This is now done inline where functions
-	can take advantage of knowing the length of the line.
-
-	* editcommands.c (cmd_translate_area): Applies a translation-table
-	(a string) to a region of a buffer. Also, variables `upcase-table' and
-	`downcase-table' are provided. Needs `cmd_translate_rect'.
-
-Fri Mar	 4 18:55:38 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_functionp, cmd_special_form_p): Fixed null-ref
-	when a symbol has no function value.
-
-	* edit.c (rectinsertstring, rectdeletesect): Now calls the `flag*'
-	functions properly. Also fixed bug that inserting past the bottom
-	of the file didn't work properly.
-
-	* files.c: Changed `cmd_find_file' to `cmd_get_file_buffer' and
-	`cmd_find_buffer' to `cmd_get_buffer'.
-
-Thu Mar	 3 21:36:01 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_eval_hook2): Could exit with `GCinhibit' still set.
-
-	* keys.c (usekey): Now checks for a read-only buffer before inserting
-	a keypress.
-
-Mon Feb 28 19:34:54 1994  John Harper  (jsh orcrist)
-
-	* symbols.c, lisp.h: New flag in Symbol struct: SF_INTERNED.
-	This gets set when a symbol is interned. Lets me protect against
-	interning a symbol twice.
-
-	* streams.c (cmd_stdin_file, cmd_stdout_file): These didn't
-	actually set the LFF_DONT_CLOSE flag which I had so carefully
-	prepared for them :-(
-
-Sun Feb 27 20:48:56 1994  John Harper  (jsh orcrist)
-
-	* x11/windows.c (activatewin): Actually does something now -- raises
-	the window and warps the mouse to it's top-left corner.
-
-Tue Feb 22 21:58:18 1994  John Harper  (jsh orcrist)
-
-	* x11/render.c (cutpastelines): Doesn't bother if `dstLine' is off
-	bottom of window.
-
-	* lisp.c, lispcmds.c, lispmach.c, ../lisp/lisp.jl: Got rid of 'lambda
-	throw tag, this won't work as expected in some pieces of compiled
-	code. Replaced by 'defun tag which returns a value from a defun.
-
-Mon Feb 21 02:05:56 1994  John Harper  (jsh orcrist)
-
-	* lispcmds.c (cmd_load): Now takes note of variable `load-path' (list
-	of directory names) and warns if compiled file is older than it's
-	source. Also an option to suppress the error when file doesn't exist.
-
-Sun Feb 20 21:20:02 1994  John Harper  (jsh orcrist)
-
-	* io.c (cmd_write_buffer_area): New command, writes a portion of
-	a buffer to a file.
-
-Sat Feb 19 00:45:53 1994  John Harper  (jsh orcrist)
-
-	* lisp.c, lispmach.c (cmd_backtrace): Now keeps a stack of all
-	living Lisp function calls. This is mainly so it's easy to see
-	where an error occurs.
-
-	* lisp.c [mainly]: Error signalling written. New subrs, signal,
-	error-protect (similar to emacs' `condition-case') and a var,
-	debug-on-error. New byte-opcodes introduced -- op-signal and
-	op-error-protect.
-
-Tue Feb 15 20:59:53 1994  John Harper  (jsh orcrist)
-
-	* x11/render.c (cutpastelines): Some optimisation of what lines get
-	moved (now leaves trailing blank lines alone).
-
-	* unix/misc.c (cmd_user_login_name): Tries getlogin() before
-	getpwuid().
-
-Mon Feb 14 21:32:27 1994  John Harper  (jsh orcrist)
-
-	* Changed doc-string handling -- now all subr doc-strings are kept in
-	a separate file. All source files containg `DEFUN's have been
-	changed to accomplish this and a new tool `makedoc' has been written.
-	This only saves about 40K in the binary but since that was about a
-	quarter of the whole size I think it's worth it.
-
-Sat Feb 12 14:35:05 1994  J.S.Harper  (jsh falcon ukc ac uk)
-
-	* find.c (cmd_regexp_match_line): New command, matches a regexp
-	to a line of a buffer.
-
-	* movement.c (cmd_next_tab, cmd_goto_next_tab, cmd_prev_tab,
-	cmd_goto_prev_tab): These would go into a (near-)infinite loop
-	when given a negative argument.
-
-	* unix/misc.c (cmd_user_full_name): `FULL_NAME_TERMINATOR' option.
-
-Sat Feb 12 01:28:01 1994  John Harper  (jsh orcrist)
-
-	* misc.c (cmd_major_version_number, cmd_minor_version_number): New
-	commands.
-
-Thu Feb 10 03:15:12 1994  John Harper  (jsh orcrist)
-
-	* render.c: '#if 0' out `cmd_refresh_window'. This isn't possible
-	anymore -- there's no way of saying that a certain window has been
-	updated re: a buffer while other views of that buffer haven't. This
-	is no big loss, use `refresh-all' instead.
-
-	* jed.h, x11/windowsys.h, amiga/windowsys.h: Took out most #ifdef's
-	from the VW structure. Now all window-system specific bits of a VW
-	are in a separate structure (`VW_WindowSystem').
-
-Wed Feb	 9 22:46:34 1994  John Harper  (jsh orcrist)
-
-	* jed.h, files.c, ../lisp/buffers.jl: Fixed problem of buffer being
-	marked unmodified after an auto-save. -Introduced new field,
-	`tx_ProperSaveChanges', containing the change count at the last
-	time the buffer was written to its file (*not* an auto-save).
-
-	* io.c (readtx, writetx): No longer assumes that all files end
-	in '\n'. This means that files without a trailing newline don't
-	get given one anyway when they're written to disk.
-
-Tue Feb	 8 03:29:19 1994  John Harper  (jsh orcrist)
-
-	* files.c (cmd_buffer_changes, cmd_buffer_modified_p,
-	cmd_set_buffer_modified): New method of dealing with modification
-	counts. `tx_Changes' is *never* reset -- when the buffer is
-	`un-modified' another field `tx_LastSaveChanges' is set to the
-	current value of `tx_Changes'. This is so the new refresh code
-	can rely on the change counter.
-
-	* render.c, x11/render.c, edit.c, editcommands.c: Rewrote functions
-	which control what gets redrawn and when. This almost works. Much
-	more efficient and loses some embarassing misfeatures.
-
-Sun Feb	 6 01:25:15 1994  John Harper  (jsh orcrist)
-
-	* lisp.h, streams.c: New flag in LFile structure, `LFF_DONT_CLOSE',
-	means *never* fclose() the lf_File field.
-	* streams.c (cmd_stdin_file, cmd_stdout_file): Access to stdin/out.
-	* .gdbinit: New file, command to print a lisp object in gdb.
-
-	* lisp.c (bindlambdalist): uses static symbols to match ampersand-
-	keywords (`&optional', `&rest', `&aux').
-
-	* amiga/misc.c: merged amiga/io.c into this file.
-	* amiga/misc.c (cmd_user_login_name, cmd_user_real_name,
-	cmd_user_home_directory, cmd_system_name): New commands in line
-	with their unix counterparts, get their values from strategically
-	placed environment variables.
-
-	* unix/misc.c: merged unix/io.c into this file.
-
-	* unix/io.c (cmd_user_login_name, cmd_user_real_name,
-	cmd_user_home_directory, cmd_system_name): These now cache their
-	results after the first time they're called.
-	* unix/io.c (cmd_system_name): Now returns the full hostname, with
-	domains and everything.
-
-Sat Feb	 5 21:36:22 1994  John Harper  (jsh orcrist)
-
-	* windows.c (cmd_with_window): special-form (similar to `with-buffer').
-	* lispmach.c, ../lisp/compiler.jl: support for above special form, new
-	opcodes `swap-window' and `windowp'.
-
-	* lispmach.c: Put stack bounds checking inside `#ifdef PARANOID'
-
-	* unix/processes.c (signalprocess): Signals no longer use characters.
-	(Unless you define `SIGNALS_VIA_CHARS'.)
-
-Fri Feb	 4 23:26:31 1994  John Harper  (jsh orcrist)
-
-	* ChangeLog starts here, I've decided to try and keep one of these
-	things.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]