# -*- Mode: Text -*- ILISP HISTORY =============================================================================== Version: 5.12. Even Newer Version. Please refer to the ChangeLog entries to see what relevant changes have happened. These changes include some help for Window users and other stuff involving so many cool changes that I'm going to give up now ;) =============================================================================== Version: 5.11. New Version. Please refer to the ChangeLog entries to see what relevant changes have happened. There are way too many changes. =============================================================================== Version: 5.10.1. ILISP is on SOURCEFORGE! Fixes and enhancements since 5.9.4. Many. -- More CLish conventions for naming variables. Note that 'ilisp-prefix' is now 'ilisp-*prefix*' . Check your ilisp initializations in your .emacs or wherever you keep them. -- Better FSF compliance (see variable 'ilisp-*use-fsf-compliant-keybindings*') -- changed vars in ilisp-def: ilisp-*prefix* ilisp-*use-fsf-compliant-keybindings* ilisp-*use-frame-for-output* ilisp-*prefix-match* ilisp-*version* ilisp-*arglist-message-lisp-space-p* ilisp-*use-frame-for-arglist-output-p* ilisp-*enable-imenu-p* ilisp-*enable-cl-easy-menu-p* ilisp-*enable-scheme-easy-menu-p* ilisp-*enable-ild-support-p* ilisp-*use-hyperspec-interface-p* ilisp-*use-fi-clman-interface-p* ilisp-*directory* -- *.el: replaced vars. -- In ilisp-key: new custom: ilisp-bindings-*bind-space-p*: if t bind #\SPACE to #'ilisp-arglist-message-lisp-space -- Changed vars in ilisp-out: changed all sink's to ilisp-output-sink's ilisp-*icon-file* ilisp-*last-ilisp-output-sink* -- doc/ilisp.texi: replaced found vars of above with their replacements. -- doc/ilisp.texi: documented the frame-p stuff, arglist-p stuff, imenu-p stuff. -- doc/ilisp.texi: documented imenu.el, ilisp-imenu.el. -- ilisp-out.el & ilisp-chs.el: in ilisp-display-output-default: now printing of error messages in the lisp-listener should work!! at least it works for clisp, as I found out. -- ilisp-def: new variable ilisp-*arglist-message-switch-back-p* -- ilisp-hi: in lisp-send-region: fixed a bug; we had multiple outputs despite the fact that we should not have had that (eq switch 'result) => no display. -- sblisp.lisp: changed #'arglist; code is a adapted version of #'arglist in cmulisp.lisp. did not work for (arglist 'make-array) for example. -- cl-ilisp: reformatting of last ) ) [oops! :)] bugfix: special-operator-p replaced by special-form-p in #'ilisp-print-info-message. added support for ECL (ECLS). =============================================================================== Version: 5.9.4. Fixes and enhancements since 5.9.3. -- Cleaned up CLisp support (a leftover glitch from a previous 'merge'). -- Corrected a few typos here and there, especially in the INSTALLATION file. -- the CL functions ILISP-DESCRIBE and ILISP-INSPECT try now to be a little smarter regarding symbols. The generic behavior implemented in 'cl-ilisp.lisp' should be ok for many CL implementations (it works beautifully with CMUCL), but it may need some tuning for other ones. =============================================================================== Version 5.9.3 Fixes and enhancements since 5.9.1. -- Better treatment of CLisp. -- The #\Space (?Space) key is now bound to the ILISP-ARGLIST-MESSAGE-LISP-SPACE function. In an ILISP buffer it will give you the arglist associated with a function you are about to type in. The main bug list of 5.9.1 is still in place. =============================================================================== Version 5.9.2 Fixes and enhancements since 5.9.1. 5.9.2 is mainly a bug fix releases with some simple bugs fixed. The main bug list of 5.9.1 is still in place. =============================================================================== Version 5.9.1 Fixes and enhancements since 5.9 -- Documentation fixed. -- Wrong symlink in 'extra' directory fixed. -- Hopefully fixed most problems with 'ilisp-*-binary-extension's. Not perfect, but it should work now thanks to Hannu Koivisto. See file 'ilisp-cl.el'. -- README.CL-HS file removed from distribution. -- ild.mail file removed from distribution. -- Slightly changed 'Welcome' file. -- Many buglets fixed. Known Bugs -- When using different implementations within the same session of (X)Emacs, it may happen that the by switching from one to the other in sequence, some settings are not cleared correctly. This bug has been reported by Hannu Koivisto using CLisp and CMUCL. -- Multiprocessing handling is not up to par to Franz ELI interface when using Allegro. Similar problems may appear in Harlequin Lispworks and Liquid and in the experimental versions of CMUCL floating around. =============================================================================== Version 5.9 The major change in this release concerns the new Home for ILISP at CONS.ORG. Fixes and enhancements since 5.8 alpha -- Changed behavior of package definitions in buffers thanks to Martin Atzmueller. Now (DEFPACKAGE "ZUT" ...) (IN-PACKAGE "ZUT") works as expected/desired. -- New Menus (thanks to Martin Atzmueller). -- Major Change for toplevel dialect: it is now called 'common-lisp' (it used to be 'clisp'). Note however, that for the time being, the name of the CLISP dialect remains 'clisp-hs'. -- Many bug fixes to CLISP dialect. -- The 'hyperspec' package and new 'ilisp-easy-menus' are distributed with ILISP. They are not loaded by default. -- Fixed loading of compatibility files for Emacs 20.xx. -- Fixed compilation and loading of 'ilisp-chs'. -- Fixed missing EXCL::FN_SYMDEF in ACL 5.0 (Larry Hunter) -- ILD Debugger interface by J. M. Siskind has been integrated in the dialect definitions. Please report any problems you may have with it. -- Changed default binding for 'clisp-hs-program' form "clisp" to "clisp -I" to account for buffer flushing behavior of this implementation. -- Added several Scheme dialects (thanks to Christian Lynbech). =============================================================================== 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://xcf.berkeley.edu/~jmacd/prcs.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-. -- 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.