はじめに
この記事ではEmacsのEnsimeのインストール手順を紹介します。使い方などについては公式のドキュメントを参照していただければと思います。私もインストールしたばかりで、ほとんど使ってはいませんが、リファクタリングツールやデバッガーがあるようです。
前準備
OS環境
この記事ではVagrantboxの'ubuntu/trusty64'を使います。Discover Vagrant Boxes Atlas by HashiCorpにあります。次のようなコマンドを実行して0S環境を導入しました。
$ mkdir ubuntu
$ cd ubuntu
$ vagrant add box ubuntu/trusty64
$ vagrant init
$ vagrant up # starts and provisions the vagrant environment
$ vagrant ssh
...
$ vagrant halt # stops the vagrant machine
Memory
多分、メモリ不足になります。2024程度のメモリを必要とします。ホストOSでVagrantfileを次のように編集しました。
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "ubuntu/trusty64"
config.vm.provider "virtualbox" do |v|
v.memory = 2024
end
Java, Scala, sbt
apt-getコマンドを使ってJavaを導入しました。ここでは導入方法を省略して、Javaのバージョンだけ記載します。
/vagrant $ java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)
/vagrant $ javac -version
javac 1.7.0_72
Scalaとsbtもapt-getコマンドを使って導入しました。Scalaのバージョンは2.9.2、sbtのバージョンは0.13.7です。
~/.emacs.d/init.el
まずはEmacsの設定ファイルを編集します。
(setenv "JDK_HOME" "/usr/lib/jvm/java-1.7.0-openjdk-amd64")
(setenv "JAVA_HOME" "/usr/lib/jvm/java-1.7.0-openjdk-amd64")
(require 'ensime)
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
~/.sbt/0.13/plugins/plugins.sbt
次にsbtファイルを編集します。プラグインをインストールするための設定ファイルだと思います。普通、sbtファイルにはビルド定義がありますが、これはプラグインを導入するためのファイルだと思います。
resolvers += Resolver.sonatypeRepo("snapshots")
addSbtPlugin("org.ensime" % "ensime-sbt" % "0.1.5-SNAPSHOT")
この内容を理解するためには、sbtのドキュメントが必要だと思います。次のURLのドキュメントを参照しました。
プラグインが本当にあるか?そういう疑問を解決するために、次のURLを参照しました。
- sbt Reference Manual — Resolvers
- Index of repositories snapshots org ensime ensime-sbt_2.10_0.13 0.1.5-SNAPSHOT
scala-mode2
Emacsのパッケージ管理を使ってscala-mode2を導入しました。
M-x package-install
scala-mode2
Ensime
Emacsのパッケージ管理を使ってEnsimeを導入しました。
M-x package-install
ensime
project-name/.ensime
プロジェクトのルートディレクトリに.ensimeファイルを用意します。このファイルは自動生成することができます。次のようにコマンドを実行して、sbtを使って.ensimeを自動生成します。
$ cd project-name
$ sbt
...
> gen-ensime
> exit
使ってみよう
プロジェクトのソースファイルを開き、次のようにタイプします。
M-x ensime
F1 b
でキーバインドを確認して、適当に遊んでみましょう!
一応、C-c C-b c
は動いているようです。
あとがき
下記のURLを参照して、sbtを使ったことがない場合、このプラグインを導入することは難しいかもしれないと気付きました。
ほかにもたくさんの記事を参照しましたが、細かい手順が欠けていて、どこのファイルを編集するのか?どうやって.ensimeを自動生成するのか?といったところが分かりませんでした。
この記事で少しでもEnsimeの導入が楽になれば幸いです。また、私が間違えた内容を記載してしまっている可能性があります。間違いに気付きましたら、編集リクエストやコメントで教えていただけるとありがたいです。