http://tentclube.blogspot.com/
I made a blog post on this a while ago, but I've simplified the process now. I'm still working on making it easier to deploy on different systems though. -Brent On Apr 7, 5:12 pm, Ævar Arnfjörð Bjarmason <ava...@gmail.com> wrote: > I stubbornly refuse to use ELPA. I keep my ~/.emacs and associated > libraries in Git[1][2] and don't like deviating from that with ELPA by > running the clojure code from an unversioned directory that isn't > automatically there when I set up my Emacs configuration from Git. > > I couldn't find any documentation for setting up Emacs + Clojure + > Swank without ELPA. What follows are the steps I had to do to get my > setup working so that I can use both SBCL and Clojure with SLIME. > > First checkout the needed clojure code into my ~/g/elisp library: > > git submodule add git://github.com/technomancy/slime.git slime > git submodule add git://github.com/technomancy/clojure-mode.git > clojure-mode > git submodule add git://github.com/jochu/swank-clojure.git swank-clojure > git submodule add git://github.com/richhickey/clojure.git clojure > git submodule add git://github.com/richhickey/clojure-contrib.git clojure > > Build clojure: > > cd clojure && ant > cd clojure-contrib && mvn package > > Add this in my ~/.emacs to load the libraries: > > (add-to-list 'load-path "~/g/elisp/clojure-mode") > (add-to-list 'load-path "~/g/elisp/swank-clojure") > (add-to-list 'load-path "~/g/elisp/slime") > (add-to-list 'load-path "~/g/elisp/slime/contrib") > > Add autoloads + massive hack to get all of this to work: > > (autoload 'clojure-mode "clojure-mode" nil t) > (autoload 'clojure-test-mode "clojure-test-mode" nil t) > (defvar package-activated-list nil "Hack: used in > `slime-changelog-date' but not defined anywhere") > (progn > (autoload 'swank-clojure-init "swank-clojure") > (autoload 'swank-clojure-slime-mode-hook "swank-clojure") > (autoload 'swank-clojure-cmd "swank-clojure") > (autoload 'swank-clojure-project "swank-clojure")) > > (setq clojure-src-root (expand-file-name "~/g/elisp")) > > ;; Java starves programs by default > (setq swank-clojure-extra-vm-args (list "-Xmx1024m")) > > This part is very suboptimal, it would be nice if swank-clojure had > better support for running out-of-Git so I wouldn't have to do > this. Maybe it does and I haven't found the relevant bits: > > (defun clojure-slime-config (&optional src-root) > "Hacky copy of slime-clojure's `clojure-slime-config' to do what I > want." > > (if src-root (setq clojure-src-root src-root)) > > (add-to-list 'load-path (concat clojure-src-root "/slime")) > (add-to-list 'load-path (concat clojure-src-root "/slime/contrib")) > (add-to-list 'load-path (concat clojure-src-root "/swank-clojure")) > > (require 'slime-autoloads) > > (slime-setup '(slime-fancy)) > > (setq swank-clojure-classpath > (list > (concat clojure-src-root "/clojure/clojure.jar") > ;; Hack: Expand the name of the .jar with some Emacs glob > function > (concat clojure-src-root > "/clojure-contrib/target/clojure-contrib-1.2.0-SNAPSHOT.jar") > (concat clojure-src-root "/swank-clojure/src") > (concat clojure-src-root "/clojure/test/clojure/test_clojure"))) > (eval-after-load 'slime > '(progn (require 'swank-clojure) > (setq slime-lisp-implementations > (cons `(clojure ,(swank-clojure-cmd) :init > swank-clojure-init) > (remove-if #'(lambda (x) (eq (car x) 'clojure)) > slime-lisp-implementations)))))) > > ;;; Setup clojure > (clojure-slime-config) > > Finally set it up to play nice so that I can do M-x run-sbcl or M-x > run-clojure to run Common Lisp or Clojure: > > ;;http://groups.google.com/group/clojure/browse_thread/thread/e70ac373b... > (eval-after-load 'slime > '(progn > (add-to-list 'slime-lisp-implementations > '(sbcl ("/usr/bin/sbcl"))))) > > (defun pre-slime () > "Stuff to do before SLIME runs" > (clojure-slime-config) > (slime-setup)) > > (defun run-clojure () > "Starts clojure in Slime" > (interactive) > (pre-slime) > (slime 'clojure)) > > (defun run-sbcl () > "Starts SBCL in Slime" > (interactive) > (pre-slime) > (slime 'sbcl)) > > Of course all of this was such a pain that I pretty much stopped there > and haven't actually /done/ anything with clojure aside from a Hello > World :) > > 1.http://github.com/avar/dotemacs > 2.http://github.com/avar/elisp -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en To unsubscribe, reply using "remove me" as the subject.