# -*- Mode: Text -*-

ILISP HISTORY

===============================================================================
Version 5.8 alpha

Fixes and enhancements since 5.7

-- XLISP and XLISPSTAT support has been added on an experimental way.
   Please give us feedback on their behavior.

-- There is now a way to disable the DEFPACKAGE feature for GCL.  But
   it is not turned on.  You have to fix it manually by transforming two
   '#+(and nil gcl)' into '#+(and t gcl)'

-- A few fixes were made to realign ILISP to Xemacs 19.14

-- The file 'clisp.lisp' has been renamed to 'cl-ilisp.lisp', in order
   to avoid confusion with the CLISP implementation of Common Lisp.

-- The file ILISP.prj (if present) can be safely ignored unless you
   want to use the PRCS project control system
   (http://http.cs.berkeley.edu/~jmacd/prcs-home.html)

-- Changed 'comint-ipc' and 'bridge'. They now use
   'process-send-string' instead of defining specialized versions of
   it. (This was done because it appears that the newer versions of
   'comint' have a 'process-send-string' that does what these specialized
   versions used to do.)

-- Added constant '+ilisp-emacs-minor-version-number+' (in 'ilcompat').

-- Conditionalized loading of 'bridge.el' (in 'ilisp').

-- Fixed the annoying ECL/GCL glitch in 'ilisp-kcl' and the error
   regexps for KCL and IBCL in the same file

-- Patched 'comint-ipc' according to suggestion by Kazuhiro Fujieda.

-- Patched 'ilisp-out'  according to suggestion by Kazuhiro Fujieda.


Known Bugs

-- Allegro multiprocessing output handling is still broken.  This is a
   though one and the maintaners cannot fix it.

-------------------------------------------------------------------------------

Version 5.7

Fixes and enhancements since 5.6:

-- ILISP now unpacks in a directory called ./ilisp-<version>.

-- Fixed various simple bugs in the init files (hooks et
   similia). Check 'ilisp.el' and 'ilisp.emacs' for details.

-- Support for different Emacs versions has been broken down in
   various version specific files. See:
	ilcompat.el (new name for compatibility file)
	ilfsf19.el
	ilfsf18.el
	illuc19.el = ilxemacs.el

-- ILISP is now compiled with version 19 bytecodes when
   appropriate. (This should work at least for FSF 19.xx).

-- Added a primitive menubar entry.

-- Included the bug fixes for source file tracking.

-- The Makefile now contains a new target called 'loadfile', which
   generates a file called 'ilisp-all.elc'. This speeds up ILISP sturtup.

-- Popping to the inferior lisp buffer is now done in a more
   intelligent way in FSF-19 (i.e. if a frame with the appropriate
   window is available, then that frame is raised instead of
   recreating a window in the current one).

-- The ILD uniform Lisp debugger by J. Siskind has been added to the
   distribution (file 'ild.mail').  ILD is not integrated yet with
   ILISP, but it is important enough that people should experiment
   with it.

-- The texinfo file has been fixed.

-- New dialects have been added: GCL, ECL, Harlequin Lispworks, CLISP.

-- The special-form-p/special-operator-p mess should be fixed (at
   least in CMUCL).

-- Cleaned up support for Lucid, Allegro and CMULISP.

-- The file 'scheme2c.mail' contains a trick to make Scheme->C to work
   with ILISP.

-- The file 'ilisp-s2c.el' contains a first cut definition of the
   Scheme->C dialect. Note that this file is neither byte compiled nor
   loaded.


Known bugs:

-- Keymap handling is still rather inflexible. Either you like the
   setup or you don't. (A patch by Kimball Collins was not inserted in
   the code because we feel there should be a more thorough cleanup).

-- AKCL and GCL may cause an error in the sturtup procedure of ILISP. We (the
   maintainers) have been unable to track down this one since we have
   not access to an AKCL or GCL environment. Please help us.

-- Source level tracking for interpreted code in CMUCL may still break down
   unexpectedly. This is due to the inner working of CMUCL and there
   is no easy fix. We try to fall back on the TAG machinery.

