概要
vscodeでGoのコードを書く際に、関数などの定義元にジャンプさせたい時の設定。
手順
Go公式のvscode拡張機能を有効にする
まず、Go公式のvscode拡張機能が有効になっているか確認します。 github.com
上記のvscode拡張機能で、goplsというGo公式のLanguage Serverもバンドルされています。
memo Language Server Protocolというプロトコルについて
https://microsoft.github.io/language-server-protocol/
Language Server Protocolは、IDEとLanguage Serverの間で使われるプロトコルです。
自動補完や、関数などの定義へのジャンプ、関数などの呼び出し元を探したりなど、言語ごとの機能を提供するものです。
Go Language Serverは、このプロトコルに準拠しており、Goに関する上記の機能を提供するものです。
Go Language Serverの1つとして、現在Go公式でサポートしているgoplsがよく使われているようです。
VSCODEでGo Language Serverを有効にする
vscodeにおいてgoplsのセットアップが済んでいますが、vscodeのデフォルトだと、goのLanguageServerが無効になっています。
これが有効になっていないとコード補完やコードの定義元へのジャンプが使えません。
そのため、vscodeの設定でこれを有効にしてあげるhつ用があります。
github.com
Goの拡張機能のドキュメントに記載してある通り、
go.useLanguageServer
をtrueにしてあげると有効になります。
この記事では解説しませんが、Linterの設定もできるようです。
https://github.com/microsoft/vscode-go/tree/0.13.0#linter
手順
- Command + Shift + Pでコマンドパレット表示
open setting
を入力し、設定画面を出す。- jsonで設定を追加する
{ ... "go.useLanguageServer": true, ... }
これにより、特にエディタ再起動しなくてもジャンプできるようになります。
この設定を入れても定義元ジャンプが利用できない場合は、原因の1つとしてプロジェクトルートにgo.mod
が存在していないことが挙げられるようです。
bmf-tech - vscodeでgoのLanguage Serverを有効にしたらコード定義元ジャンプができなくなった