MetalsはScalametaのサブプロジェクトとして開発されているScala用のLanguage Serverで、Visual Studio CodeやAtom、Vim、EmacsなどのテキストエディタでScalaプログラミングを行う際にIDEのような機能を利用できるようにするものです。
コード補完などの機能が実装されたMetals 0.5.0がリリースされたとのことなので早速試してみました。エディタとしては、フル機能は使用できないようですが普段使っているAtomを使ってみました。
セットアップは簡単で、Atomのパッケージマネージャで「ide-scala」パッケージをインストールするだけです(環境変数JAVA_HOMEが設定されている必要があります)。他にもいくつか必要なパッケージがありますが自動的にインストールされます。Visual Studio Codeでも同様に簡単にインストールできるようです。
パッケージの設定画面で使用するMetalsのバージョンを指定できます。
パッケージをインストール後、build.sbt
があるディレクトリを開くとプロジェクトをインポートするかどうかを確認するダイアログが表示されます。Metalsは直接sbtを実行するのではなくBloopを使っているようです。Bloopについては以前ブログを書きました。
インポートされない場合はコマンドパレットから「Metals: Import Build」というコマンドを実行すると強制的に再インポートを行うことができます。そこそこ時間がかかりますが、インポートが終わるとMetalsが提供する機能を利用できるようになります。
コンパイルエラーはエディタ上に表示されますし、CTRL + クリックでコードジャンプも可能です。
ScaladocやJavadoc、メソッド定義などの情報をホバー表示することもできます。
コード補完もちゃんと効きます。Visual Studio Codeだとパラメータヒントも表示されるようです。ただ、IntelliJのように同時にimport文を付け足してくれたりするような便利補完機能はないです。import文を再編成する機能もまだありません。
なお、プロジェクトには.metals
と.bloop
というディレクトリが作成されるので、.gitignore
に追加しておくとよいでしょう。
Bloopを使っているのでsbtプラグインに依存するプロジェクトだと問題があったり、機能面でもIntelliJの代わりに使うにはまだまだ厳しい感じがありますが、Ensimeの開発が止まってしまったのでテキストエディタを使ってScalaを書きたいという方には期待のプロジェクトでしょう。個人的にはEmacsでも試してみたいところです。