10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Emacs + ENSIME でScalaの開発環境を作る

Last updated at Posted at 2017-01-29

Emacs + ENSIME

Windowsでは動かないScalaのコードがあって、VirtualBoxにLubuntuを入れ、そこにIntelliJをインストールしてScalaのコードを書いてきた。しかし、IntelliJの動作が重くてツラいのでEmacs + ENSIMEを試してみることにした。

scala-mode

githubのscala-mode2のページを見ると以下のようになっており、ENSIMEのdependenciesに含まれている為、別途インストールする必要は無くなっている。

Development of scala-mode2 has moved to https://github.com/ensime/emacs-scala-mode

Install

stable-mepla

stable-meplaをinit.elに以下を登録しておく。

~/.emacs.d/init.el
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)

use-package

Emacsにuse-packageをインストールしておく。

M-x package-install use-package

inits

init-loaderを使っているので、ENSIMEの設定は~/.emacs.d/inits/90-scala.elに書いておくことにした。

~/.emacs.d/inits/90-scala.el
(use-package ensime
  :ensure t
  :pin melpa-stable)

以上でEmacs起動時にENSIMEがインストールされる。

.ensimeファイルの作成

プロジェクトフォルダの直下に.ensimeファイルが必要になる。今回はこのファイルを生成する為に、sbt-ensimeプラグインを使う。sbt以下のビルドツールにも対応しているので、自分の好みのビルドツールのインストラクションに沿って作成する。

sbtのpluginsフォルダが無ければ作成する。

mkdir ~/.sbt/0.13/plugins

sbt-ensimeプラグインを利用する為に、以下のように記述する。

~/.sbt/0.13/plugins/plugins.sbt
addSbtPlugin("org.ensime" % "sbt-ensime" % "1.12.5")

あとは以下のコマンドを実行すれば、.ensimeファイルが作成される。

sbt ensimeConfig

ENSIMEの起動

.ensimeファイルを作成したプロジェクトフォルダに移動し、以下のコマンドでENSIMEを起動する。"ENSIME server starting..."と出た後に、"ENSIME ready."となればOK。

M-x ensime

また、C-c C-v sでsbtが起動するので、sbtの操作はそのバッファで行う。

Screenshot from 2017-01-30 00-34-37.png

その他

よく使うコマンド

  • C-c C-c e エラーを表示
  • C-c C-v r 呼び出し元を表示

参考

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?