views:

231

answers:

1

It seems that whenever I disconnect from clojure slime session, I cannot reconnect again. I am using leiningen to start the swank session (with lein-swank plugin). So, every time I quit emacs (I know I shouldn't) or reboot/logout I have to restart both slime and swank. Is there a way to re-connect to a slime/clojure-swank session?

+5  A: 

Yes, but you have to tell swank not to close the connection:

lein swank 4005 "localhost" :dont-close true

Note that you have to supply the port and host name if you want to pass the :dont-close true portion; 4005 and "localhost" are the default values.

In fact, this makes it possible to connect multiple REPLs to the same swank instance at the same time! Then you can type in (def foo :foo) in one Emacs and see foo evaluate to :foo in the other. :-)

Michał Marczyk
Doesn't seem to work for me. I get Wrong number of args passed to: swank$swank
Mad Wombat
Apparently this functionality was introduced in a commit to Leiningen (lein-swank resides in the main Leiningen repo) from 9 Feb *without* the `host` argument, then `host` was added on 21 Mar. Hopefully you're using the version which doesn't accept `host` -- try dropping it from the command line. If you're using a pre-9 Feb Leiningen, perhaps this might be a reason to upgrade!
Michał Marczyk
I am using whatever lein installed as a dependency (not sure, but it claims to be 1.1.0). When I remove "localhost" from the command I get the same error.
Mad Wombat
The solution seems to be to replace 1.1.0 lein-swank with 1.2.0-SNAPSHOT in the dev-dependencies. Then it takes all the mentioned arguments.
Mad Wombat