vim-go v1.10 Release Notes

Release Date: 2016-11-24 // over 7 years ago
  • ๐Ÿ”‹ FEATURES:

    • ๐Ÿ‘ Vim 8.0 support! This is the initial version to add Vim 8.0 based support to all basic commands (check out below for more information). With time we'll going to extend it to other commands. All the features are only enabled if you have at least Vim 8.0.0087. Backwards compatible with Vim 7.4.x. If you see any problems, please open an issue.

    • ๐Ÿฑ We have now a logo for vim-go! Thanks to @egonelbre for his work on this.

    • โœ… :GoBuild, :GoTest, :GoTestCompile, :GoInstall commands are now fully async. Async means it doesn't block your UI anymore. If the command finished it echoes the status. For a better experience use the statusline information (more info below)

    • ๐Ÿ’ป :GoCoverage and :GoCoverageBrowser commands are fully async.

    • :GoDef is fully async if guru is used as command.

    • :GoRename is fully async .

    • ๐Ÿ‘• :GoMetaLinter is fully asnyc. Also works with the current autosave linting feature. As a reminder, to enable auto linting on save either call :GoMetaLinterAutoSaveToggle (temporary) or add let g:go_metalinter_autosave = 1 (persistent) to your virmc).

    • All guru commands run asynchronously if Vim 8.0 is being used. Current Commands:

      • GoImplements
      • GoWhicherrs
      • GoCallees
      • GoDescribe
      • GoCallers
      • GoCallstack
      • GoFreevars
      • GoChannelPeers
      • GoReferrers
    • :GoSameIds also runs asynchronously. This makes it useful especially for auto sameids mode. In this mode it constantly evaluates the identifier under the cursor whenever it's in hold position and then calls :GoSameIds. As a reminder, to enable auto info either call :GoSameIdsAutoToggle(temporary) or add let g:go_auto_sameids = 1 (persistent) to your vimrc.

    • :GoInfo is now non blocking and works in async mode if guru is used in g:go_info_mode. This makes it useful especially for autoinfo mode. In this mode it constantly evaluates the identifier under the cursor whenever it's in hold position and then calls :GoInfo. As a reminder, to enable auto info either call :GoAutoTypeInfoToggle(temporary) or add let g:go_auto_type_info = 1 (persistent) to your vimrc. To use guru instead of gocode add following to your vimrc: let g:go_info_mode = 'guru'

    The guru is more accurate and reliabed due the usage of guru describe. It doesn't rely on pkg/ folder like gocode does. However it's slower than gocode as there is no caching mechanism in guru yet.

    • ๐Ÿ†• New: Statusline function: go#statusline#Show() which can be plugged into the statusline bar. Works only with vim 8.0. It shows all asynchronously called functions status real time. Checkout it in action: https://twitter.com/fatih/status/800473735467847680. To enable it add the following to your vimrc. If you use lightline, airline, .. check out their respective documentation on how to add a custom function:
    " go command status (requires vim-go)
    set statusline+=%#goStatuslineColor#
    set statusline+=%{go#statusline#Show()}
    set statusline+=%*
    

    ๐Ÿ‘Œ IMPROVEMENTS:

    • ๐Ÿ’ป :GoDocBrowser is now capable to to understand the identifier under the cursor (just like :GoDoc)
    • Function calls are now highlighted as well when g:go_highlight_functions is enabled [GH-1048]
    • โž• Add completion support for un-imported packages. This allows to complete even if the package is not imported. By default it's disabled, enable by adding let g:go_gocode_unimported_packages = 1 [GH-1084]
    • โšก๏ธ Tools that embeds GOROOT into their binaries do not work when people update their Go version and the GOROOT contains the vesion as part of their path (i.e: /usr/local/Cellar/go/1.7.2/libexec, more info) . This is now fixed by introducing automatic GOROOT set/unset before each tool invoke. [GH-954]
    • Added new setting g:go_echo_go_info to enable/disable printing identifier information when completion is done [GH-1101]
    • Added new go_echo_command_info setting is added, which is enabled by default. It's just a switch for disabling messages of commands, such as :GoBuild, :GoTest, etc.. Useful to disable if go#statusline#Show() is being used in Statusline, to prevent to see duplicates notifications.
    • goSameId highlighting is now linked to Search, which is much more clear as it changes according to the users colorscheme
    • โž• Add plug mapping (go-lint) for :GoLint [GH-1089]

    ๐Ÿ› BUG FIXES:

    • ๐Ÿ”„ Change back nil and iota highlighting color to the old type [GH-1049]
    • ๐Ÿ›  Fix passing arguments to :GoBuild while using NeoVim [GH-1062]
    • Do not open a split if :GoDef is used on a modified file [GH-1083]
    • Highlight nested structs correctly [GH-1075]
    • Highlight builtin functions correctly if g:go_highlight_functions is enabled [GH-1070]
    • ๐Ÿ›  Fix :GoSameIds highlighting if a new buffer is opened in the same window [GH-1067]
    • Internal: add abort to all vim function to return in case of errors [GH-1100]
    • ๐Ÿ›  Fix :GoCoverage to be executed if working dir is not inside the test dir [GH-1033]

    BACKWARDS INCOMPATIBILITIES:

    • โœ‚ remove vim-dispatch and vimproc.vim support. vim 8.0 has now the necessary API to invoke async jobs and timers. Going forward we should use those. Also this will remove the burden to maintain compatibility with those plugins.

    • ๐Ÿšš go#jobcontrol#Statusline() is removed in favor of the new, global and extensible go#statusline#Show()