Releases: fatih/vim-go
v1.7.1
v1.7
Please checkout the changelog for this release. We have new features, tons of improvements and fixes!: https://github.com/fatih/vim-go/blob/master/CHANGELOG.md#17-june-7-2016
Do you want to support vim-go? Checkout the fully optional donation option, a way to support vim-go's ongoing development directly: https://www.patreon.com/fatih
v1.6
Please checkout our new changelog: https://github.com/fatih/vim-go/blob/master/CHANGELOG.md#16-april-25-2016
Also happy to announce that I'm a dad now! I have a little son and it's a joy to spend time with him 👶🏼 🤗
v1.5
Changes:
- Feature (NEW): Introducing code name "motion". A new whole way of moving
around and navigating (gh-765). Checkout the following new changes:- A vim-go specific tool, called motion is being developed which
provides us the underlying foundation for the following and upcoming
new features. ]]and[[motions can be used to jump between functionsifandafare improved and implement from scratch. It has now
support for literal functions, comments of functions, better cursor
position support and more stable.- New
:GoDeclsand:GoDeclsDircommands that are available if
ctrlp.vimis installed. Once called one can easily jump to any generic declaration available. - I wrote two blog posts about these new features in more detail. I recommend you to read it: Treating Go types as objects in Vim and Navigation between functions and types in vim-go
- A vim-go specific tool, called motion is being developed which
- Feature (NEW): A new
:GoAlternatecommand that toggles to the test
file of the current file. It also has new appropriate mappings to open the
alternate file in split or tabs. (gh-704) - Feature (NEW): Now commands can choose whether they want to open a
quickfixor alocation listvia the settingg:go_list_type. Also all
the commands have now some sensible settings, some will open a qf window,
some will open a location list (gh-700) - Commands: add support for goimport's new
-srcdir. Goimports now
succesfully suportsvendor/folders with this release. (gh-735) - Commands: add
g:go_gorename_prefillsetting which disabled pre filling the argument for:GoRename(gh-711) - Commands: improve
:GoRunto complete to filenames (gh-742) - Commands: fix oracle scope not working if trailing slash exists in scope (gh-751)
- Commands: fix
:GoErrCheckchecking abspath (gh-671) - Commands: fix
:GoInstallcorrectly parsing errors (gh-692) - Commands: fix
:GoInstallcorrectly parsing errors (gh-692) - Commands: fix
:GoTestFuncfor neovim (gh-695) - Commands: fix
:GoRunaccepting arguments for neovim (gh-730) - Commands: fix
go runmappings not working (gh-542) - Internal: improved internal usage of retrieving offsets (gh-762)
- Internal: improve by substitute all backslashes to slashes for filename (gh-703)
- Internal: fix autodetect gopath picking up non existing GB vendor folder
- Internal: fix gofmt errors showing per buffer instead of per script (gh-721)
- Internal: improve internal Go package path function (gh-702)
- Internal: improved typo and grammar errors in docs (gh-714)
- Internal: improved internal
:GoInfoautomatic call (gh-759) - Snippet: fix some of the neosnippet snippets
- Syntax(NEW): highlight
//go:generatecomment directives (gh-757) - Syntax: Indent code in Go HTML templates (gh-709)
- Syntax: improve negative numbers of all types, octals, imaginary numbers
with exponents (gh-752)
Thanks again to all contributors working on Vim-go.
P.s: You love vim-go? Now you can support vim-go by being a patron
v1.4
Changes:
- Feature (NEW): You waited for it for a long time. And here you have it: Neovim support! This is a huge feature. It's fully compatible with Vim and kicks only in if vim-go is being used within Neovim. Checkout the full list of changes (gh-607):
- An async launcher and base foundation was implemented for the
gocommand. This will be used in the future for all upcoming subcommands of thegotool. :GoBuildis now called asynchronously (it doesn't block the UI anymore).- A new
go#jobcontrol#Statusline()can be used to plug into the statusline. This will show the status of the job running asynchronously. The statusline is improved to show the status per package instead of file. Assume you have three files open, all belonging to the same package, if the package build (:GoBuild) is successful, all statusline's will be empty (means SUCCESS), if it fails all files statusline's will showFAILED. :GoRunopens a new vertical terminal emulator inside Neovim and runs the command there. The terminal mode can be changed withg:go_term_mode, which is by defaultvsplit. Current options arevsplit, split or tab. We also have three new mappings to open:GoRuncommand in different terminal split modes:<Plug>(go-run-vertical),<Plug>(go-run-split)and<Plug>(go-run-tab):GoTest,:GoTestFuncand:GoTestCompileopens and runs in a new terminal. The view mode (split,vertical, tab) is defined withg:go_term_mode. Theg:go_term_enabledsetting can be use to change the behavior of:GoTestXXXcommands .If set to1, it opens the test commands inside a terminal, if not it runs them in background just like:GoBuildand displays the result in the statusline.- We have two settings for terminal sizes:
g:go_term_heightandg:go_term_width. By default a vertical or horizontal view is equally splitted by vim automatically. However with these settings we can for example have a terminal with a smaller height when we split it horizontally. - If a command inside the term fails (such as
go run,go test...) we parse now the errors and list them inside a location list.
- An async launcher and base foundation was implemented for the
- Feature (NEW): Instead of quickfix window, vim-go now uses the
location listfeature of Vim. These are associated with each window independently of each other. This enables us to have multiple, independent location lists per window (example usages::GoBuildwith errors that needs to be fixed,:GoLintwith warnings that we want to check,:GoReferrerswith a list of referred identifiers) (gh-626) - Feature (NEW): a new
:AsmFmtcommand which is integrated to work with asmfmt (gh-673) - Feature (NEW): the full identifier information of a completed identifier is echoed in statusline. This is very useful to see a function signatures arguments. (gh-685)
- Commands: improve
:GoFmtby checking if the binary is indeed installed on the system (gh-617) - Commands: fix
:GoFmtchanging the fileformat of the current buffer (gh-615) - Commands: improve
:GoMetaLinterby adding the option to run the metalinter on save and adding the option to limit the output to the currently active buffer. Setlet g:go_metalinter_autosave = 1to enable autosave and uselet g:go_metalinter_autosave_enabled = ['vet', 'golint']to change your options. (gh-631) - Commands: improved
:GoDef. Ifvimprocis installedgodefwill make use of it (gh-670) - Internal: improve completion of godoce when vimproc is used (gh-620)
- Internal: improve internal error matching prodecure to not match false positives (gh-618)
- Commands: fix
:GoRenameto output the original error if parsing fails (gh-675) - Commands: fix
:GoTestto output the original error if parsing fails (gh-676) - Syntax (NEW): a new option to highlight interface variables with
go_highlight_interfaces(gh-681) - Syntax: fixed
fmt.Fprintlnnot to highlight as builtin (gh-628) - Syntax: fixed wrong highlighting of channels of channels (gh-678)
Thanks to all contributors working on Vim-go.
v1.3
Changes:
- Commands (NEW): a new
:GoOracleTagscommand was added to pass build tags to Oracle's-tagsflag. (gh-573) - Commands: change
:GoTestcommand to timeout after 10 seconds. Vim UI is blocking and tests with large running times makes Vim blocking for a long time. This is also customizable with the new optiong:go_test_timeout. (gh-578) - Commands: improve
:GoRenameto collect and populate quickfix window with errors. (gh-577) - Commands: improve
:GoRunby dropping bad filenames from quickfix window. This allows us to have only valid entries which can be jumped to (gh-547) - Commands: improve
:GoMetaLinterquickfix output by using absolute paths. This enables us to jump to errors for all cases. (gh-565) - Commands: improve
:GoMetaLintercommand by adding a new optiong:go_metalinter_deadlinewhich cancels the linters after 5 seconds (previous default). (gh-576) - Commands: improve
:GoMetaLinterby jumping to the first encountered error from the quickfix window. - Commands: fixed
:GoErrCheckshowing the correct output when executed inside the source folder (gh-564) - Commands: fixed
:GoBuildby not using/dev/nullanymore for build output (not supported bygo). We pass a temporary file now. (gh-567) - Commands: fixed
:GoFmtpassingg:go_fmt_optionsoptions togoimports. This option is only valid withgofmt. (gh-590) - Internal (NEW): automatically resize quickfix window based on the number of errors (gh-602)
- Internal: fix vim-go for
cygwinusers. (gh-575) - Syntax (NEW): improve build constraints to show invalid cases (such as
// +buildfoo, not having an empty line between the package statement, etc..). Also add missingGOARCHvalues sucha sarm64. There are many other useful improvements, for more detail please have a look at (gh-589) - Syntax: fixed identifier in template files to be highlighted correctly (gh-559)
- Syntax: fixed character region in template files to be highlighted correctly (gh-603)
- Syntax: fixed variables in template files to be highlighted correctly (gh-611)
- Syntax: add support for all values of
GOARCH(gh-601) - Syntax: do not treat builtins as keywords. Now
makewill not highlighted butmake()will be highlighted (gh-605) - Documentation: Add note about Syntastic usage as this problem comes up a lot (gh-580)
- Documentation: Add note about
:GoUpdateBinaries(gh-606)
Thanks to all contributors working on Vim-go.
v1.2
Changes:
- Commands (NEW): a new
:GoMetaLintercommand which invokes gometalinter. Please check the PR #553 for more detail on customizing and usage of:GoMetaLinter. - Commands: Improve
:GoImportto trim spaces when including import paths of form"fmt " - Commands: Fixed
:GoRunto display errors wheng:go_dispatch_enabledwas enabled - Commands: Fixed
:GoDropdisplaying "Not enough arguments" (regression) - Commands: Fixed
:GoErrChecknot showingPASSmessage if the command was successful - Commands: Fixed
:GoErrChecknot executing in the directory of the currently edited file - Commands: Close quickfix window after a successful second round of
:GoInstall - Internal: Avoid setting
filetypetwice. Previously it was doing it twice, which was expensive - Internal: Improve handling of GOPATH's with trailing
/characters, such as/home/user/go/ - Oracle: Escape files passed to oracle command. This could lead to some serious things.
- Oracle: Clear
g:go_oracle_scopewhen the scope was reseted. Previously it was set to empty string, which was causing false positives. - Oracle: Fix passing files rather than packages to certain oracle commands.
- Syntax (NEW): add a new
g:go_highlight_string_spellcheckfeature, which is enabled by feature. Now if spell is enabled, go strings are also checked. - Documentation: Correct various misspellings.
- Documentation: Specify our limited but functional gb support
Thanks to all contributors working on Vim-go.
v1.1
Changes:
- Commands (NEW): a new
:GoGeneratecommand is now available which can be used to invokego generatewithin vim - Commands: improved
:GoFmtcommand, which now uses the-wflag to write to the source code directly, instead of outputting it to stdout. This makes:GoFmtmuch more faster than the current implementation. This is one of the big changes in this release, so feedback is welcome! - Commands: improve commands
GoRun, GoTest{,Func,Compile}, GoCoverage, GoGenerate, GoErrcheck, GoLint, and GoVetto handle multiple arguments. Previously this feature was limited to only certain commands. What this means is, for example:GoVet . -allwill invokego tool vet . -allautomatically instead of plango vet. This is one of the big changes in this release, so give it a try :) - Commands: improve
:GoImportto have a!feature. Now when when called with a!appended it will go get it. i.e::GoImport! github.com/fatih/color. Useful if:GoImportfails and you want to download it. - Commands: automatic GOPATH detections can now detect
gbvendored folders. Some commands should now work without any problem when invoked on agbproject. - Commands: all command arguments are now properly escaped for shell invocation.
- Commands: added the
-fflag to :GoInstallBinaries command to supportgit url.<base>.insteadOfconfiguration - Commands: fix
:GoDeffor files containing spaces. We know escape the files before passing to:GoDef - Commands: fix
:GoFmtnot picking up the correct GOPATH when the fmt command was set togoimports - Documentation: fix and simplify README.md, add Wiki reference
- Syntax improve width and precision highlighting, such as
%s %5s %-5s %5.5f %.5f - License: Vim-go didn't had any license, now we use BSD 3-Clause License (the same as Go). This is needed for Linux distributions to package vim-go and is also something that people asked for.
- Integration: fixed tagbar integration to show correct imports.
- Oracle: show an error if a region is not selected when
:GoFreeVarsis called
With this release the version will now increase in minor levels. So the next release will be 1.2, the other one 1.3, etc.. This provides us more flexibility (like releasing patch versions if needed).
Also I want to thank for all contributors working on Vim-go. I truly appreciate it, because they help me to implement and fix all these feature and fixes. So please visit the contributors page and thank each of them :)
v1.0.5
Changes:
- Commands: Improve
:GoFmt(gofmt and goimports) speed. Now it's 2x faster than the previous implementation. - Commands: A new
:GoOracleScopeis added to change the oracle scope on-the-fly. It accepts import paths as arguments. If no arguments are passed it prints the current custom oracle scope.:GoOracleScopealso supports completion of import paths, so it's very fast and handy to use.:GoOracleScope ""clears the current custom scope. - Commands: A new
:GoPathcommand that displays the currentGOPATH. A path can be passed to change theGOPATH(i.e:GoPath ~/foo/src).:GoPath ""clears and resets theGOPATHto the initial value. - Commands: A new "autodetect GOPATH" feature is added. This automatically detects if the project is using
godepor is under asrcroot directory which is not inGOPATHand changes/modifies theGOPATHso all commands work based on this GOPATH. What this means is, commands such as:GoDef,:GoBuild, etc.. will include the Godeps folder. For example any go-to-definition via:GoDefwill jump to the source code inside Godeps. This is enabled by default, but can disabled withlet g:go_autodetect_gopath = 0. This new feature is also the foundation for other tools such asgborwgo. - Commands: add Dispatch support for
:GoBuildand:GoRun. For more info about dispatch see https://github.com/tpope/vim-dispatch . By default it's disabled, to enable it addlet g:go_dispatch_enabled = 1to your vimrc. - Commands: Add support for the bang
!attribute for allgotool commands. What this does it, if:GoBuildis called it will jump to the error. But:GoBuild!will not jump to any error. This has the same behavior as the internal:makecommand in vim. We had this feature already for:GoBuildand:GoRun. But not for:GoInstall,:GoTest, etc.. Now all commands are unified. - Commands: Add autojump to error for
:GoInstall. - Commands: Add autowrite feature for
:GoInstall,:GoTestXXXfunctions and:GoVet - Commands: Fix clearing the status bar when
:GoErrCheckis called - Commands: Fix godocNotFound to not match 'os' pkg contents. This improves the command
:GoDoc - Commands: fix parsing and jumping to error locations when used Vim from a different directory than the current buffer's directory
- Commands: support git url..insteadOf and custom import paths of binaries. This improves the commands
:GoInstallBinariesand:GoUpdateBinaries. - Docs: improvements and fixes
- Completion: Fix completion showing duplicates paths for completion results, such as github.com/fatih/color and github.com/fatih/color/.
- Syntax: Add support for highlighting go templates with *.tmpl extensions. Based on the work from @cespare from https://github.com/cespare/vim-go-templates
Thanks for all contributors working on Vim-go.
v1.0.4
Changes:
- Commands (new feature): A new
:GoTestFunccommand (with appropriate mappings) is added. Run tests function which surrounds the current cursor location. Useful to test single tests. - Commands: Improved certain
:GoDocusages to show a better error message - Commands: Improved
:GoRenameto have a default value for rename input. Avoids retyping similar words. - Commands: Fixed the internal
executeInDirfunction which was failing when ignorelist was not set properly. - Commands: Fixed trailing slash for package completion with
:GoImport - Commands: Fixed paths in error list for Windows users.
- Commands: Fixed not showing "import cycle not allowed" error message when called
:GoBuildor:GoRun - Completion: Fixed users using vimproc requiring arguments to functions to be escaped.
- Oracle: Synced with latest Oracle version.
callgraphis removed. - Oracle: Removed our custom referrers mode. New version of oracle now displays the matching lines.
- Documentation: Improve README.md
- Syntax (new feature): Highlight all Go operators. Previously not all operators were highlighted. As previously, to highlight options, enable it with by setting
g:go_highlight_operatorsto 1 in your vimrc. - Snippets: Fixed depth for test snippets
- Snippets: Fixed neosnippet support loading snippet files the second time if necessary.
Many thanks and appreciations for all contributors working on Vim-go. Without them, vim-go wouldn't be here in this form.