📝
VSCodeでgopls使用時に勝手にimportが削除される
環境
- Windows10
- go version go1.15.2 windows/amd64
- vscode-go経由でgopls導入済み
- ローカルformatTool: gofmt
VSCodeのGoplsの設定部分は以下のドキュメントに従って設定したものとします
問題
保存時に勝手にimportが整理される(というよりlintかかってる....?)
後で実装する部分とかが削除されて非常に迷惑
原因切り分け
いろいろ調査してみたところ、Language server使用時に上記問題が発生することがわかりました。
なので、犯人はたぶんgopls...?と結論付けました
Issue
やっぱり同じ問題を抱えていた人がいました
However, when using gopls the following behavior happens:
- Files are always formatted on save
- Imports are reordered
解決
上記Issueの解決策として、"source.organizeImports": false
というのがありました。
設定の該当部分をfalseにしたところ、意図した動作をするようになりました。
最終的な私のsettings.jsonは以下です
{
"go.formatTool": "gofmt",
"go.lintOnSave": "off",
"go.lintTool": "golangci-lint",
"go.useLanguageServer": true,
"[go]": {
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.organizeImports": false
},
// Optional: Disable snippets, as they conflict with completion ranking.
"editor.snippetSuggestions": "none"
},
"[go.mod]": {
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"go.languageServerExperimentalFeatures": {
"format": false,
"autoComplete": true
},
"gopls": {
// Add parameter placeholders when completing a function.
"usePlaceholders": true,
// If true, enable additional analyses with staticcheck.
// Warning: This will significantly increase memory usage.
"staticcheck": false
}
}
以上です
Discussion