23 KiB
unplanned
IMPROVEMENTS
- :GoMetaLinter can now exclude linters with the new
g:go_metalinter_excludesoption [gh-1253]
BUG FIXES:
- job: fix race between channel close and job exit [gh-1247]
1.12 - (March 29, 2017)
FEATURES:
- New
:GoAddTagsand:GoRemoveTagscommand based on the tool gomodifytags. This fixes many old bugs that were due prior regexp based implementation. For the usage please read the docs and checkout the demo at: https://github.com/fatih/vim-go/pull/1204 [gh-1204] - Add new
errlsnippet that expands to [gh-1185]:
if err != nil {
log.Fatal(err)
}
- New
:GoBuildTagscommand to change build tags for tools such asguru,gorename, etc ... There is also a new setting calledg:go_build_tags[gh-1232]
IMPROVEMENTS:
- vim-go works now even if GOPATH is not set (starting with Go 1.8) [gh-1248]
- Lowercase
<Leader>in mappings examples for consistent documentation across the README [gh-1192] - All of files should be written in utf-8 if the file will be passed to external command. [gh-1184]
:GoAddTagsis now able to add options to existing tags with the syntax:GoAddTags key,option, i.e::GoAddTags json,omitempty[gh-985]- Document 'noshowmode' requirement for echo_go_info [gh-1197]
- Improve godoc view for vertical splits [gh-1195]
- Set GOPATH for both possible go guru execution paths (sync and async) [gh-1193]
- Improve docs for :GoDef usage [gh-1242]
- Highlight trimming syntax for Go templates [gh-1235]
BUG FIXES:
- Honor
g:go_echo_command_infowhen dispatching builds in neovim [gh-1176] - Fix
:GoBuilderror in neovim due to invalid jobcontrol handler function signatures (s:on_stdout,s:on_stderr)[gh-1176] - Update statusline before and after
go#jobcontrol#Spawncommand is executed [gh-1176] - Correctly report the value of the 'g:go_guru_tags' variable [gh-1177]
- Ensure no trailing
:exist in GOPATH detection if initial GOPATH is not set [gh-1194] - Fix
:GoAddTagsto allow modifying existing comments [gh-984] - Fix
:GoAddTagsto work with nested structs [gh-990] - Fix
:GoAddTagsadding tags twice for existing tags [gh-1064] - Fix
:GoAddTagsnot working for fiels of typesinterface{}[gh-1091] - Fix
:GoAddTagsnot working for fields with one line comments [gh-1181] - Fix
:GoAddTagsnot working if any field comment would contain{}[gh-1189] - Respect go_fmt_options when running goimports [gh-1211]
- Set the filename in the location-list when there is an error with :GoFmt [gh-1199]
- Fix
:GoInstallto accept additional arguments if async mode was enabled [gh-1246]
BACKWARDS INCOMPATIBILITIES:
- The command
:GoGuruTagsis removed in favour of the new command:GoBuildTags. This command will be used now not just forguru, also for all new commands such asgorename[gh-1232] - The setting
g:go_guru_tagsis removed in favour of the new settingg:go_build_tags[gh-1232]
1.11 - (January 9, 2017)
FEATURES:
- Travis test integration has been added. Now any file that is added as
<name>_test.vimwill be automatically tested in for every Pull Request (just like how we add tests to Go with_test.go). Going forward this will tremendously increase the stability and decrease the maintenance burden of vim-go. [gh-1157] - Add new
g:go_updatetimesetting to change the default updatetime (which was hardcoded previously) [gh-1055] - Add new
g:go_template_use_pkgsetting to enable to use cwd as package name instead of basic template file [gh-1124]
IMPROVEMENTS:
- Add
statuslinesupport for:GoMetaLinter[gh-1120] - Quickfix and Location lists contain now a descriptive title (requires at least Vim
7.4.2200)[gh-1004] - Check
go env GOPATHas well for:GoInstallBinariesas Go has now a default path for GOPATH ("~/go")starting with 1.8 [gh-1152] :GoDocBrowsernow also works on import paths [gh-1174]
BUG FIXES:
- Always use full path to detect packages to be shown in statusline [gh-1121]
- Use
echomto persist errors in case of multiple echos [gh-1122] - Fix a race condition where a quickfix window was not closed if a job has succeeded [gh-1123]
- Do not expand coverage arguments for non job execution of
:GoCoverage[gh-1127] :GoCoveragedoesn't mess up custom syntax anymore [gh-1128]- Disable autoformat for
asmfiles as they might be non Go ASM format [gh-1141] - Fix indentation broken when using a action with a minus sign like
{{-[gh-1143] - Fix breaking Neovim change of passing less arguments to callbacks [gh-1145]
- Fix
gurucommands if custom build tags were set [gh-1136] - Fix referencing a non defined variable for async commands when bang (!) was used
- Fix
:GoDeffailing for a modified buffer ifhiddenwas not set [gh-1132] - Fix
:GoDefStackto allow popping from jump list when buffer is modified [gh-1133] - Improve internal defining of functions and referencing them for async operations [gh-1155]
- Fix
:GoMetaLinterfailing ifgo_metalinter_commandis set. [gh-1160] - Fix
:GoMetaLinter'sgo_metalinter_deadlinesetting for async mode [gh-1146]
BACKWARDS INCOMPATIBILITIES:
- The following syntax options are now disabled by default. If you're using them be sure to set them in your .vimrc [gh-1167]
g:go_highlight_array_whitespace_error
g:go_highlight_chan_whitespace_error
g:go_highlight_extra_types
g:go_highlight_space_tab_error
g:go_highlight_trailing_whitespace_error
1.10 (November 24, 2016)
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,:GoInstallcommands 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) -
:GoCoverageand:GoCoverageBrowsercommands are fully async. -
:GoDefis fully async ifguruis used as command. -
:GoRenameis fully async . -
:GoMetaLinteris fully asnyc. Also works with the current autosave linting feature. As a reminder, to enable auto linting on save either call:GoMetaLinterAutoSaveToggle(temporary) or addlet g:go_metalinter_autosave = 1(persistent) to your virmc). -
All
gurucommands run asynchronously if Vim 8.0 is being used. Current Commands:- GoImplements
- GoWhicherrs
- GoCallees
- GoDescribe
- GoCallers
- GoCallstack
- GoFreevars
- GoChannelPeers
- GoReferrers
-
:GoSameIdsalso 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 addlet g:go_auto_sameids = 1(persistent) to your vimrc. -
:GoInfois now non blocking and works in async mode ifguruis used ing: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 addlet g:go_auto_type_info = 1(persistent) to your vimrc. To useguruinstead ofgocodeadd following to your vimrc:let g:go_info_mode = 'guru'The
guruis more accurate and reliabed due the usage ofgurudescribe. It doesn't rely onpkg/folder likegocodedoes. However it's slower thangocodeas there is no caching mechanism inguruyet. -
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 yourvimrc. 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_functionsis 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_infoto enable/disable printing identifier information when completion is done [gh-1101] - Added new
go_echo_command_infosetting 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 ifgo#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
:GoBuildwhile using NeoVim [gh-1062] - Do not open a split if
:GoDefis used on a modified file [gh-1083] - Highlight nested structs correctly [gh-1075]
- Highlight builtin functions correctly if
g:go_highlight_functionsis enabled [gh-1070] - Fix
:GoSameIdshighlighting if a new buffer is opened in the same window [gh-1067] - Internal: add
abortto all vim function to return in case of errors [gh-1100] - Fix
:GoCoverageto 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 extensiblego#statusline#Show()
1.9 (September 13, 2016)
IMPROVEMENTS:
- guru uses now the
-modifiedflag, which allows us use guru on modified buffers as well. This affects all commands whereguruis used. Such as:GoDef,:GoReferrers, etc.. [gh-944] - :GoDoc uses now the
-modifiedflag under the hood (for `gogetdoc), which allows us to get documentation for the identifier under the cursor ina modified buffer. [gh-1014] - Cleanup and improve documentation [gh-987]
- Add new
g:go_gocode_socket_typesetting to change the underlying socket type passed togocode. Usefull to fallback totcpon cases such as Bash on Windows [gh-1000] :GoSameIdsis now automatically re-evaluated in cases of buffer reloads (such as:GoRename) [gh-998]- Improve docs about
go_auto_sameids[gh-1017] - Improve error message by printing the full path if an incompatible
goimportsis being used [gh-1006] iotaandnilare now highlighted correctly and are not treated as booleans [gh-1030]
BUG FIXES:
- Fix system calls on Windows [gh-988]
- Fix :GoSameIds and :GoCoverage for light background and after changing color schemes [gh-983]
- Fix TagBar and
GoCallersfor Windows user [gh-999] - Set updatetime for for
auto_sameidsfeature as well [gh-1016] - Update docs about missing
go_highlight_generate_tagssetting [gh-1023] - Fix updating the jumplist if
:GoDefis used [gh-1029] - Fix highlighting literal percent sign (
%%) in strings [gh-1011] - Fix highlighting of nested fields [gh-1007]
- Fix checking for
exepathfeature for the upcoming vim 8.0 release [gh-1046]
BACKWARDS INCOMPATIBILITIES:
- Rename
GoMetalinterAutoSaveToggletoGoMetaLinterAutoSaveToggleto make it compatible with the existing:GoMetaLintercommand [gh-1020]
1.8 (July 31, 2016)
FEATURES:
- New
:GoAddTagscommand that adds field tags for the fields of a struct automatically based on the field names. Checkout the demo to see it in action: https://twitter.com/fatih/status/759822857773907968 [gh-971] - The snippet expansion
jsonis now much more smarter. It pre populates the placeholder according to the first word and it also appliessnake_caseorcamelCaseconversion. Together with:GoAddTagsit givesvim-gousers flexible ways of populating a field tag. Checkout the demo to see it in action: https://twitter.com/fatih/status/754477622042689536 [gh-927] - New
:GoSameIdscommand. When called highlights all same identifiers in the current file. Can be also enabled to highlight identifiers automatically (with:GoSameIdsAutoToggleorg:go_auto_sameids). Checkout the demo to see it in action: https://twitter.com/fatih/status/753673709278339072. [gh-936] - New
:GoWhicherrscommand. It shows all possible values of the selected error variable. [gh-948] - Add new
errpsnippet to expand anif err != nil { panic() }clause [gh-926] - If you open a new buffer with a Go filename it get automatically populated based on the directory. If there are no Go files a simple main package is created, otherwise the file will include the package declaration line based on the package in the current directory. Checkout the demo to see it in action: https://twitter.com/fatih/status/748333086643994624. This is enabled by default. Can be disabled with
let g:go_template_autocreate = 0. You can use your own template withlet g:go_template_file = "foo.go"and putting the file under thetemplates/folder. [gh-918] - Added new toggle commands to enable/disable feature that run for your
automatic. For example if you have
let g:go_auto_type_info = 1enabled, you can now easily enable/disable it on the fly. Support added with the following commands::GoAutoTypeInfoToggle,:GoFmtAutoSaveToggle,:GoAsmFmtAutoSaveToggle,:GoMetalinterAutoSaveToggle,:GoTemplateAutoCreateToggle[gh-945]
IMPROVEMENTS:
:GoDocaccepts arguments now which are passed directly togodoc. So usages like:GoDoc flagworks again (it was changed in previous versions [gh-894]:GoDefworks now for modified files as well [gh-910]- Internal: pass filename to the
--srcdirflag to enable upcominggoimportsfeatures [gh-957] - Internal: fix indentations on all files to 2-spaces/no tabs. This is now the default vim-go style across all VimL files [gh-915]
- Internal: autocmd settings can be now dynamically enabled/disabled [gh-939]
- Internal: automatically detect
GOPATHfor :GoInstall [gh-980] - Internal: shell executions uses now by default
shand then resets it back to the user preference. [gh-967] - Syntax: improved syntax highglighting performance for methods, fields, structs and interface type declarations [gh-917]
- Syntax: moved
:GoCoveragehighlight definition into go's syntax file for more customizability [gh-962]
BUG FIXES:
- Escape
#characters when opening URL's, as it's handled as alternative file in vim [gh-895] - Fix typos in
doc/vim-go.txtabout usages of syntax highglightings [gh-897] - Fix
:GoCoveragenot running for Neovim [gh-899] - Fix
:GoFmtnot picking up-srcdirif the command was set to usegoimports[gh-904] - Fix
:GoTestCompileto not leave behind artifacts if the cwd and the test files's directory do not match [gh-909] - Fix
:GoDocBrowserto not fail if godoc doesn't exist [gh-920] - Fix
:GoFmtto not change the permissions of saved file. Now original file permissions are restored [gh-922]
BACKWARDS INCOMPATIBILITIES:
g:go_highlight_structsandg:go_highlight_interfaceare removed in favor ofg:go_highlight_types[gh-917]
1.7.1 (June 7, 2016)
BUG FIXES:
- Fixed typo in
syntax/go.vimfile fromgo:go_highlight_fieldstog:go_highlight_fields
1.7 (June 7, 2016)
FEATURES:
- New
:GoImplcommand that generates method stubs for implementing an interface. Checkout the demo to see how it works. [gh-846] godefsupport is added back as an optional setting. By default:GoDefstill usesguru, but can be changed togodefby adding the option:let g:go_def_mode = 'godef'[gh-888]- New
<C-w><C-]>and<C-w>]>shortcuts to split current window and jumpt to the identifier under cursor. [gh-838] - New syntax setting"
g:go_highlight_fieldsthat highlights struct field references [gh-854]
IMPROVEMENTS:
- Invoking
:GoRenamenow reloads all files to reflect new changes automatically [gh-855] - Calling
:GoTestCompiledoes not create any temporary binary file anymore [gh-879] - Enable passing the
-tagsflag to:GoDef. Now you can pass build tags to:GoDefvia:GoGuruTagsorg:go_guru_tags - Internal refactoring to use custom
system()function that wraps both the standardsystem()call andvimproc. Now all system calls will take advantage and will usevimprocif installed. [gh-801] - Completion enables now
gocode'sautobuildandpropose-builtinsflags automatically. With these settings packages will be automatically build to get the freshest completion candidates and builtin keywords will be showed as well. By defaults these settings are enabled. Settings can be disabled/enabled viag:go_gocode_autobuildandg:go_gocode_propose_builtins. [gh-815] - Added new
http.HandlerFuncsnippets withhfandhhfshortcuts [gh-816] - Added new
ExampleandBenchmarksnippets withexampleandbenchmarkshortcuts [gh-836] - Search tool binaries first in
GOBINand then inPATHas most of vim-go users installs it toGOBINmostly [gh-823] - Improve
gurubased commands by providing automatically detected GOPATHS, such asgb,godepto be used if possible [gh-861] - Add
<Plug>(go-imports)mapping to make it assignable to other keys [gh-878] - Increase compatibility with tcsh [gh-869]
- Improve
:GoInstallBinariesfor GOPATH's which don't have packages that work well withgo get -u. We have a newg:go_get_updatesetting to disable it. By default it's enabled. [gh-883]
BUG FIXES:
- Fix
(go-freevars)plug mapping to work as in visual mode instead of noncompatible normal mode [gh-832] - Commands based on guru now shows a more meaningful error message instead of just showing the exit status (-1)
- Fix
:GoCoverageaccidently enabling syntax highlighting for users who don't use syntax (i.e syntax off) [gh-827] - Fix
:GoCoveragecolors to work for xterm as well [gh-863] - Fix commenting out block of texts for Go templates (filetype gothtmltmpl) [gh-813]
- Fix
:GoImplementsfailing because of an empty scope definition. Now we default to current package to make it usable. - Fix
:GoPlayposting to non HTTPS url. [gh-847] - Fix escaping the filenames for lint and motion commands [gh-862]
- Fix escaping the filename to
:GoDefcompletely for tcsh [gh-868] - Fix showing SUCCESS for
go testrelated commands if no test files are available [gh-859]
1.6 (April 25, 2016)
FEATURES:
- New
CHANGELOG.mdfile (which you're reading now). This will make it easier for me to track changes and release versions :GoCoverageis now highlighting the current source file for covered/uncovered lines. If called again it runs the tests and updates the annotation. Use:GoCoverageClearto clear the coverage annotation. This is a pretty good addition to vim-go and I suggest to check out the gif that shows it in action: https://twitter.com/fatih/status/716722650383564800 [gh-786]:GoCoverageTogglejust like:GoCoveragebut acts as a toggle. If run again it clears the annotation.:GoCoverageBrowseropens a new annotated HTML page. This is the old:GoCoveragebehavior [gh-786]:GoDocuses now gogetdoc to lookup and display the comment documentation for the identifier under the cursor. This is more superior as it support looking up dot imports, named imports and imports where package name and file name are different [gh-782]guru support:oracleis replaced by the new toolguru.oracle.vimis therefore renamed toguru.vim. I've also refactored the code to make it much more easier to maintain and add additional features in future (such as upcoming JSON decoding). vim-go is now fully compatible withguru. Please be sure you have installedguru. You can easily do it with:GoInstallBinaries.:GoDefuses nowguru definitionunder the hood instead ofgodef. This fixes the following issues: 1. dot imports 2. vendor imports 3. folder != package name imports. The toolgodefis also deprecated and not used anymore.:GoDefdoes have now history of the call stack. This means you can easily jump back to your last entry. This can be done with the new command:GoDefPopor the mappingCTRL-t. To see the stack and jump between entries you can use the new command:GoDefStack, which shows the list of all stack entries. To reset the stack list anytime you can call:GoDefStackClear[gh-776]
IMPROVEMENTS:
:GoCoverageis executed asynchronously when used within Neovim [gh-686]:GoTestFuncsupports now testable examples [gh-794]:GoDefcan jump to existing buffers instead of opening a new window (split, vsplit or tab). By default it's disabled to not break the old behavior, can be enabled withlet g:go_def_reuse_buffer = 1
BUG FIXES:
- Fix not showing documentation for dot, named and package/file name being different imports [gh-332]
- Term mode: fix closing location list if result is successful after a failed attempt [gh-768]
- Syntax: fix gotexttmpl identifier highlighting [gh-778]
- Doc: fix wrong wording for
go-runmapping. It's for the whole main package, not for the current file
BACKWARDS INCOMPATIBILITIES:
:GoDefdoesn't accept any identifier as an argument. This is not suported viaguru definitionand also was not widely used either. Also with this, we significantly simplified the existing def.vim code:GoOracleScopeand:GoOracleTagsare deprecated in favor of:GoGuruScopeand:GoGuruTags. Alsog:go_oracle_scopeis renamed tog:go_guru_scopeg:go_guru_scopeaccepts a variable in type oflistinstead ofstring. i.g:let g:go_guru_scope = ["github.com/fatih/structs", "golang.org/x/tools/..."]
Previous releases
Previous changelogs can be found here: https://github.com/fatih/vim-go/releases