Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emacs (Cocoa Emacs) vs Aquamacs for running Clojure on Mac OS X

I used Aquamacs so far, and I need to install and run Clojure using SLIME. I googled to get some way to use Clojure on SLIME of Aquamacs, but without success.

Questions

  1. Is it possible to install Clojure on Aquamacs? Or, can you guess why Clojure on Aquamacs doesn't work?
  2. Is it normal that Emacs and Aquamacs can't share the same ELPA?
  3. Is it possible to use ELPA to install Conjure on Emacs/Aquamacs?
  4. I was told that one can use 'lein swank' to run as a server, do you know how to do that?

Sequences that I tried (and half succeeded)

I tried with Mac OS X Emacs, and by following the steps I could make it work. I mean, I could run Clojure with SLIME.

Emacs for Mac OS X

Step 1) Install ESK.

  • Git clone and copy all the files into the .emacs.d directory
  • Add the following code to .emacs and relaunch
    (when
        (load
         (expand-file-name "~/.emacs.d/package.el"))
      (package-initialize))

Step2) Install using ELPA

  • M-x package-list-packages to select packages
  • Install
    • clojure-mode, clojure-test-mode
    • slime, slime-repl
    • swank-clojure
  • M-x slime to install the clojure
  • Add the following code to .emacs and relaunch
;; clojure mode
(add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/clojure-mode-1.7.1")
(require 'clojure-mode-autoloads)
(add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/clojure-test-mode-1.4")
(require 'clojure-test-mode-autoloads)

;; slime
;(setq inferior-lisp-program "/Users/smcho/bin/clojure")
(add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/slime-20100404")
(require 'slime-autoloads)
(add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/slime-repl-20100404")
(require 'slime-repl-autoloads)

;; swank-clojure
(add-to-list 'load-path "/Users/smcho/.emacs.d/elpa/swank-clojure-1.1.0")
(require 'slime-repl-autoloads)

Aquamacs

Now I could use Clojure on Emacs, I tried the same(or very similar) method to run Clojure on Aquamacs once more.

Step 1) Install ESK for Aquamacs

  • Copy the files to ~/Library/Preference/Aquamacs Emacs
  • Modify "~/Library/Preferences/Aquamacs Emacs/Preferences.el" to add the following
(setq kitfiles-dir (concat (file-name-directory
                    (or (buffer-file-name) load-file-name)) "/aquamacs-emacs-starter-kit"))

; set up our various directories to load
(add-to-list 'load-path kitfiles-dir)  
(require 'init)

Step2) * Follow the same step as before to install all the (same) packages, but "M-x slime" gives me the following error message. "Symbol's function definition is void: define-slime-contrib"

ELPA

I tried to combine the packages from Emacs and Aquamacs, but they don't combine. I thought I could use the ELPA itself, not from the ESK to make it shared.

The result was not good, as ELPA couldn't download the swank-conjure package.

Success - Running Aquamacs/Clojure with 'lein swank'.

Please refer to this.

like image 211
prosseek Avatar asked Jul 16 '10 03:07

prosseek


3 Answers

Aquamacs most definitely works with Clojure, since the author of Clojure uses it. However, I use Emacs, and after you perform the steps above in the Emacs section, I recommend checking out labrepl,

http://github.com/relevance/labrepl

If you don't have leiningen, the link to get and install it is in the instructions of the labrepl readme file. I found it extremely helpful when first learning how to set up an environment for Clojure programming. You can take apart the project.clj file in labrepl and piece together how it works pretty easily. Not to mention the lessons and training in the built in web application that comes with labrepl.

If you want to use lein swank instead:

Make sure you have leiningen installed. In your project.clj dev dependencies you want to have an entry like this:

[leiningen/lein-swank "1.1.0"]

http://clojars.org/leiningen/lein-swank

Then after you've done lein deps you should be able to run lein swank and then from within Emacs run M-x slime-connect and just press enter through the defaults.

If you're going to go this route, here is the link directly to leiningen so you can skip the labrepl repository: http://github.com/technomancy/leiningen

like image 129
Brandon Henry Avatar answered Sep 28 '22 05:09

Brandon Henry


I found this the easiest setup for the latest version of everything. Here's a quick summary where I"m assuming you have leiningen installed.

Install the swank-clojure plugin

$ lein plugin install swank-clojure 1.3.2

Create your clojure project

$ lein new test-project
$ cd test-project
$ lein deps

Then open one of the clojure files from your project in emacs and run clojure-jack-in

M-x clojure-jack-in

You are now in a slime buffer with clojure and the dependencies for your project loaded.

like image 34
jshen Avatar answered Sep 28 '22 07:09

jshen


Paul Barry gives an lecture how to use Aquamacs and Clojure.

It's simple as you can add this code to the .emacs file,

(add-to-list 'load-path "~/clojure/clojure-mode")
(setq inferior-lisp-program "/Users/smcho/bin/clj")
(require 'clojure-mode)
(setq auto-mode-alist
  (cons '("\\.clj\\'" . clojure-mode)
     auto-mode-alist))
(add-hook 'clojure-mode-hook
  (lambda ()
     (define-key clojure-mode-map "\C-c\C-e" 'lisp-eval-last-sexp)))

I could run 'M-x clojure-mode', and C-c C-z for REPL.

And as is asked and answered in Running Clojure and other Lisp at the same time on Emacs, I could use both Clojure/Lisp on Aquamacs.

like image 44
prosseek Avatar answered Sep 28 '22 07:09

prosseek