-- The menu entry does not track correctly the status of the inferior
   lisp. I.e. there is no code yet that disables the menu items when
   the inferior Lisp is not running anymore.

-- Package tracking is still somewhat flaky.

-- Multiprocessing Lisps may still cause problems with prompts. This
   has been noticed especially with Allegro CL.

-- The "send the source even if compiled file file exist" bug is still
   in place.


===============================================================================
Mon, 11 Jul 94 10:48:24 EDT  Version 5.6 Released

-- Works once again with GNU emacs 19.25, lemacs 19.10. and emacs 18.58.

-- The popper facility has been completely replaced by a much less
   intrusive facility which has most of the original functionality.
   All ilisp output is funneled through the function which is the value 
   of the variable ilisp-display-output-function.  Several sample display 
   functions are provided.  Do c-H m in an ilisp buffer for more info.

-- The common lisp arglist printer has been prettified somewhat.

-- Ilisp no longer tries to handle lisp errors by default.  This is
   controlled by the varible ilisp-handle-errors.

-- Many of the hairy regexps used to located definitions have been
   broken out into separate variables. One is ilisp-cl-source-locater-patterns,
   which is an alist of (function-type regexp)

-- Compile-defun, eval-defun and friends display the returned lisp value.

-- Defined variables for the init files for the built-in dialects, to ease
   customization (ilisp-clisp-init-file, etc).

-- Some handy new functions: ilisp-lispm-bindings, repair-ilisp.

-- A minor bugfix in ilisp-send.

-- A simplified makefile.

===============================================================================
Fixes in 5.5:

-- Now works with lemacs 19.8 (to be released soon) in addition to all
   the other versions of emacs around.

===============================================================================
Fixes in 5.4:

-- Added support for CMUCL 17b.

-- Fixed definition regexp in ilisp-locate-ilisp.   Thanks to Paul
   Krause.

-- Hacked popper to make output lines of one line or less get
   displayed in the message buffer, depending on the variable
   popper-use-message-buffer.

===============================================================================
Fixes in 5.3:

-- Fixes some problems in clisp.lisp

-- Makefile-ilisp now valid for Sun's distributed `make'.

-- Did the right thing regarding autoloads (yes you have to define them
in your .emacs, and make them autoload "ilisp".)  See ilisp.emacs

-- Put the run-hooks calls at the end of ilisp.el where they should
   be.

	"Fixes" in version 5.2 of ILISP.  

Cause more problems with autoloads and fixes a missing definition in the
Makefile-ilisp in 5.1

	"Fixes" in version 5.1:

It removes some correct information concerning autoloads in ilisp.texi
and ilisp.emacs that was released in 5.0

======================================================================
Sat Jun 26 14:22:01 1993  Version 5.0 Released

Changes:

The major changes from 4.12:

--Now works with emacs-18, fsf emacs-19, and Lucid emacs-19.

--Major file splitting done in an attempt to modularize ILISP.

--Added LISP-DONT-CACHE-PACKAGE lets users tell ILISP to search for the
most recent IN-PACKAGE on each eval/compile in a lisp buffer.

--Added 'message feature for lisp-no-popper, allows output from ILISP
to be sent to the message window (instead of via the popper or the
inferior lisp buffer) if it is one line long.  Useful for small
arg-lists, etc. Now the default.  

--Made the popper be off by default.  To have the popper on, set
popper-pop-buffers and popper-buffers-to-skip to t in a
popper-load-hook. See the sample in popper.el

FEATURES:

+Support for multiple LISP dialects including Lucid, Allegro, KCL,
AKCL, IBCL and CMU on multiple machines even at the same time.

+Dynamically sized pop-up windows that can be buried and scrolled from
any window.

+Packages are properly handled including the distinction between
exported and internal symbols.

+Synchronous, asynchronous or batch eval and compile of files,
regions, definitions and sexps with optional switching and automatic
calling.

+Arglist, documentation, describe, and macroexpand.

+Completion of filename components and LISP symbols including partial
matches.

+Find source both with and without help from the inferior LISP.
Including CLOS methods, multiple definitions and multiple files.  Also
works for automatically generated functions like defstruct.

