[release] all: prepare v0.21.0 release

fd5d558 CHANGELOG.md: prepare for v0.21.0 release
b7b9a3e test/*: use getGoConfig instead of directly calling vscode API
3e3f506 src/util: resolveToolsGopath ignores toolsGopath from untrusted workspace
e1a6cb4 package.json: update settings description to mark dangerous settings
bc8b63e src/config: move getGoConfig/getGoplsConfig to config
3a013bd src/config.ts: initialize the Configuration singleton during activation
d62869d package.json: address comments from cl/280697
1ac4671 src/config: add Configuration class to encapsulate the extension settings
b15a5cc tools/generate: move gopls settings to a dedicated section
2b54c86 src/goMain: fix build breakage - isNightly is renamed
d2e07f8 CHANGELOG.md: v0.20.2
70ef416 src/goMain.ts: show welcome page on update
55eb46d package.json: switch the main branch in preview mode
60116ee src/goLanguageServer: include .tmpl only in nightly mode.
4f8150a src/goLanguageServer.ts: deduplicate diagnostics from language client
34d732e package.json: change go.toolsGopath default to null
64847ab src/goLanguageServer: report when falling back to default providers
3b5f327 vscode-go: allow gopls to see .tmpl files
d9b30a2 media/welcome.css: add style to the welcome webview
4c91c38 src/goLanguageServer: remove languageServerExperimentalFeatures
f9896e8 src/goStatus: avoid statusBarEntry leak
898e719 docs/settings.md: fix the settings for the context menu
04c1bcf src/goLanguageServer: fix a bug that prevented gopls start after forced update
cda36be src/debugAdapter: add dlvFlags to accept arbitrary delve flags
705272c src/goLiveErrors: disable gotype-live when language server is enabled
ae693b8 src/welcome.ts: add 'latest updates' section to welcome page
0dc4650 src/welcome.ts: add external resources to welcome page
197bec6 src/welcome.ts: add welcome webview
de64eaa tools/goplssetting: handle changes in gopls setting structure
343a5dc src/goLanguageServer: deprecate documentLink configuration
b730717 docs/gopls.md: remove the link of `gopls` settings block section
e7a2363 src/debugAdapter: address TS2794 warnings
229c425 CHANGELOG.md: describe v0.20.1 change
811693e CHANGELOG.md: Change logs for v0.20.0
dd9c54f src/utils/pathUtils: return the default go path only if exists
0abde47 docs/gopls.md: update documentation about `gopls` block
83197d8 build: install typescript in Dockerfile and adjust .vscodeignore
61dae92 README.md: place gopls by default announcement

Change-Id: I606d15d08c4b6f36a63b9d3dea27c7aca92df843
tree: 90e3e16e75cf7ecc512784c4590481f2c90d7756
  1. .github/
  2. .vscode/
  3. build/
  4. docs/
  5. languages/
  6. media/
  7. snippets/
  8. src/
  9. syntaxes/
  10. test/
  11. third_party/
  12. tools/
  13. typings/
  14. .editorconfig
  15. .gitignore
  16. .prettierrc.json
  17. .vscodeignore
  18. CHANGELOG.md
  19. CODE_OF_CONDUCT.md
  20. LICENSE
  21. package-lock.json
  22. package.json
  23. README.md
  24. SECURITY.md
  25. tsconfig.json
  26. tslint.json
  27. webpack.config.js
README.md

Go for Visual Studio Code

Slack

This extension provides rich language support for the Go programming language in VS Code.

Take a look at the Changelog to learn about new features.

📣 We plan to enable the language server (gopls) by default in early 2021. The language server provides language features like intellisense, formatting, refactoring, analysis and many more. We recommend switching to the language server now ("go.useLanguageServer": true) to confirm it works well for you. Please file a new issue if you notice bugs or missing features.

Overview

Getting started

Welcome! Whether you are new to Go or an experienced Go developer, we hope this extension will fit your needs and enhance your development experience.

Install Go

Before you start coding, make sure that you have already installed Go, as explained in the Go installation guide.

If you are unsure whether you have installed Go, open the Command Palette in VS Code (Ctrl+Shift+P) and run the Go: Locate Configured Go Tools command. If the GOROOT output is empty, you are missing a Go installation. For help installing Go, ask a question on the #newbies Gophers Slack channel.

Set up your environment

Read about Go code organization to learn how to configure your environment. This extension works in both GOPATH and module modes. We suggest using modules, as they are the new standard and become default from go 1.16 (to be released in early 2021).

Here are some additional resources for learning about how to set up your Go project:

NOTE: If you are using modules, we recommend using the Go language server, which is explained below.

Install the extension

If you haven't already done so, install and open Visual Studio Code. Navigate to the Extensions pane (Ctrl+Shift+X). Search for “Go” and install this extension (the publisher ID is golang.Go).

Activate the Go extension

To activate the extension, open any directory or workspace containing Go code.

You should immediately see a prompt in the bottom-right corner of your screen titled Analysis Tools Missing. This extension relies on a suite of command-line tools, which must be installed separately. Accept the prompt, or use the Go: Install/Update Tools command to pick which tools you would like to install.

If you see an error that looks like command Go: Install/Update Tools not found, it means that the extension has failed to activate and register its commands. Please uninstall and then reinstall the extension.

When the extension is active, you should see the Go status bar in the bottom left corner.

Start coding

You're ready to Go!

Be sure to learn more about the many features of this extension, as well as how to customize them. Take a look at Troubleshooting and Help for further guidance.

Support for Go modules

Go modules have added a lot of complexity to the way that most tools and features are built for Go. Some, but not all, features of this extension have been updated to work with Go modules. Some features may also be slower in module mode. The features documentation contains more specific details.

In general, we recommend using gopls, the official Go language server, if you are using modules. Read more below and in the gopls documentation.

Features

This extension has a wide range of features, including Intellisense, code navigation, and code editing support. It also shows build, vet, and lint diagnostics as you work and provides enhanced support for testing and debugging your programs. For more detail, see the full feature breakdown.

In addition to integrated editing features, the extension also provides several commands for working with Go files. You can access any of these by opening the Command Palette (Ctrl+Shift+P) and typing in the name of the command. See the full list of commands provided by the extension.

The majority of the extension‘s functionality comes from command-line tools. If you’re experiencing an issue with a specific feature, you may want to investigate the underlying tool. You can do this by taking a look at the full list of tools used by this extension.

Debugging

Debugging is a major feature offered by this extension. For a comprehensive overview of how to debug your Go programs, please see the debugging guide.

Customization

This extension needs no configuration; it works out of the box. However, you may wish to modify settings to adjust your experience.

Many of the features are configurable to your preference. A few common modifications are mentioned below, but take a look at the full list of settings for an overview.

Linter

A commonly customized feature is the linter, which is a tool used to provide coding style feedback and suggestions. By default, this extension uses the official golint.

However, you are welcome to use more advanced options like staticcheck, golangci-lint, or revive. This can be configured via the "go.lintTool" setting, and the different options are explained more thoroughly in the list of diagnostic tools.

GOPATH

Advanced users may want to set different GOPATHs for different projects or install the Go tools to a different GOPATH. This is possible and explained in the GOPATH documentation.

Language Server

In the default mode, the Go extension relies upon a suite of command-line tools. A new alternative is to use a single language server, which provides language features through the Language Server Protocol.

The Go team at Google has developed gopls, which is the official Go language server. It is currently in an alpha state and under active development.

gopls is recommended for projects that use Go modules.

To opt-in to the language server, set "go.useLanguageServer" to true in your settings. You should then be prompted to install gopls. If you are not prompted, you can install gopls manually by running the Go: Install/Update Tools command and selecting gopls.

For more information, see the gopls documentation.

Ask for help

If you're having issues with this extension, please reach out to us by filing an issue or asking a question on the Gophers Slack. We hang out in the #vscode channel!

Take a look at learn.go.dev and golang.org/help for additional guidance.

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.

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. It explains how to build and run the extension locally, and it describes the process of sending a contribution.

Code of Conduct

This project follows the Go Community Code of Conduct. If you encounter an issue, please mail conduct@golang.org.

License

MIT