Table of Contents
This document explains how to install and use ILISP ("a generalized (X)Emacs interface to an underlying Lisp system") with OpenMCL.
Emacs and/or XEmacs installed under LinuxPPC. Most LinuxPPC distributions have packages available for both emacs variants. In many cases, these packages will install a version of ILISP (along with many other emacs utilities and extensions); the version that's installed is probably a little older than the current version and is probably missing support for OpenMCL.=
ilisp-5.11.tar.gz. This seems to be the current release as of 23 Jun 2001.
ilisp-5.11+openmcl.patch. A patch file to add support for OpenMCL to ILISP-5.11.
OpenMCL 0.4 or later. See http://openmcl.clozure.com for information about obtaining the latest version of OpenMCL.
There are a number of different ways to install [X]Emacs extensions; the discussion below will assume that ILISP's files are to be installed in a subdirectory of the user's home directory. On multiuser systems (or systems with shared filesystems), it might be preferable to install the package in some global location (perhaps [X]Emacs's "site-lisp" directory); note that it's often a bad idea to overwrite files that're installed as part of an [X]Emacs package (by "rpm" or "dpkg" or some similar tool), since doing so can confuse package-management tools.
To simplify things, this also assumes that you're using at most one of XEmacs and GNU Emacs; if you want to be able to use ILISP from either variant, you may need to create duplicate sets of .elc files for each editor
Obtain "ilisp-5.11.tar.gz" and "ilisp-5.11+openmcl.patch"; move both files to your home directory.
Uncompress and extract the contents of ilisp-5.11.tar.gz:
>cd > tar foxvz ilisp-5.11.tar.gz > cd ilisp-5.11 > patch < ../ilisp-5.11+openmcl.patch
The “patch” command should produce the following output, and shouldn't produce any warnings or errors:
patching file `Makefile' patching file `cl-ilisp.lisp' patching file `ilisp-dia.el' patching file `ilisp-mak.el' patching file `ilisp-openmcl.el' patching file `ilisp.el' patching file `openmcl.lisp'
Read the INSTALLATION file in the ilisp-5.11 directory; if applicable, edit the Makefile as needed. If you're impatient, you can do:
> make EMACS=xemacs # for xemacs, or: > make # for emacs (the default).
This should compile a few dozen .el files; xemacs seems to generate more warnings than emacs does, but none of them seemto be serious (or even interesting ...)
If you have the necessary tools (texinfo, tex, ...) installed, cd to the "docs" subdirectory and do a "make" there.
Modify your ˜/.emacs file so that the directory containing the ilisp-5.11 files is on [x]emacs's load path and so that the emacs function (openmcl) will run openmcl under ILISP. At a minimum, this would involve adding something like:
(setq load-path (cons (expand-file-name "~/ilisp-5.11/") load-path)) (autoload 'openmcl "ilisp" "Inferior Open MCL" t) ;; See the file "ilisp-5.11/ilisp.emacs" for ;; examples of other customization settings ;; that affect ILISP. Some recent ;; versions of XEmacs can be configured to ;; use a ~/.xemac/init.el file ;; instead of ~/.emacs
With those .emacs settings in place (you may need to quit and restart [X]Emacs, or otherwise cause those additions to be evaluated), do:
M-x openmcl
This should run OpenMCL inside an emacs buffer (and make a lot of - hopefully useful - key bindings and other behavior available.)
If you aren't familiar with ILISP in general, you may wish to view the online documentation; if you weren't able to build a local copy in the "docs" subdirectory, the User Manual is available at:
http://ilisp.cons.org/doc/ilisp.html.
If "M-x openmcl" worked, you should do:
M-x ilisp-compile-inits
to compile the lisp components of ILISP.
Both ILISP and OpenMCL can deadlock (get into states where they're each waiting for the other to provide input.)
If enough ^Cs and ^Gs don't get ILISP and the lisp back in synch with each other, M-x repair-ilisp often seems to work.
As distributed, OpenMCL is compiled with *SAVE-LOCAL-SYMBOLS* (and *FASL-SAVE-LOCAL-SYMBOLS*) set to NIL; as a consequence, the ARGLIST function doesn't know the names of non-keyword arguments and generates GENYSMs ("arg-0", "arg-1", etc.) for functions that weren't compiled to save local-symbol information.
If you want to generate a heap image in which all functions have local-symbol information (which is also available to BACKTRACE), do:
? (setq *fasl-save-local-symbols* t) T ? (xcompile-ccl t) ; Recompile everything ... ? (xload-level-0 :force) ; Recompile all of level-0, make a new ppc-boot ... ? (quit) % cd ccl % ./ppccl ppc-boot ;Loading ... ... ;Loading ? (save-application "PPCCL")
The resulting image seems to be about 5/4 the size of a PPCCL without local symbols.
ILISP can optionally interface to the underlying Lisp's debugger; there isn't too much of a debugger in OpenMCL yet, and I didn't even try to support this. (There's even less of an INSPECT in OpenMCL, so the same applies ...)
The things that ARE supported seem to work reliably.
Ideally, we'll be able to test this for a while, fix and enhance whatever seems to need fixing and enhancing most, and try to get the OpenMCL support incorporated into the main ILISP distribution.
Thanks to Hamilton Link for his work in getting ILISP running under OpenMCL. I hope that having ILISP support will make OpenMCL easier to use, explore and enhance.