diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index e25a2d0..7edb98f 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -7,30 +7,26 @@
 
 ---
 
-Please direct general questions to:
+For asking questions, see:
+- [GitHub Discussions (Q&A)](https://github.com/golang/vscode-go/discussions/categories/q-a)
 - [`#vscode` channel in Gophers Slack](https://invite.slack.golangbridge.org/messages/vscode)
 
-Please review the [documentation](https://github.com/golang/vscode-go/tree/master/docs) before filing an issue.
-Helpful pages include:
- 
-- [GOPATH](https://github.com/golang/vscode-go/tree/master/docs/gopath.md)
-- [Module Support](https://github.com/golang/vscode-go/tree/master/docs/modules.md)
-- [Go Language Server](https://github.com/golang/vscode-go/blob/master/docs/gopls.md)
-- [Debugging](https://github.com/golang/vscode-go/tree/master/docs/debugging.md)
-  - Set "trace": "log" and share the resulting logs in the debug console when logging an issue.
+Before filing an issue, please review our troubleshooting guides
+* [Troubleshooting problems with debugging](https://github.com/golang/vscode-go/blob/master/docs/debugging.md#troubleshooting)
+* [Troubleshooting other problems](https://github.com/golang/vscode-go/tree/master/docs/troubleshooting.md)
 
 Please answer these questions before submitting your issue. Thanks!
 
 ### What version of Go, VS Code & VS Code Go extension are you using?
-- Run `go version` to get version of Go
+* Run `go version` to get version of Go from _the VS Code integrated terminal_.
 	- <Paste go version here>
-- Run `gopls -v version` to get version of Gopls if you are using [the language server](https://github.com/golang/vscode-go/blob/master/docs/gopls.md).
+* Run `gopls -v version` to get version of Gopls from _the VS Code integrated terminal_.
 	- <Paste gopls version here>
-- Run `code -v` or `code-insiders -v` to get version of VS Code or VS Code Insiders
+* Run `code -v` or `code-insiders -v` to get version of VS Code or VS Code Insiders.
 	- <Paste VS Code version here>
-- Check your installed extensions to get the version of the VS Code Go extension
+* Check your installed extensions to get the version of the VS Code Go extension
 	- <Paste Go extension version here>
-- Run `go env` to get the go development environment details
+* Run Ctrl+Shift+P (Cmd+Shift+P on Mac OS) > `Go: Locate Configured Go Tools` command.
 	- <Paste the output here>
 
 ### Share the Go related settings you have added/edited
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index e315bfc..5cffadb 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -7,7 +7,7 @@
 
 ---
 
-If you have a question, please ask it on the `#vscode` or `#vscode-go` channels in Gophers Slack](https://invite.slack.golangbridge.org/messages/vscode).
+If you have a feature request, please share your idea on the [GitHub Discussion](https://github.com/golang/vscode-go/discussions/categories/ideas), or on the [`#vscode` channel](https://invite.slack.golangbridge.org/messages/vscode) in Gophers Slack first.
 
 **Is your feature request related to a problem? Please describe.**
 A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
diff --git a/README.md b/README.md
index f323bf9..b174931 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,9 @@
 
 <!--TODO: We should add a badge for the build status or link to the build dashboard.-->
 
-[The VS Code Go extension](https://marketplace.visualstudio.com/items?itemName=golang.go) provides rich language support for the [Go programming language](https://golang.org/).
+[The VS Code Go extension](https://marketplace.visualstudio.com/items?itemName=golang.go)
+provides rich language support for the
+[Go programming language](https://golang.org/).
 
 > 📣 Gopls, the official Go language server, is now enabled in VS Code by default.
 > Gopls replaces several legacy tools to provide IDE features while editing Go code.
@@ -13,119 +15,158 @@
 ## Quick Start
 
 Welcome! 👋🏻<br/>
-Whether you are new to Go or an experienced Go developer, we hope this extension fits your needs and enhances your development experience.
+Whether you are new to Go or an experienced Go developer, we hope this
+extension fits your needs and enhances your development experience.
 
-- **Step 1.** If you haven't done so already, install [Go](https://golang.org) and the [VS Code Go extension](https://marketplace.visualstudio.com/items?itemName=golang.go).
-	- [Go installation guide](https://golang.org/doc/install). This extension works best with Go 1.14+.
-	- [Manage extensions in VS Code](https://code.visualstudio.com/docs/editor/extension-gallery)
-- **Step 2.** To activate the extension, open any directory or workspace containing Go code. Once activated, the [Go status bar](docs/ui.md) will appear in the bottom left corner of the window and show the recognized Go version.
-- **Step 3.** The extension depends on [a set of extra command-line tools](#tools). If they are missing, the extension will show the "⚠️ Analysis Tools Missing" warning. Click the notification to complete the installation.
+* **Step 1.** If you haven't done so already, install [Go](https://golang.org)
+  and the [VS Code Go extension].
+  * [Go installation guide]. This extension works best with Go 1.14+.
+  * [Manage extensions in VS Code].
+* **Step 2.** To activate the extension, open any directory or workspace
+  containing Go code. Once activated, the [Go status bar](docs/ui.md) will
+  appear in the bottom left corner of the window and show the recognized Go
+  version.
+* **Step 3.** The extension depends on [a set of extra command-line tools](#tools).
+  If they are missing, the extension will show the "⚠️ Analysis Tools Missing"
+  warning. Click the notification to complete the installation.
 
-<p align="center"><img src="docs/images/installtools.gif" width=75%></img>
-<br/><em>(Install Missing Tools)</em>
+<p align="center">
+<img src="docs/images/installtools.gif" width=75%>
+<br/>
+<em>(Install Missing Tools)</em>
 </p>
 
 You are ready to Go :-) &nbsp;&nbsp; 🎉🎉🎉
 
-Please be sure to learn more about many [features](#features) of this extension as well as how to [customize](#customization) them. Take a look at [Troubleshooting](docs/troubleshooting.md) and [Help](#ask-for-help) for further guidance.
+Please be sure to learn more about many [features](#features) of this extension
+as well as how to [customize](#customization) them. Take a look at
+[Troubleshooting](docs/troubleshooting.md) and [Help](#ask-for-help) for further
+guidance.
 
-If you are new to Go, [this article](https://golang.org/doc/code.html) provides the overview on go code organization and basic `go` commands. The recent [Go open source live video](https://opensourcelive.withgoogle.com/events/go/watch?talk=session3) featured VS Code Go and demonstrated how other Gophers use the features to enhance their Go development workflow.
+If you are new to Go, [this article](https://golang.org/doc/code.html) provides
+the overview on go code organization and basic `go` commands. The recent
+[Go open source live video] featured VS Code Go and demonstrated how other
+Gophers use the features to enhance their Go development workflow.
 
 ## Features
 
-This extension provides many features, including [IntelliSense](docs/features.md#intellisense), [code navigation](docs/features.md#code-navigation), and [code editing](docs/features.md#code-editing) support. It also shows [diagnostics](docs/features.md#diagnostics) as you work and provides enhanced support for [testing](docs/features.md##run-and-test-in-the-editor) and [debugging](#debugging) your programs. See the [full feature breakdown](docs/features.md) for more details and to learn how to tune the behavior.
+This extension provides many features, including [IntelliSense],
+[code navigation], [code editing] support. It also shows [diagnostics] as you
+work and provides enhanced support for [testing] and [debugging] your programs.
+See the [full feature breakdown] for more details and to learn how to tune the
+behavior.
 
-<p align=center><img src="docs/images/completion-signature-help.gif" width=75%></img>
-<br/><em>(Code completion and Signature Help)</em>
+<p align=center>
+<img src="docs/images/completion-signature-help.gif" width=75%>
+<br/>
+<em>(Code completion and Signature Help)</em>
 </p>
 
-In addition to integrated editing features, the extension provides several commands for working with Go files. You can access any of these by opening the Command Palette (`Ctrl+Shift+P` on Linux/Windows and `Cmd+Shift+P` on Mac), and then typing in the command name. See the [full list of commands](docs/commands.md#detailed-list) provided by the extension.
+In addition to integrated editing features, the extension provides several
+commands for working with Go files. You can access any of these by opening the
+Command Palette (`Ctrl+Shift+P` on Linux/Windows and `Cmd+Shift+P` on Mac), and
+then typing in the command name. See the
+[full list of commands](docs/commands.md#detailed-list) provided by the
+extension.
 
-<p align=center><img src="docs/images/toggletestfile.gif" width=75%></img>
+<p align=center>
+<img src="docs/images/toggletestfile.gif" width=75%>
 <br/><em>(Toggle Test File)</em></p>
 
-**⚠️ Note**: the default syntax highlighting for Go files is provided by the [TextMate rule](https://github.com/jeff-hykin/better-go-syntax) embedded in VS Code, not by this extension.
+**⚠️ Note**: the default syntax highlighting for Go files is provided by the
+[TextMate rule](https://github.com/jeff-hykin/better-go-syntax) embedded in VS
+Code, not by this extension.
 
 ## Tools
 
-The extension uses a few command-line tools developed by the Go community. In particular, `go`, `gopls`, and `dlv` are the main tools that implement build/test, language features, and debugging functionalities of this extension. See [Tools](docs/tools.md) for the full list of tools the extension depends on.
+The extension uses a few command-line tools developed by the Go community. In
+particular, `go`, `gopls`, and `dlv` are used to implement build/test, language
+features, and debugging functionalities of this extension. See the
+[tools documentation](docs/tools.md) for a complete list of tools the extension
+depends on.
 
-In order to locate the command-line tools, the extension searches `$GOPATH/bin` and directories specified in the `PATH` environment variable (or `Path` in Windows) with which the VS Code process has started. If the tools are not found, the extension will prompt you to install the missing tools and show the "⚠️ Analysis Tools Missing" warning in the bottom right corner. Please install them by responding to the warning notification, or by manually running the `Go: Install/Update Go Tools` command. The extension will run the [`go get`](https://golang.org/cmd/go) command to  install them.
+In order to locate the command-line tools, the extension searches `$GOPATH/bin`
+and directories specified in the `PATH` environment variable (or `Path` in
+Windows) with which the VS Code process has started. If the tools are not found,
+the extension will prompt you to install the missing tools and show the "⚠️
+Analysis Tools Missing" warning in the bottom right corner. Please install them
+by responding to the warning notification, or by manually running the `Go:
+Install/Update Go Tools` command. The extension will run the
+[`go get`](https://golang.org/cmd/go) command to install them.
 
 ## Setting up your workspace
 
-[Modules](https://golang.org/ref/mod) are how Go manages the versions and dependencies in the recent versions of Go. Modules replace the old `GOPATH`-based approach to specifying which source files are used in a given build, and they are the default build mode after go1.16. While this extension continues to support both Go modules and `GOPATH`-mode, we highly recommend Go development in module mode. If you are working on existing projects, please consider migrating to modules.
+[Go modules](https://golang.org/ref/mod) are how Go manages dependencies in
+recent versions of Go. Modules replace the `GOPATH`-based approach to specifying
+which source files are used in a given build, and they are the default build
+mode in go1.16+. While this extension continues to support both Go modules and
+`GOPATH` mode, we highly recommend Go development in module mode. If you are
+working on existing projects, please consider migrating to modules.
 
-Unlike the traditional `GOPATH`-mode, module mode does not require the workspace to be under `GOPATH` nor to use a specific structure. A module is defined by a tree of Go source files with a `go.mod` file in the tree's root directory. Your project may involve one or more modules. If you are working with multiple modules or uncommon project layouts, you will need to specifically configure your workspace, so features like references can work across modules. Please see the [Workspace document](https://github.com/golang/tools/blob/master/gopls/doc/workspace.md) for information on supported workspace layouts.
+Unlike the traditional `GOPATH` mode, module mode does not require the workspace
+to be located under `GOPATH` nor to use a specific structure. A module is
+defined by a directory tree of Go source files with a `go.mod` file in the
+tree's root directory. Your project may involve one or more modules. If you are
+working with multiple modules or uncommon project layouts, you will need to
+configure your workspace so that the extension knows which code to load, so that
+features like references can work across modules. Please see the
+for information on supported workspace layouts.
 
 ## Customization
 
-The extension needs no configuration and should work out of the box. However, you may wish to modify settings to meet your needs. Please see the [Settings documentation](docs/settings.md) for the comprehensive list of extension configuration options.
-
-### Choosing a different version of Go
-
-The extension chooses the `go` command from the `$PATH` (or `$Path`) environment variable by default. You can configure this extension to choose a different version of Go with one of the following options.
-
-  - (Preferred) Adjust your `$PATH` or `$Path` environment variable, and *open VS Code with the adjusted environment* variable, or
-  - Use the Go extension's `"Go: Choose Go Environment"` command that opens a [menu](docs/ui.md) to change the `go` version, or
-  - Use the `"go.alternateTools"` settings and specify the absolute path to the `go` command.
-  ```
-     "go.alternateTools": { "go": "/path/to/go/command" }
-  ```
-
-**note**: For historical reasons, some users use the `"go.goroot"` settings or the `GOROOT` environment variable to select the Go SDK location. With the recent versions of Go, that's unnecessary in most cases.
-
-### Configuring the installation of command-line tools
-
-`Go: Install/Update Tools` command uses the `go get` command to download and install requested tools. By default,  `go get` will install the compiled tools in one of the following directories.
-  - the directory the `$GOBIN` environment variable specifies, or
-  - the `bin` directory under the first `$GOPATH` (or `"go.gopath"`) directory, or
-  - the `$HOME/go/bin` (or `$USERPROFILE/go/bin`) directory.
- 
-Some users prefer to choose a different installation location. In that case, use the `"go.toolsGopath"` setting. 
-
-The extension finds the required tools by their names (`go`, `gopls`, `dlv`, ...). Sometimes, users may need to wrap the tools or want the extension to pick an alternate tool. `"go.alternateTools"` provides a way to configure the extension to use different tools.
-
-### Using a custom linter
-
-A commonly customized feature is the linter, which is a tool used to provide coding style feedback and suggestions.
-This extension supports linters such as `staticcheck`, `golangci-lint`, and `revive`. You can choose one of them using the `"go.lintTool"` setting. For customization of the linter, please consult the tools' documentation.
-
-If you are using `staticcheck`, you can enable it via the `gopls` settings block by setting
-```
-  "gopls": {
-    "ui.diagnostic.staticcheck": true
-  }
-```
-
-<!-- TODO: maybe have tips.md or settings.md to discuss more customization and setting tips (e.g. activating signature help after completion, disabling snippets to reduce the interference with gopls' suggestions, setting proxies, etc.) -->
-
-### Working on the Go standard library and the Go tools
-
-When you need to work on the Go project (https://go.googlesource.com/go), please follow the instruction in the [Standard Library Development](docs/stdlib.md) to adjust your settings.
+The extension needs no configuration and should work out of the box. However,
+you may wish to adjust settings to customize its behavior. Below are a few
+commonly used settings. Please see the
+[settings documentation](docs/settings.md) for a comprehensive list of settings.
+See [advanced topics](docs/advanced.md) for further customizations and unique
+use cases.
 
 ## Ask for help
 
-If you're having issues with this extension, please reach out to us by [filing an issue](https://github.com/golang/vscode-go/issues/new/choose) or asking a question on the [Gophers Slack]. We hang out in the `#vscode` channel!
+If you're having issues with this extension, please reach out to us by
+[filing an issue](https://github.com/golang/vscode-go/issues/new/choose) or
+asking a question on the [Gophers Slack]. We hang out in the `#vscode` channel!
 
-Take a look at [learn.go.dev](https://learn.go.dev) and [golang.org/help](https://golang.org/help) for additional guidance.
+Take a look at [learn.go.dev](https://learn.go.dev) and
+[golang.org/help](https://golang.org/help) for more general guidance on using
+Go.
 
-## [Preview version](docs/nightly.md)
+## Preview version
 
-If you'd like to get early access to new features and bug fixes, you can use the nightly build of this extension. Learn how to install it in by reading the [Go Nightly documentation](docs/nightly.md).
+If you'd like to get early access to new features and bug fixes, you can use the
+nightly build of this extension. Learn how to install it in by reading the
+[Go Nightly documentation](docs/nightly.md).
 
-## [Contributing](docs/contributing.md)
+## Contributing
 
-We welcome your contributions and thank you for working to improve the Go development experience in VS Code. If you would like to help work on the VS Code Go extension, please see our [contribution guide](docs/contributing.md). It explains how to build and run the extension locally, and it describes the process of sending a contribution.
+We welcome your contributions and thank you for working to improve the Go
+development experience in VS Code. If you would like to help work on the VS Code
+Go extension, please see our [contribution guide](docs/contributing.md). It
+explains how to build and run the extension locally, and describes the process
+of sending a contribution.
 
-## [Code of Conduct](CODE_OF_CONDUCT.md)
+## Code of Conduct
 
-This project follows the [Go Community Code of Conduct](https://golang.org/conduct). If you encounter an issue, please mail conduct@golang.org.
+This project follows the
+[Go Community Code of Conduct](https://golang.org/conduct). If you encounter a
+conduct-related issue, please mail conduct@golang.org.
 
-## [License](LICENSE)
+## License
 
 [MIT](LICENSE)
 
 [Gophers Slack]: https://gophers.slack.com/
 [`gopls`]: https://golang.org/s/gopls
 [`go`]: https://golang.org/cmd/go
+[Manage extensions in VS Code]: https://code.visualstudio.com/docs/editor/extension-gallery
+[VS Code Go extension]: https://marketplace.visualstudio.com/items?itemName=golang.go
+[Go installation guide]: https://golang.org/doc/install
+[Go open source live video]: https://opensourcelive.withgoogle.com/events/go/watch?talk=session3
+[IntelliSense]: docs/features.md#intellisense
+[code navigation]: docs/features.md#code-navigation
+[code editing]: docs/features.md#code-editing
+[diagnostics]: docs/features.md#diagnostics
+[testing]: docs/features.md##run-and-test-in-the-editor
+[debugging]: #debugging
+[full feature breakdown]: docs/features.md
+[workspace documentation]: https://github.com/golang/tools/blob/master/gopls/doc/workspace.md
diff --git a/docs/advanced.md b/docs/advanced.md
new file mode 100644
index 0000000..d1253fd
--- /dev/null
+++ b/docs/advanced.md
@@ -0,0 +1,93 @@
+# Advanced topics
+
+This document describes more advanced ways of working with the VS Code Go
+extension.
+
+## Choosing a different version of Go
+
+The extension chooses the `go` command using the `PATH` (or `Path`) environment
+variable by default. You can configure the extension to choose a different
+version of `go` with one of the following options.
+
+* (Preferred) Adjust your `PATH` or `Path` environment variable, and *open VS
+  Code with the adjusted environment* variable, or
+* Use the Go extension's `"Go: Choose Go Environment"` command that opens a
+  [menu](ui.md) to change the `go` version, or
+* Use the `"go.alternateTools"` settings and specify the absolute path to the
+  `go` command. `"go.alternateTools": { "go": "/path/to/go/command" }`
+
+**note**: For historical reasons, some users configure the `"go.goroot"`
+
+settings or the `GOROOT` environment variable to select the Go SDK location.
+With recent versions of Go, that's unnecessary in most cases.
+
+## Configuring the installation of command-line tools
+
+The `Go: Install/Update Tools` command uses the `go get` command to download and
+install requested tools. By default, `go get` will install the compiled tools in
+one of the following directories.
+
+* the directory the `GOBIN` environment variable specifies, or
+* the `bin` directory under the first `GOPATH` (or `"go.gopath"`) directory, or
+* the `$HOME/go/bin` (or `$USERPROFILE/go/bin`) directory.
+
+Some users prefer to choose a different installation location. In that case, use
+the `"go.toolsGopath"` setting.
+
+The extension finds the required tools by their names (`go`, `gopls`, `dlv`,
+etc.). The `"go.alternateTools"` setting provides a way to configure the
+extension to use different tool location, for example a wrapper with a different
+name.
+
+## Using a custom linter
+
+A commonly customized feature is the linter, which is the tool used to provide
+coding style feedback and suggestions. This extension supports linters such as
+`staticcheck`, `golangci-lint`, and `revive`. You can choose one of them using
+the `"go.lintTool"` setting. For customization of the linter, please consult the
+linter's documentation.
+
+Note that if you are using `staticcheck`, you can enable it to run within
+`gopls` by setting `"gopls": { "ui.diagnostic.staticcheck": true }`.
+
+## Working on the Go standard library and the Go tools
+
+This extension can be used for developing the standard library with additional
+configuration.
+
+First, you **must open the `src/` folder in VS Code**, not the Go tree root.
+(See [golang/go#32394](https://github.com/golang/go/issues/32394).)
+
+Then, you need to configure the workspace, by placing the following in
+`src/.vscode/settings.json`. [Command Palette] ->
+`Preferences: Open Workspace Settings (JSON)` will open the settings file.
+
+```json5
+{
+  // Use the local go tool. This needs to be built with make.bash.
+  "go.alternateTools": {
+    "go": "~/godev/bin/go"
+  },
+
+  //
+  // Below is optional.
+  //
+  // Build a separate set of tools. For golang/vscode-go#294.
+  "go.toolsGopath": "~/.vscode/godev",
+  // Don't reformat HTML files since we have a custom style.
+  "html.format.enable": false
+}
+```
+
+The above assumes the Go tree is checked out at `~/godev`. If your Go tree is
+somewhere else, modify `go.alternateTools.go` to point to the go *binary*
+accordingly. Many underlying tools including `gopls` invoke the go command
+(`go list`, etc), so we assume the binary isn't completely broken.
+
+You can add `.vscode` to `.git/info/exclude` to avoid risking checking
+`settings.json` into git.
+
+If you see an "inconsistent vendoring" error, please report it at
+[golang/go#40250](https://github.com/golang/go/issues/40250).
+
+[Command Palette]: https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette
diff --git a/docs/stdlib.md b/docs/stdlib.md
deleted file mode 100644
index fea0e40..0000000
--- a/docs/stdlib.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# Standard library development
-
-vscode-go and gopls can be used for developing the standard library, but require configuration.
-
-First, you **must open the `src/` folder in VS Code**, not the Go tree root.
-(See [golang/go#32394](https://github.com/golang/go/issues/32394).)
-
-Then, you need to configure the workspace, by placing the following in `src/.vscode/settings.json`.
-[Command Palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette)
--> `Preferences: Open Workspace Settings (JSON)` will open the setting file.
-
-```json5
-{
-  // Use the local go tool. This needs to be built with make.bash.
-  "go.alternateTools": {
-    "go": "~/godev/bin/go"
-  },
-
-  //
-  // Below is optional.
-  //
-  // Build a separate set of tools. For golang/vscode-go#294.
-  "go.toolsGopath": "~/.vscode/godev",
-  // Don't reformat HTML files since we have a custom style.
-  "html.format.enable": false
-}
-```
-
-The above assumes the Go tree is checked out at `~/godev`. If your Go tree is somewhere else, modify
-`go.alternateTools.go` to point to the go *binary* accordingly. Many underlying tools
-including `gopls` invoke the go command (`go list`, etc), so we assume the binary isn't 
-completely broken.
-
-You can add `.vscode` to `.git/info/exclude` to avoid risking checking `settings.json` into git.
-
-The Go language server ([`gopls`](https://golang.org/s/gopls)) works for developing the standard
-library. To enable it, please read our [`gopls` documentation](gopls.md).
-
-If you see an "inconsistent vendoring" error, please report it at
-[golang/go#40250](https://github.com/golang/go/issues/40250).
-
-See also [golang/go#38603](https://github.com/golang/go/issues/38603).
diff --git a/src/goMain.ts b/src/goMain.ts
index 9710a3b..fe7d445 100644
--- a/src/goMain.ts
+++ b/src/goMain.ts
@@ -128,8 +128,8 @@
 		// The `diagnostics` setting is still used as a workaround for running custom vet.
 		if (experimentalFeatures['documentLink'] === false) {
 			vscode.window.showErrorMessage(`The 'go.languageServerExperimentalFeature.documentLink' setting is now deprecated.
-Please use 'gopls.importShortcut' instead.
-See https://github.com/golang/tools/blob/master/gopls/doc/settings.md#importshortcut-enum for more details.`);
+Please use ' "gopls": {"ui.navigation.importShortcut": "Definition" }' instead.
+See https://github.com/golang/vscode-go/blob/master/docs/settings.md#uinavigationimportshortcut for more details.`);
 		}
 		const promptKey = 'promptedLanguageServerExperimentalFeatureDeprecation';
 		const prompted = getFromGlobalState(promptKey, false);
