ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

vscodeでgoの設定をしてlspを動かしてみた

vscodegolangの開発環境を構築にあたってgocodeではなくlsp*1を使う設定をやってみて動いてみたのでまとめます

なぜvscodeを使わないのかというのは以下の記事を見たのと、lspすごいという個人的な期待感です

mattn.kaoriya.net

インストール

とりあえずvscodevscode-goをインストールします

github.com

インストール自体は他の拡張と同じように"go"とかで絞り込むと表示されると思いますので、それをインストールします。

設定

インストールしたら設定は自分の環境だと以下の感じ*2
(setting.jsonからじゃないと設定できないっぽい項目があるのでjsonを編集しました)

"go.gopath": "/home/yuzu/develop",
"go.goroot": "/home/yuzu/.goenv/versions/1.11.4",
"go.useLanguageServer": true,
"go.languageServerExperimentalFeatures": {
    "format": false,
    "autoComplete": true,
    "rename": true,
    "goToDefinition": true,
    "hover": true,
    "signatureHelp": true,
    "goToTypeDefinition": true,
    "goToImplementation": true,
    "documentSymbols": true,
    "workspaceSymbols": true,
    "findReferences": true
}

設定をしたらctrl + shift + p等でコマンドパレットを開き「go: Install/Update Tools」を実行し、go-langserverにチェックを入れてOKを押すとgo-langserverがインストールされます

github.com

実行されることを確認する

"autoComplete": trueを設定したので補完されることを確認します。自分は以下のようなコードを書いて、fmt.をタイプした時にPrintlnが候補として表示されるかで確認できると思います*3

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Happy Aura")
}

*1:Language Service Protocol

*2:gorootの指定がversion変えるたびに変更したいので納得いってない

*3:けやきちゃんのハッピーオーラなんか好きです