先日、Gopls の v0.2.0 がリリースされました。
v0.2.0
https://github.com/golang/go/issues/33030#issuecomment-549629508
リリースノートに書かれていますが、このバージョンから completeUnimported に対応しています。fmt
が import されていなくても fmt.Println
が補完できる様になります。ただしデフォルトでは無効になっています。Visual Studio Code であれば以下を settings.json
に含める事で使える様になります。
"gopls": {
"completeUnimported": true
},
また vim-lsp をお使いであれば以下の様に設定する事で使える様になります。
if executable('gopls')
augroup LspGo
au!
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'go-lang',
\ 'cmd': {server_info->['gopls']},
\ 'whitelist': ['go'],
\ 'workspace_config': {'gopls': {
\ 'staticcheck': v:true,
\ 'completeUnimported': v:true,
\ 'caseSensitiveCompletion': v:true,
\ 'usePlaceholders': v:true,
\ 'completionDocumentation': v:true,
\ 'watchFileChanges': v:true,
\ 'hoverKind': 'SingleLine',
\ }},
\ })
autocmd FileType go setlocal omnifunc=lsp#complete
autocmd FileType go nmap <buffer> gd <plug>(lsp-definition)
autocmd FileType go nmap <buffer> ,n <plug>(lsp-next-error)
autocmd FileType go nmap <buffer> ,p <plug>(lsp-previous-error)
augroup END
endif
先日 gopls の v0.2.0 がリリースされて completeUnimported が使える様になった。補完候補が出てくるまでちょっと時間が掛かる。 #golang pic.twitter.com/14LBC3JERt
— mattn (@mattn_jp) November 12, 2019
僕はその他にも実験的なオプションを沢山有効にしています。詳しくは gopls の settings.md を参照下さい。
settings.md
https://github.com/golang/tools/blob/master/gopls/doc/settings.md
これらは Visual Studio Code の gopls セクションでも使えますし、同様に vim-lsp の workspace_config でも使えます。