TinyGo + `VSCode or Vim (もしくはそれ以外の LSP 対応エディタ)` で gopls 連携する方法


TinyGo 0.15 がリリースされて、 gopls との連携が簡単になりました。
逆に言うと今までは 設定がそれなりに面倒 でした。

このページでは、 TinyGo 0.15 以降での gopls 連携の方法を VSCode および Vim (もしくはそれ以外の LSP 対応エディタ) に対して記載します。

注意)
以降、 wioterminal というターゲットを例として記載します。
適宜、使いたいターゲットに読み替えてください。

VSCode

まずは、 VSCode の Extensions > TinyGo 0.2.0 をインストールします。

次に tinygo のソースコード (*.go) を開いている状態で Command palette > TinyGo targets を実行します。

pick a target... と表示されるので wioterminal を選択します。

Reload を促されるので Reload します。

この時点で machine.LED の定義が表示されていれば gols 連携は OK です。

ターゲットを切り替えたい場合は、 Command palette > TinyGo targets を再度実行してください。

Vim (もしくはそれ以外の LSP 対応エディタ)

↓↓↓ 2021/06/14 追記 ↓↓↓
Vim + vim-lsp を使っている人は以下の記事を参照してください。

↑↑↑ 2021/06/14 追記 ↑↑↑

まずは tinygo-edit をインストールします。
以下から実行体を DL し PATH の通った場所に置いてください。

もしくは、以下のコマンドでもインストールすることが出来ます。

$ go get github.com/sago35/tinygo-edit

その後、以下をソースコードのあるディレクトリで実行します。
エディタに合わせて少し設定が必要です。

# Vim
$ tinygo-edit --target xiao --editor vim --wait

# gVim
$ tinygo-edit --target xiao --editor gvim

# VSCode (VSCode は上記の TinyGo extensions を使ったほうが良い)
$ tinygo-edit --target xiao --editor code

この時点で machine.LED の定義が表示されていれば gopls 連携は」 OK です。

なお、この方法で開いた vim から立ち上げた terminal では tinygo buildtinygo flash が出来ません。
環境変数 GOROOT が設定されているためです。

以下のようにして GOROOT の設定を削除すると tinygo build 等を実施出来るようになります。

# windows / cmd.exe の場合
$ set GOROOT=

# bash の場合
$ unset GOROOT

ターゲットを切り替えたい場合は、 tinygo-edit を再度実行してください。

Link