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
go
command. This will be used in the future for all upcoming subcommands of thego
tool. :GoBuild
is 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
. :GoRun
opens 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:GoRun
command in different terminal split modes:<Plug>(go-run-vertical)
,<Plug>(go-run-split)
and<Plug>(go-run-tab)
:GoTest
,:GoTestFunc
and:GoTestCompile
opens and runs in a new terminal. The view mode (split,vertical, tab) is defined withg:go_term_mode
. Theg:go_term_enabled
setting can be use to change the behavior of:GoTestXXX
commands .If set to1
, it opens the test commands inside a terminal, if not it runs them in background just like:GoBuild
and displays the result in the statusline.- We have two settings for terminal sizes:
g:go_term_height
andg: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 list
feature 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::GoBuild
with errors that needs to be fixed,:GoLint
with warnings that we want to check,:GoReferrers
with a list of referred identifiers) (gh-626) - Feature (NEW): a new
:AsmFmt
command 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
:GoFmt
by checking if the binary is indeed installed on the system (gh-617) - Commands: fix
:GoFmt
changing the fileformat of the current buffer (gh-615) - Commands: improve
:GoMetaLinter
by 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 = 1
to enable autosave and uselet g:go_metalinter_autosave_enabled = ['vet', 'golint']
to change your options. (gh-631) - Commands: improved
:GoDef
. Ifvimproc
is installedgodef
will 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
:GoRename
to output the original error if parsing fails (gh-675) - Commands: fix
:GoTest
to 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.Fprintln
not to highlight as builtin (gh-628) - Syntax: fixed wrong highlighting of channels of channels (gh-678)
Thanks to all contributors working on Vim-go.