vimでGroovyを書くためにLanguage Serverを設定したときにちょっと詰まったところがあったのでメモしておきます。
まずGroovyのインストール
macの場合です。Homebrewからインストールして適切にJAVA_HOMEを設定すればオッケーです。私の場合はHomebrewで入れたopenjdkが入ってたのでそちらに向けました。openjdk@11でも動くようです。
$ brew install groovy
$ export JAVA_HOME=$(/usr/libexec/java_home -v 13)
インストールできたらバージョンが表示できるはずです。
$ groovy -v
Groovy Version: 3.0.1 JVM: 13.0.2 Vendor: Oracle Corporation OS: Mac OS X
Groovy Language Serverのbuild
プラグインとしてvim-lspを使っているので各言語での設定が書いてあるwikiに従って設定します。今回はやってませんがmattnさんのvim-lsp-settingsを使うのもありだと思います。
ホームディレクトリ直下に.lspディレクトリを作ってその中にgroovy-language-serverのリポジトリを追加します。(wikiではlspディレクトリとなってますがなんとなく.lspにしています。)
$ mkdir ~/.lsp
$ cd ~/.lsp
$ git clone https://github.com/prominic/groovy-language-server
$ cd groovy-language-server
次にbuildしたいのですがどうやらJAVA_HOMEがJava13に向いている状態だと失敗するようです。(本当か?)
あまり複雑なことはしたくなかったのでdirenvでリポジトリ内だけJAVA_HOMEがJava11(openjdk@11)を向くようにしてからbuildすると成功しました。
$ export JAVA_HOME=$(/usr/libexec/java_home -v 11)
$ ./gradlew build
build/libs/groovy-language-server.jarというjarファイルができたら完了です。
リポジトリ側のREADMEにはgroovy-language-server-all
.jarができると書いてますが-all
はつかないjarファイルができるので注意してください
Groovy Language Serverを動かす
jarファイルなのでjavaコマンドで実行するだけです。
$ java -jar ./build/libs/groovy-language-server.jar
vimへのLanguage Server登録も忘れずに。
if executable('java') && filereadable(expand('$HOME/.lsp/groovy-language-server/build/libs/groovy-language-server.jar'))
autocmd User lsp_setup call lsp#register_server({
\'name': 'groovy-language-server',
\'cmd': {server_info->[
\ 'java',
\ '-jar',
\ expand('$HOME/.lsp/groovy-language-server/build/libs/groovy-language-server.jar')
\]},
\'whitelist': ['groovy']
\})
endif
なんらかgroovyのファイルを開いて:LspStatus
をチェックしてください。こんな感じになれば動いてます。groovy-language-server.jarの実行を自動で行うようにしておくのもありかなと思います。
感想
groovyちょっと楽しいです。
参考記事
https://tech.recruit-mp.co.jp/server-side/happy-groovy-life/