Ubuntu 10.04 での Clojure + Emacs + Leiningen の環境構築

2011/12/29更新

時代遅れの手順になってしまいました。

Clojure+Emacsな開発環境を作る(late 2011) - λab's Blogを参照してください。




ネットブックUbuntu 10.04 を入れたので emacs から Clojure を使う手順を最初の最初から書いてみる。2ヶ月ぐらい前にやったインストール方法だとだめでした。

環境
Ubuntu Netbook Edition 10.04
GNU Emacs 23.1.50.1
機種 HP mini 2140
  • emacs をインストールする

emacs23とか22とかいろいろあるみたいですがよく分からないので最新っぽいのをインストール

$ sudo apt-get install emacs-snapshot
$ sudo apt-get install emacs-snapshot-el
$ sudo apt-get install anthy-el

ELPA(Emacs Lisp Package Archive) Installのemacs22の手順でやったが問題ないようだ。emacs の *scratch* バッファを開き (M-x buffer-menuで選択) 、以下をコピペ。

  (let ((buffer (url-retrieve-synchronously
	       "http://tromey.com/elpa/package-install.el")))
  (save-excursion
    (set-buffer buffer)
    (goto-char (point-min))
    (re-search-forward "^$" nil 'move)
    (eval-region (point) (point-max))
    (kill-buffer (current-buffer))))

コピペしたらC-jで評価してやると .emacs が更新される。
emacsを再起動させて M-x package-list-package をやると package一覧が出てくる。swank-clojureのところで i を押して x でインストール。何かエラーが表示されるが気にしなくていいそうです。slime や clojure-mode は選択しなくてもok.多分。

↑ここを参考にしてsunのjavaを入れておきました。openjdkの違いとかはよく知らないです。

  • Leiningen のインストール

今やClojureにはほぼ必須のLeiningenも入れておく。
http://github.com/technomancy/leiningen/raw/stable/bin/lein を実行権をつけて /usr/local/bin/ とかに置いておく。

$ wget http://github.com/technomancy/leiningen/raw/stable/bin/lein
$ sudo mv lein /usr/local/bin
$ sudo chmod +x /usr/local/bin/lein
$ lein self-install
  • 適当に新しいプロジェクトを作る
$ lein new emacs-test
Created new project in: emacs-test
$ cd emacs-test/
$ ls -l
合計 16
-rw-r--r-- 1 fatrow fatrow  120 2010-05-06 03:39 README
-rw-r--r-- 1 fatrow fatrow  173 2010-05-06 03:39 project.clj
drwxr-xr-x 3 fatrow fatrow 4096 2010-05-06 03:39 src
drwxr-xr-x 3 fatrow fatrow 4096 2010-05-06 03:39 test

project.clj に以下を追加。

(defproject emacs-test "1.0.0-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]]
  :dev-dependencies [[swank-clojure "1.2.1"]]) ;←追記

これがあると、emacsからREPLを使える。

  • ライブラリを取ってくる
$ lein deps
  • emacs からREPL を掴む。

ターミナル

$ lein swank
user=> Connection opened on local port  4005
#<ServerSocket ServerSocket[addr=localhost/127.0.0.1,port=0,localport=4005]>

emacs

M-x slime-connect
Host: 127.0.0.1
Port: 4005
Versions differ: nil (slime) vs. 20100404 (swank). Continue? (y or n) y

下記の方法はM-x package-list-package で swank-clojure をインストールした場合できるが、古いバージョンなので推奨されていない。

M-x swank-clojure-project
~/code/emacs-test

これで emacs の中に クラスパスが通った REPL が現れるはず!一回セットアップできたら後は快適です。

user> (use 'clojure.contrib.classpath 'clojure.contrib.pprint)
nil
user> (pprint (classpath))
(#<File /home/fatrow/code/emacs-test/test>
 #<File /home/fatrow/code/emacs-test/src>
 #<File /home/fatrow/code/emacs-test/classes>
 #<File /home/fatrow/code/emacs-test/lib/clojure-1.1.0.jar>
 #<File /home/fatrow/code/emacs-test/lib/clojure-contrib-1.1.0.jar>
 #<File /home/fatrow/code/emacs-test/lib/swank-clojure-1.2.0-20100502.112537-11.jar>)
nil
user> 

あと、これは作業の途中で適当にやったが必要ないと思う。

M-x slime

Clojureをインストールするかと聞かれるのでy


参考
swank-clojure github UsageとInstallationの項目
Leiningen github Installationの項目
ELPA(Emacs Lisp Package Archive) Install
HP mini 2140 で無線LANを使うための設定