ざる魂

真似ぶ魂、学ぶの本質。知られざる我が魂

swank-clojureの後継モジュールのnREPLを試してみた

いつのまにかswank-clojureが非推奨になり、代わりにnREPLというものが推奨されていた。

This project is no longer under active development.

New users are strongly encouraged to try out nrepl.el instead. If you
need an advanced debugger, Ritz might be a better fit.

超意訳。「swank-clojureは全然活動してないから、新規のユーザはnrepl.elを強く推奨する。 もしイケテるデバッガが欲しいならRitzがいいかもYO!。」

ということで、el-getでレシピに下記を追加して nrepl.el をインストール。

 (:name nrepl
  :type github
  :pkgname "kingtim/nrepl.el"
 )

lein2.0 で適当にプロジェクトをつくって、 project.clj に下記を追加。

  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.clojure/tools.nrepl "0.2.0-beta9" ]]

最後に M-x nrepl-jack-in すると、nREPL-Server が起動して、nREPLが起動する。

キーバインドはほとんどSLIMEと同様だし、SLIMEの下記の特徴も実現してるので、これは本格的に移行できる雰囲気。

  • シンボルの補完(TABで補完できる)
  • 関数の引数表示(シンボルを打ちこむとミニバッファに自動表示)

ただSLIMEを常用してきたわけではないので足りない機能もまだありそうだけど。 たとえば、

  • REPL上でエラーが発生してもデバッガが起動しない(例外が表示されるだけ)
  • nREPLとは直接関係ないけど、auto-complte.elに対応するモジュール(ac-slime)がない。
  • HyperSpecのようなドキュメントシステムは?(doc関数ががあるからいらないか)

ちなみに下記の記事を読むと、nREPL開発に至る経緯がある。

clojureでSLIMEを使用する場合、最新のバージョンだと動かなかったりするので、 環境構築に苦労したけど、専用のSLIME代替モジュールができたおかげで環境構築が楽になりますな。

nREPLは、まだまだできたばかりのプロジェクトだけれども、 SLIMEの呪縛から解き放たれた期待のプロジェクト。 積極的に使っていきたい。