While Emacs support has come a long way since I first got started with Clojure, I'm reminded every time I help newbies get set up that there are still way too many moving parts. This is in part due to the fact that things center around SLIME, a tool which was originally developed to work with Common Lisp. SLIME doesn't have stable releases; the developers expect everyone to run from CVS trunk (I wish I were joking), so I had to do some ad-hoc packaging just in order to prevent constant breakage. But synchronizing compatible versions between two separate package managers on two separate runtimes is a headache.

I've cooked up something much simpler for the next swank-clojure release:

[download video]

This makes it possible for a single piece of elisp to bootstrap an entire SLIME environment. It's also set up so it can be extensible—if a project like Slamhound wants to distribute an elisp library, it will be able to be loaded automatically upon connecting SLIME. The number of steps is reduced to three:

Install clojure-mode via Marmalade or from git. lein plugin install swank-clojure 1.3.1 Invoke M-x clojure-jack-in from a project

The video uses swank-clojure 1.4.0-SNAPSHOT, which includes some new debugging features, but the most stable release (1.3.1 as noted above) will also work. Hopefully this eases a few headaches!

Update: Right now there are known issues with having multiple versions of swank-clojure present, both in lib/dev and ~/.lein/plugins , so check to make sure they aren't conflicting. This will be fixed in the next version of Leiningen. It's probably best to remove swank-clojure from :dev-dependencies in project.clj entirely and have each user who wants to use swank install it as a local plugin instead.

Update: swank-clojure is now deprecated; you are encouraged to use nrepl.el instead, which is much simpler to install and use.

If you have issues, please post to the swank-clojure mailing list or open a github issue. Blog comments are a lousy place for bug reports.

๛