LoginSignup
0
0

More than 3 years have passed since last update.

vim用にGroovy Language Serverを設定する

Posted at

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の実行を自動で行うようにしておくのもありかなと思います。
スクリーンショット 2020-02-23 13.30.27.png

感想

groovyちょっと楽しいです。

参考記事

0
0
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
0
0