v0.38.0 - 23 Feb, 2023

This release adds default go tasks to help build and test your Go projects.

A list of all issues and changes can be found in the v0.38.0 milestone and commit history.


  • Added default go task provider (Issue 194)
  • Updated pinned golangci-lint version to fix memory leak issue with Go 1.20 (Issue 2654)
  • gopls releases will now have a staged rollout in VS Code (CL 468497)
  • Added extension keywords to make this extension easier to find in the VS Code Extension Marketplace (Issue 2657)
  • Deleted the broken references codelens code (Issue 2519)
  • Added support to handle missing variables in legacy debug adapter gracefully (Issue 2397)

Development process updates

  • Upgraded esbuild to support s390x (Issue 2668)
  • Use --profile-temp for testing with clean env (Issue 2458)


Thank you for your contribution, @ankon, @hyangah, @jamalc, and @suzmue!

v0.37.1 - 17 Jan, 2023


  • Fixed spurious file creation bugs on branch switches. (Issue 2570)


  • Added promotion for the annual Go developer survey (2023 Winter).


Thank you for your contribution, @suzmue!

v0.37.0 - 19 Dec, 2022

This release includes new static analysis features that report known vulnerabilities in your dependencies. These vulncheck analysis tools are backed by Go's vulnerability database and the Go language server‘s integration of govulncheck. Read Go's support for vulnerability management to learn about the Go team’s approach to helping Go developers secure their open-source dependencies.


  • The new “Go: Toggle Vulncheck” command enables/disables imports-based vulnerability analysis. This requires gopls v0.11.0 or newer.
  • Test and debug test code lenses are added to some subtests if the test names can be determined. (Issue 2536)
  • Gopls settings was updated to match gopls@v0.11.0.
  • "go.formatTool" setting accepts a special value "custom", which causes the extension to use the custom formatter configured with the setting "go.alternateTools": { "customFormatter": <your custom tool name> }. (Issue 2503)
  • The experimental “Go: Run Vulncheck (exp)” command was removed.
  • The extension no longer bypasses Delve's Go version check by default. Users must install the delve version compatible with their Go version, or explicitly configure their launch configuration to pass the --check-go-version=false flag using the dlvFlags attribute. (Go Delve Issue 3058)



Thank you for your contribution, @devuo, @pjweinbgo, @aarzilli, @tklauser, @hyangah, @suzmue, @jamalc!

v0.36.0 - 7 Nov, 2022

A list of all issues and changes can be found in the v0.36.0 milestone and commit history.


  • From this release, the extension will download specific versions of 3rd party tools installed with the “Go: Install/Update Tools” command. This is to enhance stability and security. The “Go: Install/Upate Tools” command will present the versions the extension will install. To install a different version of a tool, use go install command from the terminal instead. (Issue 1850)
  • The default gopls version was updated to v0.10.1 and the settings were updated accordingly. See the release note of gopls v0.10.0 to learn about notable changes and new features.
  • Typing vars will now offer a completion snippet that expands it to a var (...) block containing multiple variables. (PR 2481)
  • The setting to enable the “references” codelens, go.enableCodeLens.references, is now hidden. The feature remained broken for a while, so we plan to remove it in a future release. Please see Issue 2509 for details.
  • When debugging tests, the extension will open the “Debug Console”. (Issue 2409)


  • Fixed Issue 2525 that prevented triggering of parameter hints after method autocompletion. Users can enable/disable this parameter hints popup with the "editor.parameterHints.enabled" setting.
  • Fixed test profie feature (CL 440530).
  • Removed dev dependency affected by CVE-2022-3517.


Thank you for your contribution, @suzmue, @fatoboist, @cuishuang, @jamalc, @karthikraobr, @pjweinbgo, @firelizzard18, @hyangah!

v0.35.2 - 15 Aug, 2022

A list of all issues and changes can be found in the v0.35.2 milestone and commit history.


This release includes a new go.goroot command, fixes to the Generate Tests commands, and improvements for windows users.


Thank you for your contribution, @OrBin, @Ras96, @hyangah, @jamalcarvalho, and @suzmue!

v0.35.1 - 19 July, 2022

A list of all issues and changes can be found in the v0.35.1 milestone and commit history.

Bug Fix

  • Disabled experimental gopls features (e.g. semantic highlighting).

v0.35.0 - 18 July, 2022

A list of all issues and changes can be found in the v0.35.0 milestone and commit history.


  • This release adds support for inlay hints (Issue 1631).
  • Add logic to support ${workspaceFolderBasename} substitution in extension settings (Issue 2310).
  • Add support for multi-file test suite (Issue 1130).
  • Add support for custom formatters.

Bug Fix

  • Fixed (Issue 2339) that prevented updating delve on arm64 Macs.


Thank you for your contribution, @hyangah, @nirhaas, @bentekkie, @jamalc, and @suzmue.

v0.34.1 - 30 June, 2022

A list of all issues and changes can be found in the v0.34.1 milestone and commit history.

Bug Fix

  • Fixed (Issue 2300) that prevented the extension from complete activation when the language server fails to start.


Thank you for your contribution, @jamalc, @hyangh!

v0.34.0 - 22 June, 2022

This release adds support for LSP 3.17 and requires Visual Studio Code 1.67+.


This release includes improvements to the Go: Run Vulncheck (Experimental) command (Issue 2185, 2186, 2214). Use it to find security issues in your dependencies.


Documentation for vscode-go can now be found on the wiki (Issue 2094).

Thanks @thediveo for updating the debugging documentation!

Bug Fixes

TestMain(m *testing.M) is no longer treated as a test (Issue 482, 2039)

Code Health

  • Enabled strict type checking (Issue 57)
  • Updated release notes generation script to improve release process automation
  • Fixed bugs in testing


Thank you for your contribution, @hyangah, @jamalc, @polinasok, @suzmue, @thediveo, and @dle8!

v0.33.1 - 24 May, 2022

This is the last release that supports Visual Studio Code 1.66 or older. We plan to add support for LSP 3.17 in the next release and the change requires Visual Studio Code 1.67+.


  • Updated settings to be in sync with gopls@v0.8.4. See the release note to learn new features like the //go:embed analyzer, and improved hover for imported packages.
  • Prepared for 2022 mid-year Go developer survey.

v0.33.0 - 1 May, 2022

📣 Remote attach debugging is now available via Delve's native DAP implementation with Delve v1.7.3 or newer. It is now the default with the Go Nightly and will become the default for the stable releases in mid 2022.


  • staticcheck: if go 1.16.x or older is used in installing tools, the extension chooses staticcheck@v0.2.2. In order to use the latest version of staticcheck while working on projects that require older versions of go, you can utilize the "go.toolsManagement.go" setting to specify a newer version of go for tool installation. (Issue 2162)

  • go-outline: go-outline is no longer required when gopls (v0.8.2+) is used.

  • Activation: the extension defers commands and feature provider registrations until it runs go version and go env, and starts gopls. This change prevent the extension prematually export its features, but may result in a slight increase in extension activation time if those commands run slow.

  • Survey: we show the Gopls opt-out survey prompt only when users change the setting to disable gopls.

  • Test Explorer: fixed a bug in go.mod file parsing (Issue 2171)

  • Debugging: we removed the informational popup at the start of remote attach session with dlv-dap. (Issue 2018)

Experimental features

This version includes two highly experimental features. They are still in early stage and we are looking forward to hearing more user feedback.

  • Go Explorer view: it displays environment variables and information about tools used by the extension. (Issue 2049)

  • Go: Run Vulncheck (Experimental) command: it runs the govulncheck command embedded in gopls, which identifies known vulnerabilities by call graph traversal and module dependency analysis. (Issue 2096)


@jamalc, @polinasok, @dlipovetsky, @vladdoster, @suzmue, @hyangah

v0.32.0 - 8 Mar, 2022

This version includes features to enhance Go 1.18 support. It works best when paired with the latest Go Language Server (gopls v0.8.0+) and Delve (dlv v1.8.0+).

Go 1.18 introduces substantial changes to the language spec, so many tools need rebuilding with Go 1.18 or newer. The extension now suggests updates of tools if it finds they were built with old versions of go which are inadequate for the version used for the project. If you opted in for auto-update, tools will be auto-updated.

In order to use Go 1.18, please follow the instruction to configure your Visual Studio Code to locate the right go binary, and run the Go tools using the “Go: Install/Update Tools” command.

A list of all issues and changes can be found in the v0.32.0 milestone and commit history.


  • Starting with Go 1.18, the go command provides native support for multi-module workspaces, via go.work files. The new “Open ‘go.work’” option in the Go status bar's quickpick menu allows users to access the corresponding go.work file. go work short

  • The extension no longer depends on gopkgs. Its use for “Go: Browse Packages” and “Go: Add Import” commands had been replaced with go list or commands in gopls. (Issue 258)

  • The extension uses gopls instead of go-outline if gopls v0.8.0 or newer is used. We plan to complete the replacement work in the next release. (Issue 1020)

  • The new "go.toolsManagement.go" setting allows users to specify the Go command for tools installation/updates separate from the Go command used for the project.

  • The latest gopls requires go 1.13+ for installation, so the extension no longer asks for gopls updates when an older versions of go is used. (Issue 2030) Note gopls compiled with go 1.13 or newer can still process projects that use go 1.12. If you want to update gopls while working with an older version of Go, utilize the new "go.toolsManagement.go" setting.

  • Reduced the verbosity of “Go: Locate Configured Go Tools” output.

Code Health

  • Updated to mocha@9.2.0 (CVE-2021-23566).
  • Deflaked debug tests.
  • Changed to check go.dev/dl instead of golang.org/dl for Go release.
  • Improved documentation for the default formatting behavior and template support.


@jamalc @suzmue @pavlelee @dekimsey @hyangah

v0.31.1 - 8 Feb, 2022

A list of all issues and changes can be found in the v0.31.1 milestone and commit history.


  • Fixed the profile functionality broken by VSCode 1.63 (Issue 2048)
  • Include fuzz tests in test explorer UI (Issue 2023)

v0.31.0 - 26 Jan, 2022

A list of all issues and changes can be found in the v0.31.0 milestone and commit history.


  • src/goStatus: assign id/name to each status bar item (Issue 1571)
  • Change go template file language id to gotmpl (Issue 1957)


Test Explorer

  • src/goTest: don't resolve tests in virtual files
  • src/goTest: fix output for subtests (Issue 1837)

Development Process Updates

  • Recommend that contributers use npm ci instead of npm install when developing vscode-go (Issue 2010)
  • test: use @vscode/test-electron instead of vscode-test
  • go.mod: update imports to latest versions
  • package.json: pin direct dependencies (Issue 2010)
  • Enable tests with go1.18beta1 (Issue 1950)


Thank you for your contribution, @firelizzard18, @hyangah, @jamalc, @polinasok, @TheNagaPraneeth, @suzmue!

v0.30.0 - 16 Dec, 2021

