最強!?Ensimeを利用したSublime Text3のScala開発環境(playでもliftでも)


EnsimeはEmacsでScala開発環境を構築するときに使うことで有名ですが、実はSublime Textでも利用することが可能です。

Ensimeはコード補完だけではなく、文法エラー表示、import追加機能、クラスやメソッドへのコードジャンプ、デバッグ機能などもあり、より強力な開発環境を構築することが出来るようになります。

個人的にはテキストエディタで作るScala開発環境では今のところ最強に感じています。

今回の環境

  • Mac OS 10.9
  • Sublime Text 3 (Build3059を利用)
  • Scala 2.10.3
  • sbt 0.13.1
  • とりあえずplay2.2.1もインストールしておきました。

インストール手順

  1. Sublime Text3にEnsimeプラグインを追加
  2. Ensimeサーバーのインストール
  3. sbtにEnsimeプラグインを追加
  4. sbtコマンドによる.ensimeファイルの作成

1. Sublime Text3にEnsimeプラグインを追加

Package ControlからEnsimeを検索してインストールします。

2. Ensimeサーバーのインストール

こちらより、サーバーをダウンロードします(2014/3時点の最新であるensime_2.10.0-0.9.8.9.tar.gzを選択)。
解凍後、以下を実施。

$ cd ~/Library/Application Support/Sublime Text 3/Packages
$ mkdir -p Ensime/Server
$ cd Ensime/Server
$ mv (ダウンロード場所)/ensime_2.10.0-0.9.8.9/* .

3. sbtにEnsimeプラグインを追加

~/.sbt/0.13/pluginsにあるplugin.sbtに以下を追加します(ファイルがなければ作成)。

plugin.sbt
addSbtPlugin("org.ensime" % "ensime-sbt-cmd" % "0.1.2")

4. sbtコマンドによる.ensimeファイルの作成

サンプルとして、playアプリケーションで.ensimeファイルを作成します。

$ play new hello-play
$ cd hello-play
$ sbt
> ensime generate

クラスパスが通っているものについては全てコード補完が効くようになります。

実行

Sublime Text3を起動し、右クリックから[Ensime] - [Maintenance] - [Startup]を選択。

実行サンプル

自作のcase classも(もちろん別ファイルで定義されていても)、Scala標準Listの関数もPlayのクラスも問題なく補完が効きます。

うまく動かないときは

  • Ensimeのstartupを忘れている
  • .ensimeファイル作成時のsbt compileでコンパイルエラーが残ったまま
  • Sublime Text3のEnsimeプラグインを一度removeして再度インストールする
    • Consoleを見るとptyhonのエラーが出てうまく動いていない事がありましたが入れなおすことでうまく動くようになりました