diff --git a/autoload/go/config.vim b/autoload/go/config.vim index 241551fa52..32ee06db61 100644 --- a/autoload/go/config.vim +++ b/autoload/go/config.vim @@ -578,6 +578,10 @@ function! go#config#FillStructMode() abort return get(g:, 'go_fillstruct_mode', 'fillstruct') endfunction +function! go#config#GoExcludeBinaries() abort + return get(g:, 'go_exclude_binaries', []) +endfunction + function! go#config#DebugMappings() abort let l:default = { \ '(go-debug-continue)': {'key': ''}, diff --git a/doc/vim-go.txt b/doc/vim-go.txt index e2e4ec3d73..1bda1d6c54 100644 --- a/doc/vim-go.txt +++ b/doc/vim-go.txt @@ -512,6 +512,7 @@ CTRL-t syntax to the binary name. e.g. `:GoInstallBinaries gopls@v0.9.1`. Set |'g:go_get_update'| to disable updating dependencies. + Set |'g:go_exclude_binaries'| to disable installing specific binaries. *:GoUpdateBinaries* :GoUpdateBinaries [binaries] @@ -525,6 +526,7 @@ CTRL-t syntax to the binary name. e.g. `:GoUpdateBinaries gopls@v0.9.1`. Set |'g:go_get_update'| to disable updating dependencies. + Set |'g:go_exclude_binaries'| to disable updating specific binaries. *:GoImplements* :GoImplements @@ -2489,7 +2491,7 @@ Highlight the current line and breakpoints in the debugger. let g:go_highlight_debug = 1 < - *'go:go_debug_breakpoint_sign_text'* + *'g:go_debug_breakpoint_sign_text'* Set the sign text used for breakpoints in the debugger. By default it's '>'. @@ -2497,6 +2499,46 @@ Set the sign text used for breakpoints in the debugger. By default it's '>'. let g:go_debug_breakpoint_sign_text = '>' < + *'g:go_exclude_binaries'* + +Set a list of binaries to exclude from installing/updating when running either +|:GoInstallBinaries| or |:GoUpdateBinaries|. The list of excluded binaries is +ignored when specifying a specific binary/version to install or update to. +Possible values are all keys used in the `s:packages` dictionary: + +> + let g:go_exclude_binaries = [ + \ 'asmfmt', + \ 'dlv', + \ 'errcheck', + \ 'fillstruct', + \ 'godef', + \ 'goimports', + \ 'revive', + \ 'gopls', + \ 'golangci-lint', + \ 'staticcheck', + \ 'gomodifytags', + \ 'gorename', + \ 'gotags', + \ 'impl', + \ 'motion', + \ 'iferr', + \] +< + +Default: + +> + let g:go_exclude_binaries = [] +< + +To exclude, for example, `errcheck`, `dlv`, and `golangci-lint`: + +> + let g:go_exclude_binaries = ['errcheck', 'dlv', 'golangci-lint'] +< + ============================================================================== FAQ TROUBLESHOOTING *go-troubleshooting* diff --git a/plugin/go.vim b/plugin/go.vim index 30651a9167..f130b9260e 100644 --- a/plugin/go.vim +++ b/plugin/go.vim @@ -130,8 +130,14 @@ function! s:GoInstallBinaries(updateBinaries, ...) endfor else let l:packages = s:packages + " Filter packages from exclude list, if no binaries were explicitly + " specified. + for l:bin in go#config#GoExcludeBinaries() + call remove(l:bin, l:packages) + endfor endif + let l:platform = '' if go#util#IsWin() let l:platform = 'windows'