4
votes

I'm trying to get Slime working with CDT and emacs 24, to no avail, and would appreciate suggestions.

1) I did get clojure-jack-in to run, but only when I loaded swank-clojure 1.3.3 as a lein plugin, as described in the github swank-clojure page, https://github.com/technomancy/swank-clojure.

2) I tried to get swank-clojure 1.4.0-SNAPSHOT loaded as described by George Jahad in http://georgejahad.com/clojure/swank-cdt.html (using Clojure 1.2.1), but I couldn't clojure-jack-in to run. I got the same error as described in 3), below.

3) Most recently, I tried duplicating the results of the short proof-of-concept video on the technomancy.us site, on the "in which radical simplification ensues," http://technomancy.us/149. In this method, I loaded swank-clojure 1.4.0-SNAPSHOT as a lein plugin and confirmed it was loaded to ~/.lein/plugins/swank-clojure-1.4.0-SNAPSHOT.jar. When I created a new lein project, did lein deps on it, opened the project's core.clj file in emacs, and then executed M-x clojure-jack-in, instead of getting a REPL, I got the following error in the emacs minibuffer:

error in process filter: Search failed: "(run-hooks 'slime-load-hook) ;
on port"

Note that the end of the error string does not include a port number. Unless that's an arbitrary truncation of a longer error string, the lack of a port number makes me uneasy.

The *swank* buffer is long, beginning with:

;;; Bootstrapping bundled version of SLIME; please wait...

and ending with:

(provide 'slime-repl)
;;; slime-repl.el ends here

(run-hooks 'slime-load-hook)
;;; proceed to jack in

which is consistent with the error message.

I've spent about six hours on this, including a lot of web searches, and no luck. Thanks for any help you can provide.


ADDENDUM: I've continued experimenting, and now the *swank* buffer ends like before (dying at the same place), but with additional lines at the end. FYI, here it is:

(provide 'slime-repl)
;;; slime-repl.el ends here

(run-hooks 'slime-load-hook)
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom
[WARNING] Overriding profile: 'null' (source: pom) with new instance from source: pom
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojars at http://clojars.org/repo/
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojars (http://clojars.org/repo/)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository stuartsierra-releases at http://stuartsierra.com/maven2
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository stuartsierra-releases (http://stuartsierra.com/maven2)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojure at http://build.clojure.org/releases
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojure (http://build.clojure.org/releases)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojure-snapshots at http://build.clojure.org/snapshots
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository clojure-snapshots (http://build.clojure.org/snapshots)
Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository central at http://repo1.maven.org/maven2
Unable to locate resource in repository
[INFO] Unable to find resource 'org.clojure:clojure:pom:1.+' in repository central (http://repo1.maven.org/maven2)
Copying 9 files to /Users/gw/tech/clojurestuff/cljprojects/infwb/lib
Copying 1 file to /Users/gw/tech/clojurestuff/cljprojects/infwb/lib/dev
Listening for transport dt_socket at address: 61012
;;; proceed to jack in

(end of addendum)


ADDENDUM 2 (Dec. 12, 2011) Thanks to all who offered help, especially @ivant, to whom I'm awarding the "check mark." I'm going to consider this situation closed because I've given up trying to fix it. It was complicated by my use of a prepackaged initialization package that I'm sure is quite nice, but I couldn't understand what it was doing, nor whether it was contributing to the problem.

I restarted with a "clean" Emacs 24 and reverted to swank-clojure 1.3.3, and clojure-jack-in works just fine now. I'll try CDT later, once the bug logged to swank-clojure 1.4.0-SNAPSHOT is resolved.

I learned a few things from people's comments--thanks again.

3
You can try using emacs starter kit to initialize emacs.ivant

3 Answers

2
votes

N.B. I don't have neither emacs 24, nor CDT installed.

Looking at the code of clojure-jack-in, it looks like it chooses a port beforehand, and starts clojure using lein jack-in <port> (unless you redefined clojure-swank-command somewhere).

It then parses the output (which is visible in the *swank* buffer) looking for specific strings to trigger some actions. These are:

 ;;; Bootstrapping bundled version of SLIME
 ...
 ;;; Done bootstrapping.

or as a fallback:

 ;;; Bootstrapping bundled version of SLIME
 ...
 (run-hooks 'slime-load-hook) ; on port

and it executes the emacs commands between these lines. The string "proceed to jack in" triggers the actual connect.

So check the source, check the values of some relevant variables (like clojure-swank-command) and check what's in the *swank* buffer for clues.

EDIT

You may want to run lein deps in your project, brfore trying M-x clojure-jack-in, otherwise output like

Downloading: org/clojure/clojure/1.+/clojure-1.+.pom from repository clojars at http://clojars.org/repo/
...

can end up in the *swank* buffer and can interfere with the starting process.

But this specific dependency looks quite suspicious to me. Can you post your project.clj file as well?

0
votes

I don't have an answer, although I've hit this same problem, but I can provide a work around.

Just run lein swank from the commandline and use slime-connect inside Emacs, and you'll at least have a working environment again.

This has also been filed on the swank-clojure bug list: https://github.com/technomancy/swank-clojure/issues/87

0
votes

Upgrade to swank-clojure 1.4.0 (released yesterday) and everything will just work out of the box. lein plugin install swank-clojure 1.4.0

CDT installation and integration are now completely automated. Make sure to remove any old copies of swank-clojure, slime.el and slime-repl.el you have lying around. Just to be safe, also make sure you've got the latest clojure-mode.el installed.