slime.markdown 3.87 KB
Newer Older
1 2 3
SLIME
=====

4 5 6
    Author:   Mark Evenson 
    Created:  16-MAR-2010
    Modified: 18-MAR-2010
7 8 9 10 11 12 13 14

SLIME is divided conceptually in two parts: the "swank" server process
which runs in the native Lisp and the "slime" client process running
in Emacs Lisp.  These instructions were were written to accompany
ABCL, but there is nothing ABCL specific in the instructions

## Obtaining SLIME

15 16 17 18 19
SLIME does not follow a release process in the standard sense with
centrally versioned releases, so you are best off with obtaining the
[latest version from CVS][1]. [Daily snapshots as gzipped tarballs are also available][2].
Your local OS packaging system (i.e. MacPorts on OSX) may have a
version as well.
20 21 22 23 24 25 26 27

[1]: http://common-lisp.net/project/slime/#downloading
[2]: http://common-lisp.net/project/slime/snapshots/slime-current.tgz

## Starting SLIME

One first locates the SLIME directory on the filesystem.  In the code
that follows, the SLIME top level directory is assumed to be
28
`"~/work/slime"`, so adjust this value to your local value as you see
29 30 31 32 33
fit.

Then one configures Emacs with the proper initialization hooks by
adding code something like the following to "~/.emacs":

34
    :::common-lisp
35 36 37 38 39 40 41
    (add-to-list 'load-path "~/work/slime")
    (setq slime-lisp-implementations 
      '((abcl ("~/work/abcl/abcl"))
        (abcl.svn ("~/work/abcl.svn/abcl"))
        (sbcl ("/opt/local/bin/sbcl"))))
    (require 'slime)
    (slime-setup '(slime-fancy slime-asdf slime-banner))
42 43

One further need to customize the setting of
44
`SLIME-LISP-IMPLEMENTATIONS` to the location(s) of the Lisp(s) you wish to
45 46 47 48 49
invoke via SLIME.  The value is list of lists of the form

   (SYMBOL ("/path/to/lisp"))

where SYMBOL is a mnemonic for the Lisp implementation, and the string
50
`"/path/to/lisp"` is the absolute path of the Lisp implementation that
51 52 53
SLIME will associate with this symbol.  In the example above, I have
defined three implementations, the main abcl implementation, a version
that corresponds to the latest version from SVN invoked by
54
`"~/work/abcl.svn/abcl"`, and a version of SBCL.
55

56
To start SLIME one simply issues `M-x slime` from Emacs.  This will
57
start the first entry in the SLIME-LISP-IMPLEMENTATIONS list.  If you
58 59 60 61
wish to start a subsequent Lisp, prefix the Emacs invocation with a
negative argument (i.e. `C-- M-x slime`).  This will present an
interactive chooser over all symbols contained in
`SLIME-LISP-IMPLEMENTATIONS`.
62 63

After you invoke SLIME, you'll see a buffer open up named
64
`*inferior-lisp*` where the Lisp image is started up, the required swank
65
code is complied and then loaded, finally, you'll see the "flying
66
letters" resolving itself to a `"CL-USER>"` prompt with an inspiration
67 68 69 70 71 72 73 74 75 76
message in the minibuffer.  Your initiation to SLIME has begun...


## Starting swank on its own

In debugging, one may wish to start the swank server by itself without
connection to Emacs.  The following code will both load and start the swank server
from a Lisp image.  One merely needs to change *SLIME-DIRECTORY* to
point to the top directory of the server process.

77
    :::commmon-lisp
78 79 80 81 82
    (defvar *slime-directory* #p"~/work/slime/") ;; Don't forget trailing slash
    (load (merge-pathnames "swank-loader.lisp" *slime-directory*) :verbose t)
    (swank-loader:init)
    (swank:start-server "/tmp/swank.port") ;; remove if you don't want
                                          ;; swank to start listening for connections.
83

84
When this code finishes executing, an integer representing the port on
85 86 87
which the server starts will be written to `'/tmp/swank.port'` and also
returned as the result of evaluating `SWANK:START-SERVER`.  One may
connect to this port via issuing `M-x slime-connect` in Emacs.
88

89 90 91 92
## M$FT Windows

See <http://slack.net/~evenson/abcl/slime-under-cygwin.html> for
instructions specific to installing SLIME under Windows.
93

94 95 96 97 98
### Historivia

Luke Gorrie inherited a server implementation known as "Skank" which
he rejected on the grounds of pure taste.