更改导入时,为什么Golang Intellisense在VS Code中运行缓慢?

tbh*_*man 5 go visual-studio-code

ms-vscode.go在VS Code设置中安装了Go扩展程序,并且正在使用gopls语言服务器。语言服务器似乎在Intellisense操作中表现良好,除非我正在编辑导入,这时会有相当大的滞后,因为每次对导入的编辑都需要几秒钟的更新时间。

例如,以下是手动import "net/http"逐个字母键入(而不是复制/粘贴)的重放。该剪辑以20倍速运行,因此从我停止键入import语句到语言服务器出现以下正确错误,大约需要1.8分钟"net/http" imported but not used

在此处输入图片说明

难道我做错了什么?

与我相关的设置:

  "go.useLanguageServer": true,
  "go.alternateTools": {
      "go-langserver": "gopls"
  },
Run Code Online (Sandbox Code Playgroud)

的输出gopls显示,您花费了大量时间go list

  "go.useLanguageServer": true,
  "go.alternateTools": {
      "go-langserver": "gopls"
  },
Run Code Online (Sandbox Code Playgroud)

对于每一个变化。

Von*_*onC 4

这可能是因为:

saibing/tools在 2020 年 1 月和 gopls 0.3.0 之前,您可以尝试在模块模式下使用 Go 1.13,看看问题是否仍然存在。

git clone https://github.com/saibing/tools
cd tools/gopls
go install
Run Code Online (Sandbox Code Playgroud)

确保您的~/go/bin(使用默认值)确实显示带有最近时间戳的GOPATH新可执行文件。gopls

然后重新启动 VSCode。

注意:microsoft/vscode-go问题 2484(“Go:使用 Go 模块时自动完成未导入的包”功能)也刚刚得到解决(2020 年 1 月):

go.autocompleteUnimportedPackages启用用于为未导入的包提供补全的设置。
当用户选择这样的完成项时,不仅当前单词被完成,而且导入语句被添加到该包的文件中。

现在这适用于 Go 模块。

同样,gopls 0.3.0 应该会有所帮助。


我的 gopls 设置:

"gopls": {
    "usePlaceholders": true, // add parameter placeholders when completing a function
    "enhancedHover": true, // experimental to improve quality of hover (will be on by default soon)
},
Run Code Online (Sandbox Code Playgroud)

但是也:

"[go]": {
    "editor.snippetSuggestions": "none",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    },
},
"go.lintTool": "golangci-lint",
"go.useLanguageServer": true,
"go.languageServerExperimentalFeatures": {
    "format": true,
    "autoComplete": true
},
Run Code Online (Sandbox Code Playgroud)