+Edit the callers of a function with and without help from the
inferior LISP.

+Trace/untrace a function.

+Esc-q works properly on paragraphs in comments, strings and code.

+Find unbalanced parentheses.

+Super brackets.

+Handles editing, entering and indenting full LISP expressions.

+Next/previous and similar history mechanism compatible with comint.

+Handles LISP errors.

+Result histories are maintained in the inferior LISP.

+Does not create spurious symbols and handles case issues.

+Raw keyboard mode allows interaction with interactive programs
through Emacs.

+Online manuals for ILISP.

======================================================================
92/03/17 Version 4.12 released

Changes: Fixed an intermittent send bug.  Made it so that popper is
not required so aggressively.  Ignore symbolics font information of
source. Made lisp-end-defun-text so that it would work in non-lisp
modes. Set the package for ilisp-arglist. Made error dispatch case
insensitive.  Fixed lisp-directory to add files when lisp-edit-files
is t.  Fixed clisp.lisp compile for lucid.  Made
comint-interrupt-subjob interactive. Updated popper to run with emacs
19.  Fixed popper-wraps so that shell-command gets wrapped at load
time and changed it to be a function.  Added newline at end of bug
messages.  Updated the cmulisp interface file to run with the lastest
CMU CL release. Made sure that *standard-output* and *error-output*
are bound to *terminal-io*.  Fixed completer so that last completion
was accurate in the case of interruptions.  Added a path cache to
completer. Fixed completer so that Meta-return completes to best guess
and so that the full pattern is used for disambiguation.  Fixed +
history so that it is saved/restored. Fixed popper so that popping up
a window when in a popper window resuses the same window and if the
buffer is changed within a temp-buffer-show form, it works properly.
Fixed lisp-defun-end so that it no longer includes to the end of the
line.  Made it so that initialization through commands did not try to
synchronize with the inferior LISP.  Fixed edit-definitions-lisp so
that it would work if there is no inferior lisp.  Fixed popper-wrap so
that it included numeric documentation strings.  Made it so that
popper preserves the buffer point and scrolling backwards wraps
around.  Incoroporated the latest version of completion.  Added
documentation on global-map bindings.  Added
ilisp-load-no-compile-query.  Added ilisp-use-map so that keymaps can
be switched in dialect definitions. Added completer-any-delimiter to
completer. Fixed bug in completer that caused relative file names to
get erased. Fixed popper so that it handled killed buffers, popped
faster and had negative buffer lists.  Fixed it so that
dialect-program doesn't get stomped by loading ilisp.  Made it so that
ilisp-bug doesn't stomp on someone's unfinished message.  Look for
both .elc and .el files for setting ilisp-directory. Fixed a bug in
lucid that prevented compilation of the interface files on some
implementations.  Fixed epoch-pop so that it quits nicer.  Fixed bug
in CMU LISP interface.  Added *features* to ilisp-bug.  Fixed bugs in
completer when extending directories and for Apollo and AFS.  Fixed
popper so that it does not remove the trailing newline.  Made
lisp-buffer smart about killed buffers.

======================================================================
91/05/08 Version 4.11 released

Changes: Improved the way that completer handled filenames ending with
a / and relative pathnames.  Added popper-wrap to popper for functions
that don't use with-output-to-temp-buffer.  Added popper-empty-min and
popper-min-heights. Made popper-pop-buffers and popper-buffers-to-skip
default to t.  Fixed lisp-prefix-p so that reusing completion tables
works better. Fixed a bug in lisp-end-defun-text that made things
weird when people did not use ;;; for top comment blocks. Improved
ilisp-bug so that it gives more information and is less likely to
break.  Put interface files in their own package.  Changed
ilisp-compile to funcall of compile for all except lucid.  Fixed a bug
in lisp-pop-to-buffer that put the lisp in the popper buffer.  Fixed a
bug in ilisp-matching-symbols that prevented pattern matching with a
pattern that matched the last word.  Bare CR's now send an empty
string.  Made it so that allegro init binary extensions default to
excl:*fasl-default-type* unless on a known platform.  Added fboundp to
generic-function-p in ilisp-arglist.  Fixed KCL and friends dialects.
Fixed a couple of small bugs in completer.  Added raw keyboard mode.
Fixed lisp-pop-to-buffer so that the buffer was always selected which
fixed a bug in edit-definitions and friends.  Removed space from KCL
comint-prompt-regexp.  Added inspect-lisp.  Fixed a bug in popper-show
that complained if buffer was a string and fixed call in
who-calls-lisp.  Fixed some bugs in completer that completed too much
for local returns and that nuked the string if confirmation was
required.

