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..3740743f58 100644 --- a/doc/vim-go.txt +++ b/doc/vim-go.txt @@ -2489,7 +2489,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 +2497,45 @@ 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|. 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..6d52d53372 100644 --- a/plugin/go.vim +++ b/plugin/go.vim @@ -132,6 +132,11 @@ function! s:GoInstallBinaries(updateBinaries, ...) let l:packages = s:packages endif + " Filter packages from exclude list + for l:bin in go#config#GoExcludeBinaries() + remove(l:bin, l:packages) + endfor + let l:platform = '' if go#util#IsWin() let l:platform = 'windows'