ensimeで補完生活

追記(2010/09/05): ensimeは開発&変化のスピードが早く、ここに掲載されている設定ファイルはすでに一部が無効になっています。正しい設定ファイルの書き方はマニュアルを参照してください。


最近話題になってるemacs上のScala開発環境「ensime」をAndroidプロジェクトで試してみました。
どんな感じかっていうのは言葉よりも画像で見てもらったほうが早いでしょう。


補完してくれたり、


クラスの概要を表示したり、


コンパイルエラーの指摘なんかもしてくれます。

画像を見てもらってもわかるとおりandroidライブラリに対しても補完などが効きます。

インストール方法

http://aemon.com/file_dump/ensime_manual.html#tth_sEc2

事前にscala付属のscala-modeは設定しておいてください。


http://github.com/aemoncannon/ensime/downloads
からDLして展開して、Emacsの設定ファイルに以下を書けばOKです。(ENSIME_ROOTはensimeを展開したディレクトリ)

(require 'scala-mode)
(add-to-list 'auto-mode-alist '("\\.scala$" . scala-mode))
(add-to-list 'load-path "ENSIME_ROOT/elisp/")
(require 'ensime)
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
;; MINI HOWTO: open .scala file. Ensure bin/server.sh is executable. M-x ensime

設定ファイル作成

ensimeを使いたいプロジェクトのルートでM-x ensime-config-genを実行して、いくつかの設問に答えると設定ファイル(.ensime)を作ってくれます。
Androidプロジェクトの場合は生成された.ensimeファイルを編集して:dependency-jarsでandroid.jarを指定すると幸せになれます。

以下に.ensimeの例を上げておきます。

;; This config was generated using ensime-config-gen. Feel free to customize its contents manually. 
(
:server-root "/home/papamitra/opt/ensime/dist"

:project-package "org.papamitra.hogehoge"

:use-sbt t

:dependency-jars ("/home/papamitra/opt/android/platforms/android-1.6/android.jar")
)

:server-rootはensimeを展開したディレクトリを指定してください。

実行

M-x ensimeを実行すると.ensimeのありかを聞いてくるので、作成したファイルのパス(大抵デフォルトで表示されてます)を指定してやればよいです。


補完はTAB、クラス概要を参照はM-.です。ファイルを保存すると自動でコンパイルを実行してエラー箇所を色付けしてくれます。
他にもいろいろ機能がありますのでマニュアルを参照してください。

http://aemon.com/file_dump/ensime_manual.html