A list of all issues and changes can be found in the v0.30.0 milestone and commit history.


  • Debugging

    • dlv-dap is pinned at @2f136727.
    • Remote debugging support using dlv-dap is available.
      Please follow the instruction to enable remote debugging using dlv-dap. (Issue 1861)
    • Launch configuration:
    • Runtime frames are no longer deemphasized. (Issue 1916)
    • Logpoints support is available. (Issue 123)
    • DEBUG CONSOLE accepts the new dlv command that allows users to dynamically inspect/adjust debug configuration. Please run dlv help from DEBUG CONSOLE to see the list of supported options.
    • Bug fixes:
      • Correctly infer mode for attach requests. (Issue 1929)
      • Stop debugging when delve remote connection ends in legacy remote debugging. (CL 366936)
      • Allow users to debug with older versions of dlv-dap. (Issue 1814)
  • Enabled Go template file processing. (Issue 609) By default, files with .tmpl and .gotmpl extension are treated as Go template files.

  • Include Fuzz* functions in Testing UI and adds test codelens. (Issue 1794)

  • gofumports is pinned at v0.1.1. We plan to remove it from the recognized formatter tool list since gofumports is officially deprecated early next year.

  • Disabled separate linting if gopls's ‘staticcheck’ is enabled. (Issue 1867)

  • Updated the in-editor user survey URL. (CL 360775)

  • Limited Go file search scope for extension activation (Issue 1894)

  • Code Health

    • Enabled esModuleInterop. (CL 349170)
    • Bumped TS target to ES2017. (Issue 1712)
    • Updated json-schema to 0.4.0


Thank you for your contribution, @polinasok, @suzmue, @firelizzard18, @hashedhyphen, @fengwei2002, @devuo, @fflewddur, @hyangah

v0.29.0 - 26 Oct, 2021

A list of all issues and changes can be found in the v0.29.0 milestone and commit history.


  • Prompt users for the 2021 Go Developer survey. go.survey.prompt is a new setting to control survey prompts.
  • Use go install for tools installation when using go1.16+. From go1.18, go get will no longer build/install tools. See the deprecation notice. (Issue 1825) The extension runs go install from the workspace root directory, and the old workaround for Issue 757 is unnecessary.
  • Language Server:
    • Print all GOPATHs when there are multiple GOPATHs. (Issue 1848)
    • Synced settings @ gopls/v0.7.3
  • “Go: Generate Interface Stubs” allows '-' as an acceptable char for interface names. (Issue 1670)
  • Test UX:
  • Debug:
    • Added showLog/logOutput/dlvFlags to go.delveConfig setting that change the default values for them. (Issue 1723)
    • Handle directory with '.' in its name correctly and warn users for invalid program (Issue 1826, 1769)


Thank you for your contribution, @firelizzard18, @Zamiell, @mislav, @polinasok, @hyangah, @stamblerre, @suzmue, and @yinheli!

v0.28.1 - 24 Sep, 2021

A list of all issues and changes can be found in the v0.28.1 milestone and commit history.


  • Skipped launch configuration adjustment to address build errors when debugging using externally launched delve DAP servers. (Issue 1793)

v0.28.0 - 20 Sep, 2021

This version requires VS Code 1.59 or newer.

🎉🧪 The extension implements the Testing API of VS Code. You can navigate and run/profile tests using the test explorer UI! Windows support and further work for better profiling and debugging support through the test explorer is underway. Please give it a try and provide feedback.

A list of all issues and changes can be found in the v0.28.0 milestone and commit history.


  • Require VS Code engine 1.59+.
  • Implement the Testing API (Issue 1579). The test provider discovers all Go tests and benchmarks including stretchr test suits (Issue 1641) and sub-tests (Issue 1641). You can adjust behavior with the go.testExplorer.* settings.
  • Offer basic profiling support through the testing API. (Issue 1685)
  • Debugging
    • Allow to connect to a Delve DAP server running on a different host using host and port launch properties. (Issue 1729)
    • Disabled check for active debug session (Issue 1710). This will allow to run multiple debug sessions simultaneously.
    • Disabled the go version check by supplying the --check-go-version=false delve flag (Issue 1716). This is to allow users of older versions of Go to debug using Delve DAP which requires Delve 1.6.1 or newer. If you need to use Delve 1.6.0 or older, please use the legacy debug adapter.
    • Fixed a legacy debug adapter's bug that broke remote debugging when breakpoints were set in irrelevant files. (Issue 1762)
    • Added the new FAQs section.
  • Removed tools version check hack that triggerred unnecessary warnings about go and tools version mismatch issues (Issue 1698).
  • Export an API with which other extensions can query the location of go tools. (Issue 233)
  • Fixed regexps for test function names (CL 344130).
  • Track the language server's restart history and include it in the automated gopls crash report (CL 344130).
  • Code Health


Thank you for your contribution, Nicolas Lepage, 180909, Polina Sokolova, Rebecca Stambler, and Suzy Mueller! Special thanks to Ethan Reesor for the Test Explorer work!

v0.27.2 - 1st Sep, 2021

