- leiningen = rubygems + bundler
- clojars.org = rubygems.org
- nailgun = SWANK
- vimclojure = SLIME
Clojure + Leiningen
leiningen入れるとclojureも入る。
% curl -O https://raw.github.com/technomancy/leiningen/stable/bin/lein
% chmod +x lein
% lein repl
Using JLine for console I/O; install rlwrap for optimum experience.
REPL started; server listening on localhost:29973.
rlwrap入れたほうが良いと出るので入れる。
% brew install rlwrap
% lein repl
REPL started; server listening on localhost:58951.
user=> 1234
1234
user=> (+ 1 2)
3
user=> (exit)
うん。
VimClojure
vimの場合はVimClojureというのが定番ぽい。VimClojureはSyntax Highlightingとかだけでも使えるんだけど、NailgunというCLで言えばSWANK的なものへのインターフェースが同伴されていて、clojureファイルを開くと同時にNailgun Serverに接続することが出来る。
Nailgun ServerもClientも別個にインストールする必要がある。
% vi ~/.vimrc
Bundle 'VimClojure'
let vimclojure#WantNailgun = 1
let vimclojure#NailgunClient = "ng"
:BundleInstall
Nailgun Client
% brew install nailgun
ngコマンドが使えるようになる。(上記のNailgunClientで指定してるのがコレ)
Nailgun Server
% lein plugin install org.clojars.autre/lein-vimclojure 1.0.0
lein plugin install xxx versionはleinのプラグインをインストールするのであって、ライブラリを入れてる訳じゃない。両方共clojars.orgにホストされてるので混同しないようにする。(依存ライブラリはproject.cljに書いて後述するlein depsで入れる)
lein helpするとlein vimclojureというサブコマンドが増えてる。
helloworld
% lein new helloworld
% cd helloworld
% tree
.
├── README
├── classes
├── lib
├── project.clj
├── src
│ └── helloworld
│ └── core.clj
└── test
└── helloworld
└── test
└── core.clj
% lein deps
project.cljに書かれてるライブラリ(clojure処理系自身を含む)を取ってきてlibに入れてくれる。
% lein vimclojure
NGServer started on 127.0.0.1, port 2113.
% vi src/helloworld/core.clj
あとはreplが開いてSLIMEみたいに評価できる。