diff options
author | Guangxiong Lin <[email protected]> | 2022-06-04 16:53:35 +0800 |
---|---|---|
committer | Guangxiong Lin <[email protected]> | 2022-06-04 18:36:58 +0800 |
commit | ca6da1729156f74bb36ba94a864ab5e39e78ae3b (patch) | |
tree | a8b5d6310eb51a338f9f8808d45a63ce2e5d9b50 /.vim/after/plugin/nvim-lsp.vim | |
parent | 07231696a2e090790bda1910ec85a7dec3ecbb69 (diff) | |
download | dotfiles-ca6da1729156f74bb36ba94a864ab5e39e78ae3b.tar.gz dotfiles-ca6da1729156f74bb36ba94a864ab5e39e78ae3b.tar.bz2 dotfiles-ca6da1729156f74bb36ba94a864ab5e39e78ae3b.zip |
Try using nvim
Diffstat (limited to '.vim/after/plugin/nvim-lsp.vim')
-rw-r--r-- | .vim/after/plugin/nvim-lsp.vim | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/.vim/after/plugin/nvim-lsp.vim b/.vim/after/plugin/nvim-lsp.vim new file mode 100644 index 0000000..f6d23c3 --- /dev/null +++ b/.vim/after/plugin/nvim-lsp.vim @@ -0,0 +1,59 @@ +if !has('nvim') + finish +endif + +packadd nvim-lspconfig +packadd cmp-nvim-lsp + +lua <<EOF + +local lspconfig = require 'lspconfig' +local cmp_nvim_lsp = require 'cmp_nvim_lsp' + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = cmp_nvim_lsp.update_capabilities(capabilities) + +local opts = { noremap = true, silent = true } + +vim.keymap.set('n', '[g', vim.diagnostic.goto_prev, opts) +vim.keymap.set('n', ']g', vim.diagnostic.goto_next, opts) + +local on_attach = function(client, bufnr) + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + vim.api.nvim_buf_set_option(bufnr, 'tagfunc', 'v:lua.vim.lsp.tagfunc') + + -- Mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local bufopts = { noremap=true, silent=true, buffer=bufnr } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) + vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts) + -- vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts) + -- vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts) + -- vim.keymap.set('n', '<space>wl', function() + -- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + -- end, bufopts) + vim.keymap.set('n', 'gy', vim.lsp.buf.type_definition, bufopts) + vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts) + -- vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + -- vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts) + + vim.cmd [[ + autocmd! BufWritePre *.go,*.rs lua vim.lsp.buf.formatting_sync(nil, 1000) + ]] + +end + +local servers = { 'clangd', 'gopls' , 'gdscript', 'pylsp' } + +for _, lsp in pairs(servers) do + lspconfig[lsp].setup{ + on_attach = on_attach, + capabilities = capabilities, + } +end + +EOF |