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:

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:

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.