======================================================================
91/03/19 Version 4.10 released

Changes: Changed the default binding of close-and-send-lisp.  Added
better dialect support for kcl, akcl, and ibcl.  Improved the run-time
detection of PCL/CLOS in clisp.lisp.  Fixed a nasty popper bug if you
tried to pop up a window when in a popper window.  Made it so that
popper-other-window would switch to the popper window when called with
a C-u prefix.  Added support for allegro 4.0. Made lisp-in-string
smarter about escaped " so that close-all-lisp worked better.  Renamed
reparse-attribute-list and made it so that you can specify manual
packages.  Improved partial completion of symbols so that it goes to
the ambiguous part.  Changed it so that uncompiled interface files
complain rather than compile.  Improved completer so that it completes
pathname components.  Made it so that dialects could be started up
with emacs switches.  Incorporated a new fancier version of
reposition-window-lisp.  Fixed restore so that it no longer printed
messages when there were multiple line values restored.  Added
trace-function-lisp.  Improved lisp-function-name when it is in a
string.  Changed initialization so that there is a dialect specific
program variable and the defaults are better and sticky.
lucid-check-prompt was hosed which of course broke everything in
Lucid.  Fixed load-file-lisp so that it allows interaction and senses
compile errors better.  Added process bridges.  Added
comint-always-scroll.  Made allegro macroexpand so that it would walk
instead.  Fixed popper so that switching to the popper buffer worked.
Fixed close-all-lisp so that it did not blow away # or ' at start of
sexp.  Fixed ilisp-buffer so that it complained if the buffer was
killed out from under it.  Changed ilisp-filter-regexp to filter all
lone keywords.  Added prefix arg to documentation-lisp so that
function call doc could be gotten.  Set ilisp-directory in
initialization so that it could be built into Emacs image.  Added
Franz online common lisp manual.  Added reset-ilisp to reset to
top-level and made it so that delete-char would pop one level at the
end.  Added call-defun-lisp and bound it to C-z y.  Fixed the binding
for popper-grow-output.  Added lisp-no-popper to stop using popper.
Fixed compile-defun-lisp so that it would compile the previous form in
the inferior LISP.  Made it so that the entire in-package sexp is sent
to the inferior so that nicknames get set.  Added package-lisp and
set-package-lisp.  Removed eval-prev-sexp-lisp and made
eval-next-sexp-lisp do that with a negative prefix.  Fixed
lisp-defun-name so that it returned just the function name.  Added
lisp-region-name to better name regions.  Improved messages in
interrupt-subjob-lisp.  Added sit-for to all accept-process-output
loops to prevent locking up Emacs in Sys V.  Changed how
comment-region-lisp treated the end of the region and fixed a nasty
bug for a region including the eob.  Made changes to clisp.lisp for
lucid and kcl.  Added better kcl dialect definition.  Made it so that
end-of-defun-lisp would require ;;; at the left margin to decide that
the next definition had started.  Made it so that multiple sexps could
be typed to the top-level.  Made it so that all popper windows could
be skipped.  Simplified the ilisp-package-regexp.

======================================================================
90/12/30 Version 4.00 released

IMPROVEMENTS: Process stuff has been rewritten and much improved.  If
you prefer the old eval/compile behavior, set lisp-wait-p to t in your
ilisp-load-hook.  Improved edit-definitions and edit-callers so that
they support multiple definitions of any LISP object even if the
inferior LISP does not store the information.  Added support for
Epoch.  Separated out lisp-mode extensions, symlink fix, source stuff
and batch eval/compile.  Lots of minor improvements, see details
below.

