Help us understand the problem. What is going on with this article?

vim用にGroovy Language Serverを設定する

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ちょっと楽しいです。

参考記事

https://tech.recruit-mp.co.jp/server-side/happy-groovy-life/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした