Bill Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

February 2004
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29
Jan  Mar

New Alternatives for Developing CL code with Emacs

Sunday, February 29, 2004

Until recently, if you were developing CL code with Emacs, you had the following three options:

  1. Inferior Lisp Mode (ILM)
  2. ILISP
  3. ELI
These 3 (with their pros/cons) are covered in my ILC2003 paper " Using Emacs as a Lisp IDE". However, two new options have recently become available:Neither of these have instructions for usage with MS Windows; however, I was able to get both of them working with just a little bit of work (specifics are listed below). In both instances, I used CLISP 2.32 as the Lisp implementation.

Here are some first impressions of VLS: On the whole, I would say that I would prefer ELI or ILISP over VLS at this stage. If you can't use ELI (because your CL implementation isn't supported) and you don't like ILISP, then VLS is something you might want to consider in order to enhance basic ILM functionality.

Here are some first impressions of SLIME: When I first heard about work being done on SLIME a few months back, I was a bit of a naysayer. At the time, I felt that the effort would have been better spent in improving either ELI or ILISP. However, having seen how far the SLIME'ers have come in such a short amount of time, I must admit that I'm very impressed. I look forward to seeing how SLIME progresses in the future.

Special installation instructions for MS Windows:

Here are the mods that I had to make to my .emacs file to set up VLS and SLIME (anyone trying to copy this code will need to adjust the directory locations):
;;__________________________________________________________________________
;;;; VLS

(setq load-path (append (list (concat use-home "site/vls/elisp")
			      (concat use-home "site/vls/types")
			      (concat use-home "site/vls/types/elisp"))
                        load-path))

;; List of shells for vlsc command. (setq vlsc-shells '((clisp "~/lisp/clisp.bat" "~/site/vls/types/clisp.el"))) (require 'vls)

;;__________________________________________________________________________
;;;; SLIME

(setq load-path (append (list (concat use-home "site/slime"))
                        load-path))
(require 'slime)
(add-hook 'lisp-mode-hook (lambda () (slime-mode t)))
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(setq inferior-lisp-program "c:/bin/clisp-2.32/full/lisp.exe
                                -B c:/bin/clisp-2.32/full/
                                -M c:/bin/clisp-2.32/full/lispinit.mem
                                -ansi -q")
For VLS, (since there are only make files for installation on Unix systems) I had to manually byte-compile the elisp files in the vls/elisp, vls/types, and vls/types/elisp directories and set up a batch file to call CLISP.

For SLIME, I didn't have to do anything special; however, I did download the "fairly-stable" CVS version of the code rather than the latest CVS version. I also read the implementation tips and how-to instructions available off the SLIME CLiki page. (Note: I also tried the latest CVS version but had a number of issues. Reading the latest slime-devel postings, it appeared that others were also experiencing problems with CLISP and the latest CVS code, so I decided to do my testing with the "fairly-stable" version.)

emacs Copyright © 2005 by Bill Clementson