golangにおけるLanguageServerの実装が、bingoとgolspに分かれている状態から色々あってgoplsになったようですので、早速VSCodeで使用することにしました。
その際、goplsをインストールすることになったのですが、どうやら2バージョンあるようです。
どちらをインストールするかは好みだと思うのですが、忘備録がてら、書いておきます。
広告
goplsとは
bingoの開発者さんがgolspの開発に合流した結果出来上がったものです。現在公式のほうはx/tools以下に配置されています。
なおbingoの開発者さんによるfork(もしかしたら後で公式のほうにマージする予定なのかも)もあります。enhanced goplsと書いてあるので、こちらのほうが様々な機能入りなのかもしれません。
公式gopls(golang.org/x/tools内)の導入方法
こちらは割と簡単。go getを使います。
go get -u golang.org/x/tools/cmd/gopls
このコマンドを実行することによりgoplsがinstallされます。
saibing(bingo作者)版goplsの導入方法
以下のリポジトリがsaibing氏によるフォークです。
だいたいreadmeにある手順を実行すればよいのですが、-bオプションなど分からなかったのでちょっと調べました…。
私の理解と手順をまとめますと、
git clone -b bingo https://github.com/saibing/tools.git 展開フォルダ名
を適当なディレクトリで実行すると、展開フォルダ名のついたフォルダの中にリポジトリのbingoブランチの内容が展開されます。
あとは展開フォルダ名/cmd/goplsに移動してgo installをするだけです。
なお、go modを使っている様子なので、gopath内の場所に展開する場合は、GO111MODULEはonにしておく必要があります。
コマンドプロンプトだと確かset GO111MODULE=on、PowerShellだと$env:GO111MODULE=”on”で一時的に環境変数を切り替えることができますので、VSCodeでターミナルからのインストールも割と簡単かと思います。
その他コメントなど
goplsについて、開発途上であることもあり、まだ少し動向は観察するべきのようです。でも、たぶんフルで機能が実装されたら、公式で提供されるのではないかしら。たのしみ。