基本的には 公式のdevelopブランチのドキュメントに従う感じで。
SpacemacsのScala設定
scala-backendとして Ensimeを使う。Spacemacsでensimeをダウンロードし、Scala Layerでensimeを指定する。
dotspacemacs-configuration-layers
'(sql
markdown
;; 上のsqlやmarkdownみたいな感じで以下を追記
(scala :variables
scala-backend 'scala-ensime
scala-auto-start-backend t)
)
(defun dotspacemacs/user-init ()
;; melpaからのインストールはstable (安定版)を指定
(add-to-list 'configuration-layer-elpa-archives '("melpa-stable" . "stable.melpa.org/packages/"))
;; Scala backend
(add-to-list 'package-pinned-packages '(ensime . "melpa-stable"))
)
sbtインストール
(JDK8以上が必要だが、その案内もリンク先に書かれている)
Ensimeの準備
- ユーザディレクトリ直下にあるはずの
.sbtディレクトリから辿って、~/.sbt/1.0/plugins/plugins.sbtとなるようにplugins.sbtを作る -
plugins.sbtにはaddSbtPlugin("org.ensime" % "sbt-ensime" % "2.5.1")を書いとく - sbtを起動して
ensimeConfigコマンドを打つ - 完
.classファイルの取得?
設定しただけでは、他プロジェクトのパッケージをimportできないらしい。 object xxx is not a member of packageみたいなエラーが出る。
どうも .classファイルを作ると良いらしい?ターミナルを立ち上げ、プロジェクト直下で sbt test:compileすると解決した。
https://github.com/ensime/ensime-emacs/issues/236#issuecomment-138700317
定義ジャンプが一部壊れているっぽい
こちらで議論されているように、直接ジャンプできない部分がある。
https://github.com/syl20bnr/spacemacs/issues/7144
具体的には 関数が定義されたファイルをSpacemacsで開いていない場合。というのは議論にもコメントされていた。
Spacemacsで開く、というのは、つまりバッファとして存在するという意味 ( Space b bでバッファ一覧に存在する状態)
ちなみに、定義したファイルを開いていない状態でも、参照元から 関数ではなく その関数が定義されているオブジェクト自体に定義ジャンプすることはできる模様?