There was some interest at ILC2003 in getting started using Hemlock. So, here are quick-start instructions:
  • Install CMUCL from the tarballs on, including the extras tarball.
  • Start CMUCL, and (require :hemlock)
  • If you are using an oldish CMUCL (from before summer 2002), load the patch needed to Make Old CMUCL CLX Work With Magic Cookies.
  • Save a core with Hemlock loaded, (save-lisp "hemlock.core")
  • Copy the lisp.core file that came with the distribution, and replace the original with your new hemlock.core.
  • Start CMUCL again, type (ed), and you should see Hemlock!
Important: get a copy of the Hemlock Users Manual. Glance through the beginning, then read the chapters "Editing Lisp", and "Interacting With Lisp".

If instead of dumping a core with Hemlock loaded, you just (require :hemlock), then (ed), you may notice a problem when using Hemlock as an IDE. The editor works fine, but when you try evaluating a Lisp form, you get an error message telling you that the eval server died. This is because Hemlock uses one CMUCL image to run itself, and one (or more) CMUCL images that it runs as slave eval servers. This has the advantage that if you try to eval (loop), your editor didn't just lock up. However, it also means that Hemlock needs to know how to run a copy of CMUCL with itself already loaded. If you want to run CMUCL with a command other than lisp (like, say, cmucl), and/or if you do not want to use hemlock.core as your default core file, you'll need to customize the Hemlock variables Slave Utility and Slave Utility Switches. For example, if I run CMUCL with the cmucl command, and I have my hemlock core in /home/tfb/hemlock.core, I would do the following:

At the shell prompt:

$ cmucl -core /home/tfb/hemlock.core
CMU Common Lisp 18d, running on firestorm.OCF.Berkeley.EDU
Send questions to cmucl dash help at cons dot org. and bug reports to
cmucl dash imp at cons dot org.
Loaded subsystems:
    Python 1.0, target SPARCstation/Solaris 2
    CLOS based on PCL version:  September 16 92 PCL (f)
    CLX X Library MIT R5.02
    Hemlock 3.5
* (ed)

In Hemlock:
M-x Set Variable (return) Slave Utility (return) "cmucl" (return)
M-x Set Variable (return) Slave Utility Switches (return) (list "-core" "/home/tfb/hemlock.core") (return)

Another way to do solve the problem with loading hemlock for the slaves is to put the following in your .cmucl-init.lisp (or site-init):

(flet ((in-cmdline (word) (member word *command-line-strings* :test #'string=))) (when (or (in-cmdline "-edit") (in-cmdline "-slave")) (require :hemlock)))

Still having problems?

I created this page to help people try Hemlock out, without having to be experienced CMUCL'ers. If you tried following the directions here but you're still having problems, either post your questions here, or email Thomas F. Burdick (tfb at OCF dot Berkeley dot EDU).