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