Navigation Menu

Skip to content

v1.4

Compare
Choose a tag to compare
@fatih fatih released this 19 Jan 03:29
· 3578 commits to master since this release

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 the go 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 show FAILED.
    • :GoRun opens a new vertical terminal emulator inside Neovim and runs the command there. The terminal mode can be changed with g:go_term_mode, which is by default vsplit. Current options are vsplit, 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 with g:go_term_mode. The g:go_term_enabled setting can be use to change the behavior of :GoTestXXX commands .If set to 1, 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 and g: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.
  • 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. Set let g:go_metalinter_autosave = 1 to enable autosave and use let g:go_metalinter_autosave_enabled = ['vet', 'golint'] to change your options. (gh-631)
  • Commands: improved :GoDef. If vimproc is installed godef 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.