A list of all issues and changes can be found in the v0.27.2 milestone and commit history.


  • Supports replay and core debug launch modes. (PR 1268)
  • gopls now watches changes in go.work files to support Go Proposal 45713.


  • Fixed issues around building binaries for debugging when symlinks or case-insensitive file systems are involved. (Issues 1680, 1677, 1713)
  • Clarified the dlvLoadConfig setting is no longer necessary with the new debug adapter (dlv-dap). ([CL 344370)(https://go-review.googlesource.com/c/vscode-go/+/344370))
  • Increased the timeout limit from 5sec to 30sec. If dlv-dap still fails to start, please check firewall/security settings do not prevent installation or execution of the dlv-dap (or dlv-dap.exe) binary. (Issue 1693)
  • Go: Install/Update Tools command picks the dlv-dap from the main branch.


Thanks for your contributions, Suzy Mueller, Luis Gabriel Gomez, Polina Sokolova, Julie Qiu, and Hana Kim!

v0.27.1 - 12 Aug, 2021

A list of all issues and changes can be found in the v0.27.1 milestone and commit history.


  • Fixed process pickers used in attach mode debugging. (Issue 1679)
  • Fixed the failure of debugging when CGO_CFLAGS is set. (Issue 1678)
  • Fixed the dlv-dap installation issue. (Issue 1682)


Thanks for your contributions, Luis Gabriel Gomez, Suzy Mueller, and Hana Kim!

v0.27.0 - 9 Aug, 2021

📣 Delve's native DAP implementation (dlv-dap) is enabled by default for local debugging. We updated the Documentation for Debugging to show the new features available with dlv-dap. This change does not apply to remote debugging yet. For remote debugging, keep following the instruction in the legacy debug adapter documentation.

A list of all issues and changes can be found in the v0.27.0 milestone and commit history.



  • Debugging
    • Setting the logOutput property without showLog: true does not break debugging any more.
    • Fixed a bug in the legacy debug adapter that caused jumping at each step after upgrading to VS Code 1.58+. (Issue 1617, 1647)
    • Fixed a bug that broke Attach mode debugging using the legacy debug adapter if cwd is not set. (Issue 1608)
    • Made the dlv-dap mode ignore the port property. It was initially suggested as a temporary alternative to the remote debugging, but we decided to revisit the functionality for better remote debugging support. Use the debugServer property if you want to connect to a manually launched dlv dap server.

Code Health

  • The version of dlv-dap is pinned to v1.7.1-0.20210804080032-f95340ae1bf9 and dlv-dap is marked as a required tool.
  • Updated the hard-coded default gopls version string to v0.7.1.
  • Added tools/relnotes, a script to help generate CHANGELOG.md.
  • Added go1.17 RC to CI. (Issue 1640)
  • Enabled tests that were skipped in dlv-dap mode since dlv-dap reached feature parity.
  • Use StackOverflow as the channel for Q&A.


Thank you for your contribution, Ahmed W, Hana, Michael Currin, Polina Sokolova, Rebecca Stambler, Suzy Mueller, and Sven Efftinge!

v0.26.0 - 17 Jun, 2021

📣 Delve's native DAP implementation is now available for use. In order to use this new debug adapter (dlv-dap) when debugging Go programs, add the following settings in your settings.json:

    "go.delveConfig": {
        "debugAdapter": "dlv-dap",

Please learn more about the new adapter's features and configuration parameters, and share your feedback and report the issues in our issue tracker.

A list of all issues and changes can be found in the v0.26.0 milestone and commit history.


  • dlv-dap is ready for use in local debugging.
  • Added the new "Go: Test Function At Cursor or Test Previous" command. (PR 1509)
  • "Go: Add Imports" command uses gopls instead of gopkg. This requires gopls@v0.7.0 or newer. (Go Issue 43351)


  • Fixed "Go: Lint Workspace" that failed no editor is active. (Issue 1520)
  • Fixed gopls crash caused by Untitled files. (Issue 1559)


Thanks for your contributions, @mislav, @marwan-at-work, @findleyr, @lggomez, @fflewddur, @suzmue, @hyangah!

v0.25.1 - 24 May, 2021

A list of all issues and changes can be found in the v0.25.1 milestone.


  • Change the default path separator to / when applying substitutePath debug configuration. (Issue 1497)
  • Warn users when go.goroot setting is used. (Issue 1501)


  • Update to latest version of dlv-dap. Some of newest additions to dlv dap include optimized function detection, exception info, pause, function breakpoints while running, evaluate over hover, set variables. Documentation of current features and limitations can be found in the documentation.
  • Adjusted feedback survey prompt probability.


Thanks for the contribution, @suzmue, @fflewddur!

v0.25.0 - 12 May, 2021

A list of all issues and changes can be found in the v0.25.0 milestone.

If you have a feature requests for this extension, please file it through the github issue tracker.


  • Update to latest version of dlv-dap. Documentation of current features and limitations can be found in the documentation
  • Add debug previous command (Issue 798)
  • Add Go: Initialize go.mod command to run go mod init in the current workspace folder (Issue 1449)
  • Use program in debug configuration to determine mode in auto (Issue 1422)
  • Auto update dlv-dap if autoUpdates enabled (Issue 1404)
  • Set editor.suggest.snippetsPreventQuickSuggestions to false by default to enable code completion and quick suggestions inside a snippet (Issue 839)


  • Set the GOROOT to the user specified GOROOT in go.goroot
  • Fixed missing file bug in debug adapter (Issue 1447)
  • Fixed inconsistent workpsaceFolder value bug in debug configuration (Issue 1448)
  • Allow dlv-dap to shut down gracefully and clean up debugged process (Issue 120)


Thank you for your contribution, @hyangah, @JadenSimon, @rstambler, @polinasok, @rfindley, and @suzmue!

v0.24.2 - 19 Apr, 2021

A list of all issues and changes can be found in the v0.24.2 milestone.


  • Fixed regression in the lintOnSave feature. (Issue 1429)
  • Fixed dlv-dap installation to correcly use GOBIN environment variable. (Issue 1430)
  • Fixed duplicate error notifications when missing dlv-dap. (Issue 1426)


  • Updated the minimum required dlv-dap version. The new version includes support for substitutePath and shadowed variable annotation.

v0.24.1 - 15 Apr, 2021


  • Cleaned up launch configuration snippets for easier debug setup
  • To use dlv-dap by default for all launch configurations (including codelenses), set the debugAdapter field in the go.delveConfig setting (Issue 1293)
  • The list of debugging features only available with dlv-dap is now available here
  • Updated extension settings to match gopls v0.6.10


  • Tightened the test function detection regex for codelenses (Issue 1417)
  • Show error message when dlv-dap fails to launch (Issue 1413)
  • Corrected install instructions for dlv-dap in popup (Issue 1395)

Code Health

  • Updated latest version of dlv-dap and gopls (v0.6.10)

v0.24.0 - 6th Apr, 2021

🧪 We re-enabled the option to use dlv dap (Delve‘s native DAP implementation) instead of the old debug adapter when debugging go code. See the documentation to learn more about Delve’s native DAP implementation, and how to choose dlv dap.

Full list of issues and changes can be found in the v0.24.0 milestone and the changes since v0.23.3.


  • Supports custom format tools when gopls is enabled. (Issue 1238)
  • Allows to use dlv dap for debugging.


  • Do not lint with staticcheck if it is enabled in gopls. (CL 301053)
  • Use go list to check availability of newly released gopls. (CL 295418)
  • Use go env -json to query go env variables. (CL 301730)
  • Include gopls, go versions and OS info to the opt-out survey.

Code Health

  • npm audit fix
  • Removed the deprecated go.overwriteGoplsMiddleware setting.
  • Added more testing for debug features using dlv-dap.


Thanks for the contributions, @hoanggc, @suzmue, @rstambler, @polinasok!

v0.23.3 - 19th Mar, 2021


  • Always check the gopls version before activating automated issue reporter regardless of the gopls update settings.
  • Updated the hard-coded latest gopls version to v0.6.8 and the gopls settings.

v0.23.2 - 12th Mar, 2021


  • Updated the gopls version requirement. v0.23.1 requires v0.6.6+. (Issue 1300)

v0.23.1 - 11th Mar, 2021

🎉   We use staticcheck as the default lint tool. We also changed to use goimports for formatting when not using gopls.

This version requires VS Code 1.52 or newer.

A list of all issues and changes can be found in the v0.23.1 milestone and the changes since v0.22.1



  • Fixed the spurious popup message about the use of goreturns. (CL 300430)
  • Fixed orphaned progress notification after restarting gopls. (Issue 1153)
  • Fixed cryptic error messages that appear when gopls commands fail. (Issue 1237)
  • Fixed incomplete folding range info issue caused by parse errors. Complete fix requires gopls v0.6.7+ (Issue 1224)

Code Health

  • Updated LSP to 3.16.0 (stable), and DAP to 1.44.0.

v0.23.0 - 4th Mar, 2021

Delve DAP is a new debug adapter embedded in dlv, the Go debugger. It is written in Go, understands Go's data types and runtime better, and is under active development. In this release, we added back access to Delve DAP. Delve DAP is still in the experimental stage and we appreciate any feedback and bug reports!

A list of all issues and changes can be found in the v0.23.0 milestone and the changes since v0.22.1


  • Improved debugging workflow of attaching to local process. (Issue 183) By setting processId to the command name of the process, ${command:pickProcess}, or ${command:pickGoProcess} a quick pick menu will show a list of processes to choose from.
  • Enabled access to Delve DAP again. Simplified the Delve DAP launch workflow and removed the intermediate Node.JS adapter. If "debugAdapter": "dlv-dap" is specified in launch.json configurations, the extension will use Delve DAP for the debug session. When using Delve DAP, install the dev version of dlv built from master (cd; GO111MODULE=on go get github.com/go-delve/delve/cmd/dlv@master) to pick up the latest bug fixes and feature improvement. (Issue 23, 822, 844)
  • Added an opt-in “Always Update” setting for gopls auto-update. (Issue 1095)
  • Go: Reset Global State and Go: Reset Workspace State commands are available for easier extension state reset.
  • Enabled survey to collect feedback from users who disabled gopls.
  • Added a new setting ("go.disableConcurrentTests") that prevents concurrent go test invocation. (Issue 1089)


  • Issue 1113: error message when debugee terminates fast.
  • Issue 179: disable stackTrace error pop-ups during debugging.
  • CL 290289: check incorrect gopls flag usage before automated gopls crash report.
  • Issue 948: show lint tool's name as the lint diagnostic collection name.
  • Issue 1252: search C:\Program Files\Go\bin, C:\Program Files (x86)\Go\bin\go.exe, the new default Go installation path in Windows.

Code Health

  • Migrated to use gts to enforce consistent coding style. (Issue 1227)
  • Preview mode features are available in both Nightly and the dev version.
  • Enabled integration test in Go module mode.
  • Enabled Delve DAP integration test.
  • Removed the latest branch.


Thanks for your contributions, @Charliekenney23, @eneuschild, @suzmue, @stamblerre, @pjweinbgo, @polinasok!

v0.22.1 - 8th Feb, 2021


  • Added error details to automated error reports. (CL 287952)
  • Used clickable links in "go.languageServerExperimentalFeatures" setting deprecation error messages. (CL 288133)


  • Fixed a race during language client restarts. (CL 288372, CL 288352)
  • Disabled the language server when using workspace folders over ssh. (Issue 1171)
  • Added dlv to the "go.alternateTools" example value list. (CL 289231)

Code Health

  • Bumped ini to 1.3.8 to address a vulnerability report from npm audit.


Thank you for your contribution, @stamblerre, @hyangah, @patrasap0908!

v0.22.0 - 26th Jan, 2021

  • The language server, gopls, is enabled by default. (Issue 1037)


  • Added the new Go welcome page. (Issue 949)
  • Updated documentation. (troubleshooting, customization, settings guide)
  • Updated the hardcoded latest gopls version to 0.6.4.


Thank you for your contribution, @suzmue, @stamblerre, @findleyr, @heschik, @hyangah!

v0.21.1 - 21st Jan, 2021

A list of all issues and changes can be found in the v0.21.1 milestone.


  • Fixed the Cannot get property 'get' of undefined error. (Issue 1104)
  • Restored the "go.languageServerExperimentalFeatures" setting for users who depend on this to run custom vet analyzers. (Issue 1110)

v0.21.0 - 20th Jan, 2021

A list of all issues and changes can be found in the v0.21.0 milestone.


  • The new dlvFlags debug attribute is available for conveniently supply extra flags to dlv. (Issue 978)
  • Stop using workspace/folder-level settings from untrusted repositories that can be used to run arbitrary binaries. (Issue 1024)
  • The extension now deduplicates diagnostics from both the language server and the linter. (Issue 142)
  • Disabled gotype-live automatically when the language server is enabled. (Issue 1021)
  • Removed the "go.languageServerExperimentalFeatures" setting. (CL 280601). The documentLink feature is replaced with gopls's ui.navigation.importShortcut setting. The diagnostics feature replacement is still under discussion. Please provide feedback in Issue 50.

Code Health

  • Experimental features that were available only in the nightly extension are enabled in the master branch, and in presubmit & CI tests running on the master branch.


Thank you for your contribution, @hyangah, @suzmue, @pjweinbgo, @stamblerre!

v0.20.2 - 8th Jan, 2021


v0.20.1 - 29th Dec, 2020


  • Fixed a bug that caused incorrect fallback to a common go installation path when go couldn't be found from the regular PATH (Issue 1065)

v0.20.0 - 22nd Dec, 2020

A list of all issues and changes can be found in the v0.20.0 milestone.


  • Debugging
    • The new substitutePath config property allows users to translate their symlinked directories to the actual paths, and the local paths to the remote paths. See Launch Configurations and Remote Debugging for details.
    • Quick pick menu for creating launch.json was added. (Issue 131)
    • Report that next is automatically cancelled by delve if interrupted, for example, because breakpoint is set. See Issue 787 for details. (CL 261078)
  • The new tyf snippet for type name func() was added. (Issue 1002)
  • Include the gopls settings section definition based on gopls v0.6.0. (Issue 197, CL 278355)
  • go.buildFlags and go.buildTags are propagated to gopls unless "gopls": {"buildFlags": ..} is set. (Issue 155)
  • The new go.toolsManagement.checkForUpdates setting allows users to completely disable version checks. This deprecates go.useGoProxyToCheckForToolUpdates. (Issue 963)


  • Added a workaround for the VSCode PATH setup issue. When go isn't found from PATH, the extension will check /usr/local/bin too (Issue 971).
  • Fixed language client crashes or duplicate language features on the guest side of a VS Live Share session. The initial fix added in v0.19.0 for VS Live Share wasn't sufficient. (Issue 605, 1024)
  • Stop requiring to install legacy tools when the language server is used. (Issue 51)
  • Update gopls if the existing version in the system is older than the minimum required version when the extension enables gopls automatically. (Issue 938)
  • Show language server start progress and allow only one outstanding language server restart request. (Issue 1011)
  • Fixed a gocode-gomod installation bug that caused to ignore GOBIN setting. (CL 275877)
  • Marked settings that are not applicable when using the language server. (Issue 155)

Code Health

  • Deprecated unused settings such as go.overwriteGoplsMiddleware and marked deprecated settings.
  • Improved stability of debug functionality tests on windows.
  • Improve the automated gopls issue template message. It includes the extension name and version.
  • Prompt users to file an issue for feedback when they choose to opt out of gopls.
  • CI test workflow now runs vsce package to detect packaging errors early.


Thank you for your contribution, @hyangah, @suzmue, and @programmer04!

v0.19.1 - 9th Dec, 2020

A list of all issues and changes can be found in the v0.19.1 milestone.


  • Fixed Run without Debugging for Windows. This was a regression found in v0.19.0 (Issue 918).
  • Fixed snippets that used the reserved keyword (‘var’) as variable names (Issue 969).
  • Fixed a file path expansion bug in subtest failure messages (Issue 956).
  • Fixed unhandled promise rejection error in debug adapter (Issue 982).


  • Disabled the experimental godlvdap debug configuration from the stable version. It is still available in Go Nightly (Issue 960).
  • Enabled user survey (Issue 910).


Thank you for your contribution, @suzmue, @RomanKornev, @hyangah!

v0.19.0 - 25th Nov, 2020

A list of all issues and changes can be found in the v0.19.0 milestone.



  • Added a snippet for TestMain (Issue 629)
  • Added lispcase, pascalcase and keep as transform variants for go.addTags (Issue 906, 936)
  • Added support for gomodifytags's --template flag (Issue 826)
  • Language Server
    • Upgraded to the latest vscode-languageclient pre-release (Issue 42148)
  • Debugging
    • package.json: activate extension onDebugInitialConfigurations (Issue 131)


  • Fixed test streaming output handling to correctly add -json flag (Issue 471)
  • Fixed bug that unnecessarily buffered test output (Issue 917)
  • Fixed a bug that occurred when choosing a new Go environment using the file picker (Issue 868, 864)
  • Hide running test StatusBarItem after cancelling tests
  • Tool Installation
    • Unset GOOS/GOARCH/GOROOT/... from tool installation env since the tools need to be built for the host machine (Issue 628)
    • Changed the dependency tool installation to use the go command chosen from the current GOROOT/bin for gocode-gomode too (Issue 757)
  • Filter out unsupported document types to improve VS Code Live Share experience (Issue 605)
  • Fixed language server survey computation error
  • Debugging
    • No longer shows a warning about editing Go files if there is no Go Debug Session running.
    • Now removes user set ‘--gcflags’ before passing the program to the debugger, since the debugger adds its own flags before building resulting in an error (Issue 117)
    • Fixed bug where the working directory passed in by the user is ignored (Issue 918)

Code Health

  • Debugging
    • Added additional tests for the debug adapter including for disconnect requests and remote attach scenarios (Issue 779, 790)
    • Added tests for the debug configuration to test the user settings that should affect the debug configuration
  • Improved the extension contributor experience by renaming the test fixtures folder to avoid errors being shown for these files
  • Language Server Tests
    • Changed the test environment setup to use single file edit (Issue 655, 832)
  • Adjusted home directory used in gerrit CI since recent changes in kokoro were restricting access (Issue 833)
  • Updated Github workflows actions/setup-go to v2
  • Restructured the goTest code to be more readable and easier to test
  • Continued to improve the gopls settings documentation generator (Issue 197)


Thank you for your contribution, @pofl, @hyangah, @perrito666, @pjweinbgo, @quoctruong, @stamblerre, @skaldesh, and @suzmue!

v0.18.1 - 30th Oct, 2020

A list of all issues and changes can be found in the v0.18.1 milestone.


  • New Go: extract language server logs to editor command was added (CL 263526).


  • Fixed a bug that hid the Go status bar when there is no active text editor (Issue 831).


Thank you for your contributions, @suzmue, @pjweinbgo!

v0.18.0 - 23rd Oct, 2020

Unified Go status UI ⚡, many debugger feature improvements, and LSP 3.16 features! A list of all issues fixed with this release can be found in the v0.18.0 milestone.

New Features

  • The new Go status bar provides a menu to manage the go version, open the gopls trace, open the go.mod file, and more. The old Go Modules status bar was removed in favor of this new unified status bar. See VS Code Go UI documentation to learn more about this.
  • New Go: Toggle gc details command toggles the display of compiler optimization choice for the open Go source file (CL 256658).
  • Upgraded LSP to 3.16. Users of recent gopls can access new features such as Call hierarchy and Semantic tokens.


  • Debugging:
    • Correctly presents the reason when the debugged program stops due to panic and fatal error (Issue 648).
    • Be explicit about conditional breakpoint support (Issue 781).
    • Debug Adapter logs all the environment variables passed to dlv when verbose logging is enabled.
  • Language Server Client: sends gopls config as LSP initialization options for correct workspace symbols computation (CL 259138).
  • Snippets: adds a placeholder for the for statement snippet (Issue 734).
  • Excludes vendor directories from go.inferGopath disable mechanism (Issue 301).
  • New go.logging.level setting allows extra logging to help debugging extension issues (CL 256557).
  • For Nightly extension users, Go: Show Survey Config and Go: Reset Survey Config commands are available.


  • Fixed the bug that caused the debug adapter to leave bogus null items in the map type variable presentation (Issue 199).
  • Fixed several debug adapter bugs that caused remote debug to hang (Issue 740, 766, 761, 764).
  • Restored the correct handling of language server configuration change when users opt for enabling language server and installing gopls. (CL 258997).
  • Fixed a diagnostics error visualization issue when multiple files with errors are open (Issue 743).
  • Changed the dependency tool installation to use the go command chosen from the current GOROOT/bin. This helps avoid using a different version of go command for asdf or direnv users (Issue 757).


  • Documented the current limitation of symlink support in debugging (CL 257204), improved the instruction for CLI application debugging (CL 259677), and fixed syntax errors in example task configuration snippets (CL 259077).

Code Health

  • Added an initial set of tests for debug adapters (Issue 137). We will keep working to improve our test coverage.


Thank you for your contributions, @suzmue, @vologab, @amitlevy21, @danielhelfand, @egonk, @quoctruong, @polinasok, @pjweinbgo, @stamblerre, @hyangah!

v0.17.2 - 29th Sep, 2020


  • Fixed a regression caused by the change for (Issue 679). If go is not found from PATH available to the extension, the extension tries a couple of well-known default locations to find the go binary. In this case, we need to mutate PATH so other tools including gopls or dlv can choose the same go version. (Issue 713).

v0.17.1 - 28th Sep, 2020


  • Mutate the PATH/Path environment variable only if users explicitly configure to select the go command using go.goroot, go.alternateTools, or Go: Choose Go Environment menu. (Issue 679)
  • Includes sanitized gopls crash traces in the automated gopls crash report. (CL 256878)


  • Changed the default of go.coverMode to be default. (Issue 666)
  • Fixed a missing promise reject when go is not found. (Issue 660)

Thank you for reporting issues!

v0.17.0 - 18th Sep, 2020

Go code debugging and code coverage support is getting better.

The extension will help you stay updated with the new Go releases.

New Features

  • Delve's call feature is now accessible. To use this feature, explicitly specify the call command. E.g. call myAwesomeFunc(). It is an experimental feature in Delve. Please see the current limitations. (Issue 100)
  • The extension checks the go official download site and notifies users of newly available Go versions. When a newer version is available, Go Update Available status bar item will appear. This feature is available only if go.useGoProxyToCheckForToolUpdates is set true. (Issue 483)
  • The new go.coverMode setting allows to use different coverage modes (atomic, count, set (default)). go.coverShowCounts, go.coverageDecorator.{coveredBorderColor, uncoveredBorderColor} were newly added. We are still investigating better ways to visualize the count coverage data; feedback and contribution is welcome! (Issue 256, 594)


  • Expands '~' in the cwd attribute of the launch configuration. (Issue 116)
  • Debug config's showGlobalVariables is disabled by default, and this change improves speed. You can still inspect the global variables by registering them in the WATCH section, or by configuring showGlobalVariables in launch.json. (Issue 138)
  • gofumpt, gofumports is added to recognized formatters list. (Issue 587)
  • Automatically restarts the language server if go.toolsEnvVars configuration is changed. (CL 254370)
  • Reports go env failures. (Issue 555)


  • Fixed to use absolute file paths in error messages appearing in the DEBUG OUTPUT. This allows VS Code to locate the correct files. (Issue 456)
  • Fixed handling of absolute file paths in coverage profile, on windows. (Issue 553)
  • Changed to pass GOROOT when invoking the gopkgs tool so gopkgs continues to work with different go versions without being recompiled. (CL 254137)
  • Fixed to provide explicit directory for running go list and go version. (Issue 610, CL 253600, 253602)
  • Fixed to trigger extension activation when commands for diagnostics, such as Go: Locate Configured Go Tools are invoked. (Issue 457)
  • Fixed to prepend GOROOT/bin to integrated terminal's PATH environment variable when go.goroot is set on OS X. (Issue 544)
  • Fixed to correctly apply environment variables setting read from envFile in the launch configuration. We reworked how the environment variables configuration is processed during this cycle. Now the extension processes the envFile attribute instead of asking the debug adapter process to read the specified envFile. (Issue 452)
  • Disabled go.installDependenciesWhenBuilding by default. When this is enabled, the extension runs go commands with -i, which is no longer recommended with recent versions of Go. (Issue 568)
  • Fixed a bug where we are not sending back ‘configuration done’ response. (Issue eclipse-theia/theia#8455, CL 254959)


Code Health

  • Removed the obsolete string-type coverageDecorator support. (Issue 519)
  • When gopls integration tests fail, tests print the observed gopls traces to help debugging.

Experimental Features

  • We plan to delegate computation of various run test CodeLenses to gopls. This experimental feature can be enabled with the following setting:
"go.useLanguageServer": true,
"gopls": {
	"codelens": { "test": true }


Thank you for your contribution, @suzmue, @pjweinbgo, @ekulabuhov, @stamblerre, @tpbg, @FiloSottile, @findleyr, @quoctruong, @polinasok, @hyangah!

v0.16.2 - 2nd Sep, 2020


  • Fixed the compile error message parsing bug that prevented correct file name expansion in test output. (Issue 522).
  • Fixed the regression that caused to run tests in the local directory mode and result in more verbose output than the package list mode. (Issue 528).
  • Fixed "go.alternateTools" settings to accept any tool names without settings.json diagnostics warning. (Issue 526)

v0.16.1 - 5th Aug, 2020


  • Fixed the bug that made test output verbose by default (Issue 471).
  • Fixed the extension host crash bug due to a process-wide uncaught exception handler accidentally installed along with the inlined debug adapter. This crash bug also caused connection drops when used with the VS Code Remote extension (Issue 467, 469).
  • Readded the predefined variable resolution support for go.goroot and go.toolsEnvVars (Issue 464, 413).

v0.16.0 - 3rd Aug, 2020

This version requires VS Code 1.46+.

Older versions of VS Code will not receive updates any more.

New Features

  • Users can select/install a different version of Go with Go: Choose Go Environment command. When clicking the Go status bar that displays the currently active Go version, users will be prompted with the list of Go versions installed locally or available for download. This feature was built based on the golang.org/dl tools. The selected Go version applies to the workspace, takes precedence over the system default or the "go.goroot" and "go.alternateTools" settings, and persists across sessions. You can clear the choice by selecting the Clear Selection item. (Issue 253)
  • When the Go version changes, the extension prepends $GOROOT/bin to the PATH or Path environment variable which then applies the change to the integrated terminal windows.
  • This version includes an experimental version of the new Debug Adapter that uses Delve's native DAP implementation. It currently supports launch type requests in debug or test mode. This is still in the early stages and requires dlv built from its unreleased, master branch. Subscribe to golang/vscode-go#23 for updates.


  • Bundles the extension using webpack, which reduced the extension size (4.7MB -> 1MB) and the extension loading overhead (3.4K files -> 3 files) (Issue 53).
  • Go: Apply Cover Profile applies code coverage for multiple packages (CL 238697). We fixed bugs in processing coverage profiles on Windows.
  • Suggests the official Go download page when no go tool is found.
  • Utilizes the GOMODCACHE environment variable, introduced in Go 1.15.
  • Prevents multiple debug sessions from launching (Issue 109).
  • Streams test output when tests run with the -v option. This feature requires 1.14 or newer versions of Go (Issue 316).
  • Sets additionalProperties to false for the settings that don't expect more properties. This allows VS Code to handle these settings better in its new settings GUI (Issue 284).
  • Go: Locate Configured Go Tools includes go env results (Issue 195).
  • Avoids prompting users to switch the default format tool in modules mode if users enable the language server.


  • Fixed the PATH environment variable adjustment when users use a wrapper as an alternate tool for go (CL 239697).
  • Fixed a bug in test output processing, which prevented VS code from linking test log messages with locations in the source file.
  • Fixed a gocode-gomod installation bug when GOPATH includes multiple directories (Issue 368).
  • Avoids attempting to kill already terminated processes (Issue 334).
  • Fixed godef to locate standard packages correctly by passing the GOROOT environment variable.
  • Fixed a golangci-lint integration bug that prevented displaying the lint results correctly when linters like nolintlint are enabled (Issue 411).
  • Fixed lost test function name arguments when running Go: Test Previous (Issue 269).

Code Health

  • Many enhancements to improve test reliability and test coverage were made during this dev cycle.
  • TryBot is enabled, and the test results are posted to Gerrit CL. Currently, only the internal team members can see the details of the test results, but we will continue working to make them public.
  • Windows tests are now fixed and enabled in GitHub Action-based CI.
  • Refactored code shared by the extension and the debug adapters to prevent accidental debug adapter breakages.
  • Updated json-rpc2 and lodash to address vulnerability reports from npm audit.


Thank you for your contribution, fujimoto kyosuke, OneOfOne, Aditya Thakral, Oleg Butuzov, Rebecca Stambler, Peter Weinberger, Brayden Cloud, Eli Bendersky, Robert Findley, Hana Kim!

v0.15.2 - 21st July, 2020


  • Do not fail tools installation when gocode is not already running (Issue 355).

v0.15.1 - 7th July, 2020


  • Improved gopls error report suggestion and changed to send reports to the vscode-go issue tracker instead of the go issue tracker (cl/240506).


  • Removed the preview note in the published extension (Issue 273).

v0.15.0 - 29th June, 2020

New Features

  • The new command Go: Subtest At Cursor runs an individual subtest if the subtest's name is a simple string (cl/235447).
  • The new setting go.trace.server controls tracing between VS Code and the language server (cl/232458). Unlike tracing using gopls flags, this controls client-side tracing, and does not require to restart the server to change the value. This client-side trace is presented in the gopls output channel. The server-side trace has been moved to the new gopls (server) output channel (cl/233598).
  • There is now a new Go version status bar item. Clicking it currently only pops up the current GOROOT. We plan to add Go version switch, and other features using this status bar item.


  • Go: Add Tags To Struct Fields prompts transform parameter input if the setting go.addTags.promptForTags is true (Issue 2546).
  • Go: Locate Go Tools command output includes the GOBIN value. (cl/235197).
  • Improved debugging experience
    • The debug adapter automatically infers the mapping between remote and local paths for easy remote debugging (cl/234020, Issue 45).
    • The debug adapter handles errors that can occur during remote connection setup (cl/237550, Issue 215).
    • Failed watch expression evaluation no longer pops up error message windows. The error is visible in the watch window instead (cl/236999, Issue 143).
  • Better language server integration
    • Restart the language server automatically when changes in its configuration or the language server version are detected (cl/232598, cl/233159).
    • Prompts user to file an issue if gopls crashes (cl/233325).
  • go.gopath, go.goroot, go.toolsGopath are now machine-overridable (cl/236539, Issue 2981).
  • The extension does not mutate the GOROOT environment variable any more. go.goroot is used to select the go command under the specified directory (Issue 146).
  • A redundant code action provider was removed when using the language server (cl/239284).


  • Fixed gopls version detection and upgrade logic when pre-release versions are involved (cl/235524).
  • Processes started with Run > Run Without Debugging (^F5) are now cleaned up when the run sessions end (cl/236879).
  • When go.alternateTools.go is set, the path to $(go env GOROOT)/bin is passed to underlying tools to ensure they use the same go version (cl/239697).
  • Now the extension avoids invoking buggy pgrep on mac OS (cl/236538, Issue 90).

Code Health


Thank you for your contribution, Brayden Cloud, Bulent Rahim Kazanci, Eli Bendersky, Hana Kim, Polina Sokolova, Quoc Truong, Rebecca Stambler, Rohan Talip, Ryan Koski, Sean Caffery, Ted Silbernagel, Vincent Jo, and codekid!

0.14.4 - 8th June, 2020

This is the first version published with golang publisher ID. This version is functionally identical to 0.14.3 except the following modifications.

0.14.3 - 21st May, 2020

This is the last version published with ms-vscode publisher ID.

  • Hyang-Ah Hana Kim (@hyangah)
    • Fix the bug introduced in the previous update where the code coverage does not disappear when edits to the file are saved.

0.14.2 - 14th May, 2020

0.14.1 - 15th April, 2020

  • Ramya Rao (@ramya-rao-a)
    • Update the version of vscode-languageclient being used to make use of all the upstream fixes. This changes the min version of the VS Code for upcoming updates of this extension to be 1.41. Older versions of VS Code will no longer receive any updates from this extension.

0.14.0 - 15th April, 2020

Debugging improvements

  • Hyang-Ah Hana Kim (@hyangah)

    • Fix the Run: Start Without Debugging command when using modules or when there is no launch.json file. Fixes Bug 3121 with PR 3125
  • Quoc Truong (@quoctruong)

    • Fix issue of breakpoints not being hit due to mismatch in the path separators in the file paths used by VS Code and the file paths returned by delve. Fixes Bug 2010 with PR 3108
    • Show warning if cwd is not passed when remote debugging in attach mode. PR 2999
  • Luis GG (@lggomez)

    • Add stacktrace dump and better error messages on EXC_BAD_ACCESS panics. Fixes Bug 1903 with PR 2904
  • @marcel-basel

    • When debugging with the program attribute in the debug configuration pointing to a file, debug just the file and not the entire package. This allows one to debug single files when a folder has multiple files with the main function. Feature Request 1229 implemented with PR 3016
  • Ramya Rao (@ramya-rao-a)

    • Show debug watch failures as warnings instead of errors to reduce the noise in debug console. Fixes Bug 3006 with commit 430362e
    • Use go run . instead of passing the current file to the go run command when the command Run: Start Without Debugging command is executed with the program attribute in the debug configuration pointing to a folder. Previously, this would result in errors for cases when the current file uses members from a separate file in the same pacakge. Feature Request 3096 implemented with commit 78518d7e
  • polinasok

    • Use ‘entry’ as stopped event reason when stopping on entry. PR 3150
    • Remove redundant support for thread events. PR 3145

Other improvements

0.13.1 - 27th February, 2020

0.13.0 - 3rd February, 2020

0.12.0 - 31st December, 2019

Language server updates

  • Ramya Rao (@ramya-rao-a)
    • The setting go.languageServerExperimentalFeatures which allows you to disable experimental features from the language server has been trimmed the features that can be thus disabled to the below as rest of the features are deemed to be stable.
      • format
      • documentLink
      • diagnostics
    • Fix error “Cannot read property ‘clear’ of undefined” that appears on running the command Restart language server if the language server had not started successfully.

New features


0.11.9 - 5th November, 2019

0.11.8 - 5th November, 2019

Engineering improvements

0.11.7 - 27th September, 2019

Bug Fixes

  • Ramya Rao (@ramya-rao-a)

    • Fix for bug 2766 where the Go: Test All Packages In Workspace command failed to run tests since the last update.
    • Fix for bug 2765 where the Go: Build Workspace command failed to run the build command since the last update
    • Fix for bug 2770 where failure to find the path to the go binary results in gopls results in the extension throwing error & not working as expected since the last update
    • Use go vet . instead of go vet ./... when vetting current package for better performance.
  • Quoc Truong (@quoctruong)

    • Fix for bug where remote debugging failed if the configured remote path was just /. Fixes Bug 2119 with PR 2794
  • Joel Hendrix (@jhendrixMSFT)

    • Respect the stopOnEntry debug configuration by providing a dummy thread when no threads exist. Fixes Bug 763 with PR 2762

0.11.6 - 21st September, 2019

  • The prompt to update your gopls that was introduced in the previous update, relied on making calls to https://proxy.golang.org. In this patch release, we replace such calls with a check against a known hard-coded value for the latest version of gopls. Details on the next steps here are captured in the issue 2776

0.11.5 - 19th September, 2019

Debugging improvements

  • Quoc Truong (@quoctruong)

    • Fix the bug where setting breakpoint fails if the remote program is started through dlv with --continue switch. Bug 2690
    • Fix the bug where disconnecting (after attaching to) the remote program terminates it Bug 2592
    • Fix the bug where setting breakpoint will fail if a breakpoint already exists (if dlv is started through multi client and another client sets the breakpoint).
  • Hary Prabowo Suryoatmojo (@haryps)

    • Show a warning if an edit to a Go file is saved when a debug session is active. Fixes Bug 2559 with PR 2653

Tooling improvements

0.11.4 - 9th July, 2019

  • Ramya Rao (@ramya-rao-a)

    • Revert marking go.goroot setting to be of scope machine in order to support it to be configured at worksapce level. More in this is discussed at 2576.
    • Support custom arguments when running tests by passing them after -args in go.testFlags setting. Fixes Bug 2457
  • James George (@jamesgeorge007)

    • Update README to contain Table of Contents. PR 2634

0.11.2 - 5th July, 2019

  • Ramya Rao (@ramya-rao-a)

    • Mark only go.goroot and not go.gopath, go.toolsGopath setting to be of scope machine in order to support the latter two to be configured at worksapce level. More in this is discussed at 2576.
  • Daniel Mundt (@dmundt)

    • Update the banner color to have a beter color contrast witht he new logo in the marketplace. PR 2631

0.11.1 - 2nd July, 2019

Bug Fixes

  • Daniel Mundt (@dmundt)

    • Update the extension to use new Go logo! PR 2582
  • Cooper Maruyama (@coopermaruyama)

    • The values in the go.testEnvVars setting should override the ones in the file specified in the go.testEnvFile setting rather than the other way around. Fixes Bug 2398 with PR 2585
  • Benjamin Kane (@bbkane)

    • Add link to all the code snippets provided by the extension in the README. PR 2603
  • Ramya Rao (@ramya-rao-a)

    • Support the output attribute in the debug configuration when mode is set to test. Fixes Bug 2445 with commit 373f0743
    • Fix bug that got introduced in the previous update where nested variables show empty values when debugging. Fixes Bug 2601 with commit e89118e42
    • Warnings regarding the inability to find the go binary in the PATH environment variable now includes the value of the PATH being checked.
    • The prompt to choose goimports instead of the default goreturns as the formatting tool when using modules without the language server, now has the option to not be shown again for cases when you don't want to use goimports. Fixes Bug 2578 with commit 658db8d4
    • Avoid unwanted prompt to re-compile tools when current goroot is different from the previous only in terms of casing. Fixes Bug 2606 with commit b0a2d2d
    • Preserve text highlighting as part of code coverage in multiple editor groups. Fixes Bug 2608 with commit 0de7e94e
    • Update code coverage decorators in the visible editor immediately after corresponding setting is changed rather than wait for focusing on the editor. commit 86df86fd6
    • Mark go.goroot, go.gopath and go.toolsGopath settings to be of scope machine as per upstream request 2576 from VS Code to better support remote scenarios.

0.11.0 - 17th June, 2019

0.10.2 - 30th April, 2019

This patch release has fixes for the below bugs

  • Bug 2469: When the setting go.autocompleteUnimportedPackages is enabled, packages show up in completion list when typing . after a variable or existing package.
  • Bug 2473: Adding of missing imports and removal of unused imports don't work on saving file after using gopls.

0.10.1 - 25th April, 2019

This patch release has fixes for the below bugs

  • Bug 2459: gopls crashes when -trace is set in the go.languageServerFlags setting
  • Bug 2461: Extension uses high CPU due to being stuck in an infinite loop when go.useLanguageServer is set to true, but no language server can be found
  • Bug 2458: Reference to GOPATH when dependent tools are missing misleads users to think that they need GOPATH for the extension to work

0.10.0 - 23rd April, 2019

Go Modules support improvements

New features

Debugging improvements


0.9.2 - 12th February, 2019

  • When the program being debugged closes naturally, avoid showing the error from delve when trying to halt it. Fixes Bug 2313 with commit fd5a488c2

0.9.1 - 6th February, 2019

  • Fix regression where benchmarks get run without the -bench flag

0.9.0 - 6th February, 2019

Debugging improvements


0.8.0 - 12th December, 2018


  • Rebecca Stambler (@stamblerre)

    • Support modules when GO111MODULE is explicitly set inside GOPATH.
  • Ramya Rao (@ramya-rao-a)

    • Support Go to Definition feature when using modules even when VS Code is not started from the same path as the project.
    • Support Go to Definition feature on a symbol from a file from module cache.


Code Navigation




0.7.0 - 6th November, 2018

Engineering Updates

Documentation Updates

0.6.93 - 18th October, 2018

Fix for issue with installing/updating tools when using the Go: Install/Update Tools command. Bug 2024 fixed by Kaarthik Rao Bekal Radhakrishna (@karthikraobr) and Ramya Rao (@ramya-rao-a)

0.6.92 - 17th October, 2018

Documentation Updates

Engineering Updates

0.6.91 - 10th October, 2018

0.6.90 - 3rd October, 2018

  • Rebecca Stambler (@stamblerre)

    • Use of forks for the tools godef and gocode to provide Go to definition and Auto-completion features respectively when using Go modules. The binaries installed from these forks will have the suffix -gomod and will only be used when you use Go modules.
  • Bianca Rosa de Mendonça (@biancarosa)

    • New commands Go: Benchmark File, Go: Benchmark Package and codelens to run all the benchmarks in current file & package respectively. Feature Request 1522 with PR 1898 & PR 1899
  • Jeffrey Bean (@jeffbean)

    • New setting go.generateTestsFlags to provide flags for the gotests tool when generating tests. PR 1841
  • Johan Lejdung (@johan-lejdung)

    • New setting go.testTags to be used for running tests. This way, you can use the existing go.buildTags for compiling and a different set of tags for running tests. Feature Request 1842 implemented with PR 1877
  • Ryan Gurney (@ragurney)

  • Benas Svipas (@svipben)

    • Fix accessibility issues with the Analysis Tools Missing button in the status bar. PR 1922
  • Alec Thomas (@alecthomas)

  • Charles Kenney (@Charliekenney23)

    • Create new tmp directory for each session to avoid insecure use of the temporary files created by the extension. Fixes Bug 1905 with PR 1912
  • Shreyas Karnik (@shreyu86)

    • Provide auto-completions for symbols from unimported packages even when the package name has multiple matches. Fixes Bug 1884 with PR 1900
  • Ramya Rao (@ramya-rao-a)

    • Use random port instead of hard-coded 2345 when running delve. Fixes Bug 1906
    • Fix issue where tests using the check package cannot be run using the Go: Test File command. Bug 1911
    • Disable module support when installing the Go tools. Fixes Bug 1919
    • Use version 2 of delve apis by default instead of version 1. Replace existing useApiV1 setting/configuration with apiVersion. Feature Request 1876
    • Prompt to update gogetdoc and gopkgs if using Go modules.
    • Disable go.inferGopath in workspace settings when using Go modules automatically.
    • Add support for the below features when using Go modules
      • Go: Add Import command that gives you a list of importable packages to add to the import block of current file
      • Go: Browse Packages command that lets you browse available packages and their files
      • Auto-completion of unimported packages when go.autocompleteUnimportedPackages setting is enabled.

0.6.89 - 30th August, 2018

  • Show package variables and not just local variables in the debug viewlet when debugging. Feature Request 1854 implemented with PR 1865
  • Fix issue with anti virus scans blocking download of the Go plugin due to a dependency. Bug 1871
  • Fix broken code coverage feature in Windows in Go 1.11 as the cover profile no longer uses backward slashes. Bug 1847
  • Update existing Go tools when Go version or goroot changes, instead of the checkbox UI where user has to select the tools to update.

0.6.87 and 0.6.88 - 16th August, 2018

Bug Fixes

  • Extension host crashing with SIGPIPE error on machines that do not have the Go tools that the extension depends on instead of graceful error handling. Bug 1845
  • Build fails on unix machines if user doesnt have entry in the /etc/passwd file. Bug 1850
  • Avoid repeating gopath when the inferred gopath is the same as env gopath

0.6.86 - 13th August, 2018

Debugging improvements

  • Zyck (@qzyse2017)

    • Introducing a new mode for debugging called auto. In this mode, the debugging sessions will run in test mode automatically if the current active file is a test file. Otherwise this defaults to the usual debug mode. Feature Request 1780
  • Luis GG (@lggomez)

    • Errors from delve api calls are now shown in the debug console when "showLog": true is added to the debug configuration. PR 1815.
  • Ramya Rao (@ramya-rao-a)

    • Fix bug when debugging a program that runs in a loop forever is not stopped when the stop button is clicked. Bug 1814
    • Fix bug when a previous failed debugging session due to compile errors results in failure of future sessions after fixing the compile error. Bug 1840
    • The environment variables in go.toolsEnvVars setting which gets used by all Go tools in this extension will now be passed to dlv as well during debugging sessions. With this change you dont need to repeat the variables in the debug configuration if you have already added it in the settings. Feature Request 1839


  • Ramya Rao (@ramya-rao-a)

    • The go.gopath command when run programatically by other extensions now returns the GOPATH as determined by this extension. Useful for other extensions that want to provide additional features but do not want to repeat the work done by this extension to determine the GOPATH.
  • Darrian @(rikkuness)

    • Fix bug with permission issues when there are mutliple user accounts on the same machine by using separate tmp files. Bug 1829 fixed with PR 1835
  • Filip Stanis @(fstanis)

    • Fix error handling when the error returned by the process that runs formatting is not a string. PR 1828

0.6.85 - 26th July, 2018

0.6.84 - 29th June, 2018

0.6.83 - 15th Jun, 2018

  • Luis GG (@lggomez)

  • @ikedam

    • New setting go.alternateTools to provide alternate tools or alternate paths for the same tools used by the Go extension. Provide either absolute path or the name of the binary in GOPATH/bin, GOROOT/bin or PATH. Useful when you want to use wrapper script for the Go tools or versioned tools from https://gopkg.in. PR 1297. Some scenarios:
      • Map go to goapp when using App Engine Go
      • Map gometalinter to gometalinter.v2 if you want to use the stable version of the tool
  • Ramya Rao (@ramya-rao-a)

    • Support the new outline feature which is in preview. Bug 1725
    • Close gocode before updating and show appropriate message when failed to do so.

0.6.82 - 6th June, 2018

0.6.81 - 4th June, 2018


Bug Fixes

0.6.80 - 14th May, 2018

0.6.79 - 4th May, 2018

0.6.78 - 3rd April, 2018

New Features and Enhancements

Bug Fixes

  • Kegsay @Kegsay

    • Fix bug where debug codelens would debug all tests that match the current test name. PR 1561
  • Nuruddin Ashr (@uudashr)

    • Fix bug where internal packages are allowed to be imported when their path is substring of current package. PR 1535
  • Ramya Rao (@ramya-rao-a)

    • Fix Go to Implementation feature when GOPATH is directly opened in VS Code. Bug 1545 and Bug 1554
    • Fix issue with debugging into std lib when remote debugging and remote path is a complete substring of the local path.

0.6.77 - 20th February, 2018

0.6.76 - 10th February, 2018

  • Bug 1449: Rename fails due to cgo not being able to find the go executable.
  • Bug 1508: Broken Path in Windows when running Go tools

0.6.74 - 8th February, 2018

  • Nikhil Raman (@cheesedosa)

    • Feature Request 1456: Show build/vet/lint status in status bar instead of opening output pane when run manually
  • Ramya Rao (@ramya-rao-a)

    • Bug 1470: Go: Build Workspace command or the setting "go.buildOnSave": "workspace" results in persistent error from trying to build the root directory with no Go files.
    • Bug 1469: Formatting adds �� in Chinese files some times.
    • Bug 1481: Untitled files in empty workspace results in build errors
    • Bug 1483: Generating unit tests for a function generates tests for other functions with similar names

0.6.72 - 9th January, 2018

  • Ramya Rao (@ramya-rao-a)
    • Fix the issue that got introduced in the previous release, where formatter reverts changes unless goreturns is updated. Fixes Bug 1447
    • ~, $workspaceRoot and $workspaceFolder are now supported in the go.goroot setting
  • Ben Wood @(benclarkwood)
    • Collapse single line imports into an import block when auto-completing symbols from unimported packages or when using the Go: Add Import command. Fixes Bug 374 with PR 500

0.6.71 - 5th January, 2018

  • Ramya Rao (@ramya-rao-a)

    • Setting go.inferGopath will now infer the correct GOPATH even in the below 2 cases which wasnt supported before
      • When a Go file is opened in VS Code directly without opening any workspace.
      • When GOPATH itself is directly opened in VS Code. Fixes Bug 1213
    • Use byte offset when calling gocode to fix issue with code completion when there are unicode characters in the file. Fixes Bug 1431
    • Add descriptions to the contributed snippets. These descriptions will appear in auto-completion and when using the Insert Snippet command
    • Fix “maxBufferExceeded” error by using spawn instead of exec when running formatters.
    • Use the new onDebugResolve activation event instead of onDebug to avoid activating the Go extension when other type of debug sessions are started
  • halfcrazy

  • Nikhil Raman (@cheesedosa)

0.6.70 - 19th December, 2017

  • Avihay Kain (@grooveygr)
  • Matt Brandt (@Matt007)
    • Debug configuration snippet for remote debugging. PR 1365
  • Ramya Rao (@ramya-rao-a)
    • Prompt to recompile dependent Go tools when GOROOT changes. Feature Request 1286
    • Support for ${workspaceFolder} in the below settings
      • go.gopath
      • go.toolsGopath
      • go.testEnvVars
      • go.testEnvFile
    • The Analysis Tools Missing message has bee updated to only appear for the tools backing basic features of the extension
    • Skip showing linting/vetting errors on a line that has build errors. Feature Request 600
    • Fix the issue of slow linters resulting in stale problem markers in updated file. Bug 1404
    • Deprecate go.formatOnSave setting in favor of editor.formatOnSave. To disable formatting on save, add the below setting:
      "[go]": {
          "editor.formatOnSave": false
      This fixes the below issues
      • Cursor jumps unexpectedly when formatting on save. Bug 1346
      • Adopting the format on save feature of VS Code. Debt 540
      • Format-on-save messes up undo/redo stack Bug 678
      • FormatOnSave re-saves file Bug 1037
      • Save All doesnt format all files Bug 279
      • Slow format on save affects tests Bug 786

0.6.69 - 27th November, 2017

  • New commands

  • Completion Improvements

  • Performance improvements

    • Ramya Rao (@ramya-rao-a)
      • The autobuild feature of gocode which is known to slow completions is now disabled by default. Fixes Bug 1323
        • Since we use the -i flag when building, we do not rely on autobuild feature of gocode to ensure fresh results from dependencies.
        • If you have disabled the buildOnSave setting, then use the new Go: Build Current Package command once in a while to ensure the dependencies are up to date or enable the go.gocodeAutoBuild setting.
      • In Go 1.9 and higher, running the vet feature in the absence of vet flags will be faster due to the use of go vet ./... instead of go tool vet -flags. Fixes Bug 1215
      • Performance issues caused by a large number of lingering processes for vet/lint/hover features are now solved.
        • Measures are now in place to kill older processes before starting new ones for vet/lint feature. Fixes Bug 1265
        • For other features like hover/outline/definition etc. the cancellation token provided by the core is used to kill processes if the corresponding request from the core is cancelled. Fixes Bug 667
  • Others

0.6.67 - 4th November, 2017

0.6.66 - 2nd October, 2017

Multi Root support when using VS Code Insiders

We now have Multi Root support for Go. PR 1221 Please note:

  • The settings at Folder level takes precedence over the ones at the Workspace level which in turn take precedence over the ones at the User level
  • You can have the different roots in the multi-root mode use different GOPATHs. The experimental language server feature is not supported in such cases though.
  • All current Go related features that refer to “workspace” will refer to the individual roots in the multi root mode. For example: Build/lint/vet/test workspace or Go to Symbol in workspace.
  • Give it a try and log any issues that you find in the vscode-go repo

Auto-completion improvements

  • Nuruddin Ashr (@uudashr)
    • Auto-completion for unimported packages that are newly installed/built will now show up without the need for reloading VS Code.
    • Completions from sub vendor packages that were showing up are ignored now. Fixes Bug 1251
    • The package snippet completion is now smarter when suggesting package names. PR 1220. It suggests
      • main when current file is main.go or there exists a main.go file in current folder
      • The folder name when the current file is internal_test.go
      • The folder name with _test when current file is a test file
      • If the folder name in above cases has - or ., then what appears after the - or . is suggested.
  • Alexander Kohler (@alexkohler)
    • A new setting go.useCodeSnippetsOnFunctionSuggestWithoutType is introduced. This allows completions of functions with their parameter signature but without the parameter types. Feature Request 1241
  • Miklós @kmikiy
    • 3 New snippets for the Log methods from the testing package

Improvements around running and debugging tests

  • zhouhaibing089 (@zhouhaibing089)
    • Running and debugging tests for packages in symlinked folders is now possible. PR 1164
  • Katsuma Ito (@ka2n)
    • The Debug Test codelens now uses the buildTags and buildFlags correctly. PR 1248
  • Chase Adams (@chaseadamsio)
    • You can now run tests from unsaved files. Fixes Bug 1225
  • Ramya Rao (@ramya-rao-a)
    • Changes done to coverage options and decorators in settings now apply immediately without the need for moving to another file and back. Fixes Bug 1171
    • The Run Test and Debug Test codelens react to change in the codelens setting immediately without the need for moving to another file and back. Fixes Bug 1172
    • $workspaceRoot will now be resolved when part of go.testEnvVars and go.toolsEnvVars setting.

Improvements around Packages

  • Nuruddin Ashr (@uudashr)
    • Go: Browse Packages command will now include newly installed/built packages without the need for reloading VS Code.
  • Hugo (@juicemia)
    • A new command Go: Get Package is introduced to run go get on the package in the import statement under the cursor. PR 1222

0.6.65 - 6th September, 2017

Seonggi Yang (@sgyang)

  • Bug #1152: Auto completions for unimported packages do not work anymore on certain machines. PR 1197

Ramya Rao (@ramya-rao-a)

  • Bug #1194 and Bug #1196: Debugger doesnt use GOPATH from env in debug configuration
  • Go to implementation cmd doesnt show up when using the language server.

0.6.64 - 5th September, 2017

  • Dan Mace (@ironcladlou), Vincent Chinedu Okonkwo (@codmajik) & Dima (@hummerd)
  • Craig-Stone (@Craig-Stone)
    • Normalize program path in Windows which otherwise prevented breakpoints from being set correctly when remote debugging. PR 1131
  • Marwan Sulaiman (@marwan-at-work)
    • Refactor the code behind Go: Browse Packages to make browsing selected package faster. PR 1136
  • Thomas Darimont (@thomasdarimont)
    • A new snippet called helloweb that generates a web app with an http endpoint returning a greeting and current time. PR 1113
  • Nuruddin Ashr (@uudashr)
    • Refactor the way test output is shown to show output of log.Println. Fixes Issue #1120 with PR 1124
  • Ramya Rao (@ramya-rao-a)
    • Test Improvements
      • Show test coverage after the command Go: Test Package is run. You can disable this by setting go.coverOnTestPackage to false.
      • Show test coverage even if files are outside of GOPATH. Fixes Issue #1122
      • Decouple running test coverage on save from running build/lint/test on save. Fixes the issue where the problems view was not getting updated until go.coverOnSave was disabled.
    • Debugging Improvements
      • No need to set GOPATH in debug configuration in the launch.json file anymore. When no GOPATH is provided this way, the debug adapter will now infer the GOPATH based on the path of the file/package being debugged. This fixes Issue #840.
      • The debug code lens will now honor the go.buildFlags, go.buildTags and go.testFlags settings. Fixes Issue #1117
      • Fix issue with stepping over standard library code when remote debugging in Windows. Fixes Issue #1178
    • Other Bug Fixes

0.6.63 - 26th July, 2017


  • Ian Chiles (@fortytw2)
    • Option to use megacheck as a linting tool which can have significantly better performance than gometalinter, while only supporting a subset of the tools. Use the setting go.lintTool to try this.
  • alexandrevez (@alexandrevez)
    • Option to highlight gutters rather than full text for code coverage. Use the new setting go.coverageDecorator to try this.
  • Ramya Rao (@ramya-rao-a) & Marwan Sulaiman (@marwan-at-work)
    • Browse packages and go files with new command Go: Browse Packages. Feature Request 330
      • If cursor is on an import statement, then files from the imported package will be shown in the quick pick control
      • Else, all packages are shown in the quick pick control. Select any and corresponding Go files will be shown next.
      • Selecting any of the Go files, will open the file in a new editor.
  • Saud Khan (@bidrohi)
    • Print import paths of Go tools as they get installed. PR 1032
  • Ramya Rao (@ramya-rao-a)
    • Prompt to update dependent Go tools when there is a change in the Go version. Feature Request 797
    • Better user experience when dependent Go tools are missing. Feature Request 998
      • Prompts will only show up for tools that are used for features that are explicitly executed by the user. Eg: Rename, Generate Unit Tests, Modify tags. And not for features that get triggered behind the scenes like linting, hover or format on save.
      • When the prompts do show up, closing them will ensure that they wont show up for the duration of the current session of VS Code.

Bug Fixes

  • llife0915 (@llife0915)
    • Fix for issue when unverified breakpoints appeear when creating/deleting breakpoints once debugging starts in Windows.
  • Roman Peshkov (@rpeshkov)
    • Expand file names to file paths in test output for subtests. Bug 1049
  • Guilherme Oenning (@goenning)
    • Pass GOPATH to debug adapter when debugging tests via codelens. Bug 1057
  • Nuruddin Ashr (@uudashr)
    • Skip testing vendor folders when using the command Go: Test all Packages in Workspace
  • Ramya Rao (@ramya-rao-a)
    • Start without debugging should fallback to debug mode when configured program is not a file. Bug 1084
    • Fix for incorrect package name during autocomplete of unimported packages when package name is not the same as the last part of the import path. Bug 647
    • Skip building vendor folders when go.buildOnSave is set to workspace. Bug 1060
    • Honor go.buildTags when using gogetdoc. Bug 1024
    • Fix build failure when -i is passed as a build flag. Bug 1064
    • Fix vet failure when any flag is passed. Bug 1073
    • Better formatting in import blocks when imports get added during auto-completion or when Go: Add Import command is used. Bug 1056
    • Go: Generate Interface Stubs should work when interface is prefixed with package path

0.6.62 - 9th June, 2017


  • Jamie Stackhouse (@itsjamie)
    • New command Go: Generate interface stub to generate stubs that implement given interface using impl. PR 939
      • When the command is run, you are prompted to provide interface name. Eg: f *File io.Closer
      • The stubs are then generated where the cursor is in the editor.
  • Guilherme Oenning (@goenning)
    • New setting go.testEnvFile to configure the location of a file that would have environment variables to use while running tests. PR 971
      • File contents should be of the form key=value.
      • Values from the existing setting go.test.EnvVars will override the above
      • These environment variables will also be used by the “Debug Test” codelens
      • When debugging using the debug viewlet or pressing F5, the above will not be used. Continue to use the env and/or envFile property in the debug configurations in the launch.json file.
  • Ole (@vapourismo)
    • You can now run build/lint/vet on the whole workspace instead of just the current package on file save. PR 1023
      • To enable this, the settings go.buildOnSave, go.lintOnSave and go.vetOnSave now take values package, workspace or off instead of the previous true/false.
      • These features are backward compatible and so if you are still using true/false for these settings, they will work as they did before, but you will get a warning in your settings file.
  • Ramya Rao (@ramya-rao-a)
    • Better build performance when working on main packages and test files by using the -i flag.
    • Better linting experience while running gometalinter by using the --aggregate flag which aggregates similar errors from multiple linters.

Bug Fixes

  • Ramya Rao (@ramya-rao-a)
    • Fix for Bug 968 where rename fails if --- is anywhere in the file
    • Fix for Bug 981 where Go: Test Function At Cursor fails.
    • Fix for Bug 983 where the Go binary is not found in MSYS2 as it is not located in GOROOT.
    • Fix for Bug 1022 where snippets from function auto complete do not insert the placeholders
    • Fix for Bug 962 where references codelens wouldn't work for methods.
  • F0zi (@f0zi)
    • Fix for Bug 1009 where remote debugging fails to verify breakpoint if GOPATH partially matches remote GOPATH
  • Anton Kryukov (@Emreu)
    • Use the go.testEnvVars while debugging tests using codelens

0.6.61 - 4th May, 2017

  • Ramya Rao (@ramya-rao-a)
    • Fix for Bug 963 Fix for perf issues when references codelens is enabled. Commit 352435a
    • Fix for Bug 964 The setting go.referencesCodeLens.enabled is deprecated in favor of go.enableCodeLens to control multiple types of codelens.
      "go.enableCodeLens": {
          "references": false,
          "runtest": true

0.6.60 - 3rd May, 2017

Codelens for references, to run and debug tests

Test Coverage

  • Thomas Bradford (@kode4food)
    • New setting go.coverageOptions to control whether you want to highlight only covered code or only uncovered code or both when code coverage is run. PR 945
  • Ramya Rao (@ramya-rao-a)
    • The command Go: Test Coverage In Current Package is renamed to Go: Toggle Test Coverage In Current Package and it does exactly what the name suggests. Toggles test coverage. Commit cc661daf

Bug Fixes

  • Ramya Rao (@ramya-rao-a)
    • Fix for Bug 529 Code completion for unimported packages now works on unsaved file after deleting imports.
    • Fix for Bug 922 Go to Symbol in File feature now includes symbols from unsaved file contents. PR 929
    • Fix for Bug 878 Debugging now works on current file even when there is no folder/workspace open. Commit 42646afc
    • Fix for Bug 947 Mac users using the latest delve from master may see that all env variables are empty while debugging their code. This is due to delve using the --backend=lldb option in Mac by default. You can now change this default value by setting the backend property to native in the launch.json file. Commit 4beecf1. Root cause is expected to be fixed in delve itself and is being tracked in derekparker/delve/818
  • Tyler Bunnell (@tylerb)
    • Fix for Bug 943 Live error reporting now works across multiple files in the current package, mapping errors to the correct files. PR 923
  • Guilherme Oenning (@goenning)
    • Fix for Bug 934 Environment variables from envFile attribute in the launch.json file is used while debugging and is overridden only by the ones in the env attribute. PR 935


0.6.59 - 4th April, 2017

  • Tyler Bunnell (@tylerb)

    • Add live error feedback using gotype-live which is gotype with support for unsaved file contents. PR 903
      • New setting go.liveErrors controls this feature.
      • Set "go.liveErrors": { "enabled": true } to enable this feature
      • Edit the delay property in "go.liveErrors": { "enabled": true, "delay": 500 } to update the delay (in milliseconds) after which gotype-live would be run post a keystroke
  • Eon S. Jeon (@esjeon)

    • GOPATH from settings is now honored when users debug current file without having a launch.json file. PR 904
      • Note: Once you have a launch.json file, GOPATH from settings wont be read. You will need to set it in the env property as before
  • Ramya Rao (@ramya-rao-a)

    • --config flag for gometalinter now supports the use of ${workspaceRoot} and ~ that allows users to provide config file path relative to workspace or home directory respectively. PR 909
    • New command Go: Test All Packages in Workspace to run tests from all packages in the workspace.

0.6.57 - 30th March, 2017

Fix for Bug 892 which breaks build when the user has multiple GOPATHs and the Go project being worked on is not the first one among the multiple GOPATHs. Commit d417fd6

0.6.56 - 29th March, 2017

Editing improvements

  • Ramya Rao (@ramya-rao-a)
    • Use gomodifytags to add/remove tags on selected struct fields. PR 880
      • If there is no selection, then the whole struct under the cursor will be selected for the tag modification.
      • Go: Add Tags command adds tags configured in go.addTags setting to selected struct fields. By default, json tags are added. Examples:
        • To add xml tags, set go.addTags to {"tags": "xml"}
        • To add xml with cdata option, set go.addTags to {"tags": "xml", "options": "xml=cdata"}
        • To add both json and xml tags, set go.addTags to {"tags": "json,xml"}
      • Go: Remove Tags command removes tags configured in go.removeTags setting from selected struct fields.
        • By default, all tags are removed.
        • To remove only say xml tags, set go.removeTags to {"tags": "xml"}
      • To be prompted for tags instead of using the configured ones, set go.addTags and/or go.removeTags to {"promptForTags": true}
    • Fix rename issue when diff tool from Git or Cygwin are in the PATH in Windows. PR 866
    • Keywords are now supported in completion suggestions. PR 865
    • Suggestion items to import packages disabled in single line import statements and the line with package definition where they do not make sense. PR 860

Debugging improvements

  • Ramya Rao (@ramya-rao-a)
    • Support to build and run your Go file. PR 881
      • Press Ctrl+F5 or run the command Debug: Start Without Debugging to run using the currently selected launch configuration.
      • If you don't have a launch.json file, then the current file will be run.
      • Supported only for launch configs with type as debug and program that points to a Go file and not package
    • New envFile attribute in launch.json where you can provide a file with env variables to use while debugging. PR 849
    • Use current file's directory instead of folder opened in VS Code to debug in the default configurations. Commit 0915e50a

Tooling improvements

  • Ramya Rao (@ramya-rao-a)
    • New Setting go.languageServerFlags that will be passed while running the Go language server. PR 882
      • Set this to ["trace"] to see the traces from the language server in the output pane under the channel “go-langserver”
      • Set this to ["trace", "logfile", "path to a text file to log the trace] to log the traces and errors from the language server to a file.
    • Go: Install Tools command now installs delve as well in Linux and Windows, but not in Mac OSX. Commit 30ea096 Fixes Bug 874
  • netroby @netroby
    • Go: Install Tools command now installs godoc. PR 854


  • Ramya Rao (@ramya-rao-a)
    • Use GOPATH as defined by the go env output as default. Use go binary from default platform specific locations when GOROOT is not set as env variable. Fixes Bug 873
    • Fix compiling errors for vendor packages in case of symlinks. PR 864
    • Support links in the test output, which then navigates the user to the right line of the test file where tests are failing. PR 885
    • Experimental new setting go.editorContextMenuCommands to control which commands show up in the editor context menu.
  • Albert Callarisa (@acroca) and Ramya Rao (@ramya-rao-a)
    • New setting go.gotoSymbol.ignoreFolders that allows to ignore folders while using the “Go to Symbol in Workspace” feature. This takes in an array of folder names (not paths). Best used to ignore vendor folders while doing a workspace symbol search. PR 795

0.6.55 - 3rd March, 2017

  • Re-publishing the extension from a non Windows machine as the fix for Bug 438 worked only on Windows machines. For details read the discussion in PR 838.

0.6.54 - 28th February, 2017

Tooling improvements

  • Ramya Rao (@ramya-rao-a) and Sourcegraph
    • A new setting go.useLanguageServer to use the Go language server from Sourcegraph for features like Hover, Definition, Find All References, Signature Help, Go to Symbol in File and Workspace. PR 750
      • This is an experimental feature and is not available in Windows yet.
      • If set to true, you will be prompted to install the Go language server. Once installed, you will have to reload VS Code window. The language server will then be run by the Go extension in the background to provide services needed for the above mentioned features.

GOPATH improvements

  • Ramya Rao (@ramya-rao-a)
    • Fix for Bug 623. ${workspaceRoot} and ~ are now supported in go.gopath and go.toolsGopath settings. PR 768
    • The default GOPATH used by Go 1.8 when none is set as environment variable is now supported by the extension as well. PR 820
  • Vincent Chinedu Okonkwo (@codmajik)
    • Added new setting go.inferGopath. When true GOPATH will be inferred from the path of the folder opened in VS Code. This will override the value from go.gopath setting as well as the GOPATH environment variable. PR 762

Debugging improvements

  • Ramya Rao (@ramya-rao-a)
    • Debug current file without a launch configuration file. Simply press F5 to start the debug session. A launch.json is still required to debug tests or for advanced debug configurations. PR 769
    • Launch configuration snippets are now available for common scenarios like debugging file/package or debugging a test package/function. These snippets can be used through IntelliSense when editing the launch.json file. PR 794
    • Fix for Bug 492. Now when there are build errors, starting a debug session will display the error instead of hanging. PR 774
  • Rob Lourens (@roblourens)
    • Fix for Bug 438. Now when you stop a debug session, all processes started by the session will be closed as well. PR 765
  • Suraj Barkale (@surajbarkale-dolby)
    • Fix for Bug 782. Helpful error messages when the program attribute in launch.json file is invalid or not a full path. PR 790
  • F0zi (@f0zi)
    • Fix for Bug 689. When debugging against a remote machine, paths anywhere under the GOPATH will be correctly mapped so you can set breakpoints in them. Previously only paths next to the program could be debugged. PR 742

Testing improvements

  • Oleg Bulatov (@dmage)
    • Added new setting go.testOnSave. When true, all tests in the current package will be run on saving a Go file. The status of the tests will be shown in the status bar at the bottom of the VS Code window. It is not advised to have this on when you have Auto Save enabled. PR 810
  • Jeff Willette (@deltaskelta)
    • Test output is no longer verbose by default. Add -v to the go.testFlags to get verbose output. PR 817

Other Bug Fixes

  • Richard Musiol (@neelance)
    • Fix offset for files with multibyte characters so that features like Hover and Go To Definition work as expected. PR 780
  • Ramya Rao (@ramya-rao-a)
    • Fix for Bug 777 Less disruptive experience during test failures when go.coveronSave is true.
    • Fix for Bug 680 Reduce noise in Go to Symbol in File feature by removing the entries corresponding to import statements. PR 775

0.6.53 - 30th January, 2017

Installation improvements

  • Sam Herrmann (@samherrmann), Ramya Rao (@ramya-rao-a)
    • A new setting go.toolsGopath for providing an alternate location to install all the Go tools that the extension depends on, if you don't want them cluttering your GOPATH. PR 351 and PR 737.
      • This is useful when you work on different GOPATHs.
      • Remember to run Go: Install Tools command to install the tools to the new location.
  • Ramya Rao (@ramya-rao-a)
    • All the “Install tool” options (the pop ups you see) and the Go: Install Tools command now support gometalinter if it is your chosen linting tool. PR 735.
      • Since gometalinter internally installs linters and expects them to be in the user's GOPATH, gometalinter will get installed to your GOPATH and not the alternate location specified in go.toolsGopath

Build improvements

  • Matt Aimonetti (@mattetti)
    • While building, we now use the -i flag (for non main packages) which installs dependent packages, which in turn get used in subsequent builds resulting in faster builds in bigger workspaces. PR 718
  • Ramya Rao (@ramya-rao-a)
    • Build errors with no line numbers (for eg. Import cycle) are now displayed in the output window and will be mapped to the first line of the file. PR 740

Test improvements

  • Ramya Rao (@ramya-rao-a)
    • A new setting go.testFlags that can be used to run tests. If null, go.buildFlags will be used. PR 482

    • Customize flags for each of the test command by using different keybindings. PR 482. In the below example, ctrl+shift+t is bound to run the tests in current file with -short flag. The commands here can be go.test.package, go.test.file or go.test.cursor.

          "key": "ctrl+shift+t",
          "command": "go.test.file",
          "args": {
              "flags": ["-short"]
          "when": "editorTextFocus"
    • New toggle command Go: Toggle Test File that lets you toggle between your Go file and the corresponding test file. Previous commands Go: Open Test File and Go: Open Implementation For Test File have been deprecated in favor of this new command. PR 739. You can add a keyboard binding to this as below:

          "key": "ctrl+shift+t",
          "command": "go.toggle.test.file",
          "when": "editorTextFocus && editorLangId == 'go'"
    • If current file is not a test file, show error message while running test commands, instead of displaying success message. Fixes #303

  • Marcel Voigt (@nochso)
    • Show error message in output window when running test coverage fails. PR 721

Debugging improvements

0.6.52 - 5th January, 2017

  • Yuwei Ba (@ibigbug)
    • Use http.proxy setting while installing Go tools. PR 639
  • chronos (@bylevel)
    • Bug #465 Fix file outline when non English comments in file. PR 699
  • Ramya Rao (@ramya-rao-a)
    • Implement Step Out in debgging Commit 6d0f440
    • Improve performance by reducing number of calls to godoc, godef, gogetdoc. PR 711
    • Default value for go.autocompleteUnimportedPackages is now false to reduce noise in the suggestion list. Members of unimported packages will still show up in suggestion list after typing dot after package name.

0.6.51 - 29th November, 2016

0.6.50 - 21st November, 2016

  • lixiaohui (@leaxoy), Arnaud Barisain-Monrose (@abarisain), Zac Bergquist (@zmb3) and Ramya Rao (@ramya-rao-a)
    • Added option to use gogetdoc for Goto Definition , Hover and Signature Help features. PR 622 To use this, add a setting "go.docstool": "gogetdoc" to your settings and reload/restart VS Code. This fixes the below bugs
      • #440 Hover info does not show doc string for structs
      • #442 Goto Definition, Hover, Signature Help do not work for net package
      • #496 Goto Definition, Hover, Signature Help do not work for Dot imported functions
      • #515 Go to definition and type info doesn't work with mux.Vars or anything else from gorilla/mux
      • #567 Signature Help and Quick Info do not show function comments for unexported functions
  • Ramya Rao (@ramya-rao-a)
    • Revert changes done in the formatting area in 0.6.48 update. Fixes below bugs
      • #613 Format removes imports of vendored packages in use
      • #630 goreturns fails to consider global variables in package

0.6.49 - 10th November, 2016

0.6.48 - 9th November, 2016

  • Mark LaPerriere (@marklap)
    • Snippets for method declaration, main and init functions PR 602
  • Rob Lourens @roblourens
    • launch.json intellisense to include all “mode” values. Fixes #574
  • Ramya Rao (@ramya-rao-a)
    • Support for editor.formatOnSave and deprecating go.formatOnSave PR 578
    • Remove deprecated language configuration settings PR 587
    • Feature Request 432: Commands to switch to test file and back. PR 590. You can add your own shortcuts for these commands.
      • Go: Open Test File
      • Go: Open Implementation for Test File
    • Navigate to test file after generating unit tests using the Go: Generate unit tests ... commands. PR 610
    • Prompt to set GOPATH if not set already PR 591
    • Improvements to auto complete
      • #389 Fix issue with autocomplete popping up at the end of a string PR 586
      • #598 Importable packages in auto complete should appear after rest of the suggestions. PR 603
      • #598 Importing vendored packages from other Go projects should not be allowed. PR 605
      • #598 When there is an identifier with same name as an available package, do not show the package in the compeltion list PR 608
    • Other Bug Fixes
      • #592 Use Go from GOROOT while installing tools PR 594
      • #585 Use fs.stat instead of fs.exists to avoid mistaking “go” folder as “go” file PR 595
      • #563 Dont run gotests on non Go files PR 584

0.6.47 - 26th October 2016

0.6.46 - 26th October 2016

0.6.45 - 17th October 2016

0.6.44 - 12th October 2016

  • Ludwig Valda Vasquez (@bredov)
    • New configuration go.formatFlags to pass flags to the formatting tool PR #461
  • Dan Mace (@ironcladlou
    • New command to execute the last run test. The command is Go: Test Previous PR #478
    • Send test output to a distinct output channel PR #499
  • Cedric Lamoriniere (@cedriclam)
    • New commands to generate unit test skeletons using gotests tool. Needs Go 1.6 or higher. PR #489
      • Go: Generate unit tests for current file
      • Go: Generate unit tests for current function
      • Go: Generate unit tests for current package
  • Ramya Rao (@ramya-rao-a)
    • New configuration go.testEnVars to pass environment variables to Go tests PR #498
    • Changes made to GOROOT and GOPATH via settings now take effect immediately without requiring to reload/restart VS Code PR #458
    • Go extension ready to use after installing tools without requiring to reload/restart VS Code PR #457
    • Enable Undo after Rename. PR #477. Needs diff tool which is not available on Windows by default. You can install it from DiffUtils for Windows
    • Autocomplete for functions from unimported packages and for unimported packages themselves. To enable this set go.autocompleteUnimportedPackages to true. PR #497
    • Do not allow to import already imported packages via the Go: Add Import command. PR #508
    • Suggest gometalinter to Go 1.5 users since golint dropped support for Go 1.5 PR #509
    • Fix broken installation for goimports. PR #470 and PR #509
  • Arnaud Barisain-Monrose (@abarisain)
    • Fix broken installation for goreturns in Windows. PR #463

0.6.43 - August 2016

0.6.40-42 - July 2016