summaryrefslogtreecommitdiffstats
path: root/vim/plugin/lsp.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/plugin/lsp.vim')
-rw-r--r--vim/plugin/lsp.vim45
1 files changed, 45 insertions, 0 deletions
diff --git a/vim/plugin/lsp.vim b/vim/plugin/lsp.vim
new file mode 100644
index 0000000..ea2f62d
--- /dev/null
+++ b/vim/plugin/lsp.vim
@@ -0,0 +1,45 @@
+func! s:setup_ls(...) abort
+ let l:servers = lsp#get_allowed_servers()
+
+ " key mappings
+ for l:server in l:servers
+ let l:cap = lsp#get_server_capabilities(l:server)
+
+ if has_key(l:cap, 'completionProvider')
+ setlocal completefunc=lsp#complete
+ endif
+
+ if has_key(l:cap, 'hoverProvider')
+ setlocal keywordprg=:LspHover
+ endif
+
+ if has_key(l:cap, 'codeActionProvider')
+ nmap <silent><buffer>ga <plug>(lsp-code-action)
+ endif
+
+ if has_key(l:cap, 'definitionProvider')
+ nmap <silent><buffer>gd <plug>(lsp-definition)
+ nmap <silent><buffer>gk <plug>(lsp-peek-definition)
+ endif
+ endfor
+endfunc
+
+" register language server
+augroup LSC
+ autocmd!
+ autocmd User lsp_setup call lsp#register_server({
+ \ 'name': 'gopls',
+ \ 'cmd': {_->['gopls']},
+ \ 'allowlist': ['go']
+ \})
+
+ autocmd User lsp_server_init call <SID>setup_ls()
+ autocmd BufEnter * call <SID>setup_ls()
+augroup END
+
+" disable diagnostics etc.
+let g:lsp_diagnostics_enabled = 0
+let g:lsp_diagnostics_signs_enabled = 0
+let g:lsp_diagnostics_virtual_text_enabled = 0
+let g:lsp_diagnostics_highlights_enabled = 0
+let g:lsp_document_code_action_signs_enabled = 0