INCOMPATIBLE CHANGES: Renamed interactive functions to put package
specification at the end so that names were quicker to specify and
some internal functions so that they were unique to ilisp.
ilisp-clisp now takes the full file name.  ilisp-load-or-send-command
now takes the binary and source paths explicitly.  The ilisp- prefix
was removed from dialect file names.  ilisp-definition-regexp has gone
away.  ilisp-prompt, ilisp-fix-error and ilisp-continue have gone away
in favor of the actual comint- variables.  ilisp-expand-symlinks has
gone away. 

DETAILS: Finally fixed up how many newlines are inserted.  Made it so
that the source file stuff would use a resident buffer with the same
name if available.  Added ilisp-filter-length to the input filter.
When reading a symbol, the inferior lisp is no longer queried with an
empty string.  newline-and-indent-ilisp will send a string w/o a new
line if called at the end of a buffer.  This was so that raw character
i/o could be done in some lisps.  All comint and comint-ipc variables
can now be set in hooks and the right thing will happen.  Made
lisp-end-defun-text skip over leading comments.  Added the functions
search-in-lisp-files and replace-in-lisp-files.  Prevented the
addition of duplicate entries to the input ring and expanded its size
to 200 entries.  Made lisp-def-name so that it adds the name of the
defining form and returns an empty string at the end of a buffer.
Swapped bindings of macroexpand-lisp and macroexpand-1-lisp.  Fixed
expand-file-name bug if // was at the start of a filename.  Fixed
obscure bug in make-local-variable.  Added ilisp-other-prompt and
bol-ilisp.  Added case-fold-search to appropriate places.  Fixed error
recovery in ilisp-completer.  Removed extra parentheses in the string
for ilisp-init-binary-command.  Added documentation on scrolling the
popper window backwards.  Fixed comment-region so that it handles
empty lines and deleting spaces at the start.  Fixed behavior of
reindent-lisp on comments at the start and end of a buffer.  Saved the
point in reposition-window-lisp.  Rewrote close-all-lisp so that it
inserted a bracket if in a string and was better behaved WRT non sexp
brackets and so that it could close all brackets.  Removed breaks in
lisp-end-defun-text for unclosed strings.  Added comint-check-prompt
to comint-ipc so that dialects can be smarter about errors.  Added
ilisp-check-prompt and allegro and lucid definitions.  Changed
edit-callers so that it uses the name of the current defun as its
default.  Changed popper so that it handles more windows, removes
trailing lines, is nicer about bindings and added popper-grow-output.
Also added epoch-pop for epoch.  Made lisp-input-start work if the
point was at the start of the line the prompt was on.  This made
reindent-lisp and close-all-lisp work in ilisp mode.  Added
close-and-send-lisp.  Made it so that bindings are only done after the
hooks are run.  Shorter clisp error messages.  Removed
ilisp-definition-regexp and replaced it with ilisp-locator.  Made
message optional in ilisp-send and ilisp-send-string.  Added a startup
message to ilisp buffers.  Made it so that there is filename
completion when prompting for lisp program.  Fixed bug in
ilisp-load-init.  Made it so that if an eval/compile worked normally,
no message was displayed.  Fixed lucid ilisp-list-callers so that it
does not recurse forever.  Changed lisp-list-callers to who-calls-lisp
and made it so that it would display the buffer.  Added ilisp-dialect
as a list of dialect names for the inferior LISP.  Added partial
minibuffer completion.  Improved filename completion help in
complete-lisp.  Added ilisp-bug for bug reporting. Improved case
handling for clisp.  popper v2.00, completer v2.00.

======================================================================
10/12/90 Version 3.0 released.  Improved pop-up windows, symbol
completion, package handling, compilation and initialization.
Changed default binding prefix.  Added trace/untrace and
evaluation of defvars.
  
======================================================================
 8/22/90 Version 2.0 released. Fixed bugs and changed initialization.

======================================================================
 6/11/90 Version 1.0 released.
