]> Sergey Matveev's repositories - dotfiles.git/blobdiff - vim/.vim/plugin/lsp.vim
Signature window hides at least a line above
[dotfiles.git] / vim / .vim / plugin / lsp.vim
index 13d51d5aeb8bad48e54c8a58e30a43d85e0892a8..946c5a89175f5e635c8952fc0a79b65f604d8f21 100644 (file)
@@ -1,25 +1,49 @@
-let g:lsp_settings_enable_suggestions = 0
-let g:lsp_settings = {
-\  'clangd': {'cmd': ['clangd60']},
-\}
+vim9script
 
-let g:asyncomplete_auto_completeopt = 0
-let g:asyncomplete_auto_popup = 0
-imap <C-@> <Plug>(asyncomplete_force_refresh)
-autocmd! CompleteDone * if pumvisible() == 0 | pclose | endif
+# go get golang.org/x/tools/gopls@latest
+# pip install 'python-language-server[all]'
 
-let g:lsp_highlight_references_enabled = 1
-let g:lsp_diagnostics_echo_cursor = 1
-let g:lsp_diagnostics_echo_delay = -1
+var lspServers: list<dict<any>>
 
-function! s:on_lsp_buffer_enabled() abort
-    nmap <buffer> [g <Plug>(lsp-previous-diagnostic)
-    nmap <buffer> ]g <Plug>(lsp-next-diagnostic)
-    nmap <buffer> gd <plug>(lsp-definition)
-    nmap <buffer> K <plug>(lsp-hover)
-endfunction
+for d in [
+    {
+        filetype: ["c", "cpp"],
+        path: "clangd",
+        args: ["--log=error"],
+    },
+    {
+        filetype: ["go"],
+        path: "gopls",
+        syncInit: true,
+    },
+    {
+        filetype: ["python"],
+        path: "pyls",
+        syncInit: true,
+        workspaceConfig: {pyls: {
+            configurationSources: ["flake8"],
+            plugins: {
+                mccabe: {enabled: false},
+            },
+        }},
+    },
+]
+    if executable(d["path"])
+        add(lspServers, d)
+    endif
+endfor
 
-augroup lsp_install
-    autocmd!
-    autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
-augroup END
+var lspOpts = {
+    ignoreMissingServer: true,
+    autoComplete: false,
+    autoHighlight: true,
+    autoPopulateDiags: true,
+    showInlayHints: true,
+    showSignature: false,
+}
+
+autocmd VimEnter * call LspAddServer(lspServers)
+autocmd VimEnter * call LspOptionsSet(lspOpts)
+nmap gd :LspGotoDefinition<CR>
+nmap <C-W>gd :vert LspGotoDefinition<CR>
+nmap <F6> :lopen<CR>