diff options
Diffstat (limited to '')
-rw-r--r-- | .config/nvim/after/plugin/lsp.lua | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua new file mode 100644 index 0000000..66d4ad8 --- /dev/null +++ b/.config/nvim/after/plugin/lsp.lua @@ -0,0 +1,46 @@ +local lsp = require('lsp-zero') + +lsp.preset('recommended') + +require('mason').setup({}) +require('mason-lspconfig').setup({ + ensure_installed = { + 'tsserver', + 'eslint', + 'sumneko_lua', + 'ccls', + 'gopls', + 'rust_analyzer', + }, + handlers = { + lsp_zero.default_setup, + }, +}) + +local cmp = require('cmp') +local cmp_select = { behavior = cmp.SelectBehavior.Select } +local cmp_mappings = lsp.defaults.cmp_mappings({ + ['<C-p>'] = cmp.mapping.select_prev_item(cmp_select), + ['<C-n>'] = cmp.mapping.select_next_item(cmp_select), + ['<C-n>'] = cmp.mapping.confirm({ select = true }), + ['<C-Space>'] = cmp.mapping.complete(), +}) + +-- lsp.set_preferences({ +-- sign_icons = { } +-- }) + +lsp.on_attach(function(client, bufnr) + local opts = { buffer = bufnr, remap = false } + + vim.keymap.set('n', 'gd', function() vim.lsp.buf.definition() end, opts) + vim.keymap.set('n', 'K', function() vim.lsp.buf.hover() end, opts) + vim.keymap.set('n', '<leader>vws', function() vim.lsp.buf.workspace_symbol() end, opts) + vim.keymap.set('n', '<leader>vd', function() vim.diagnostic.open_float() end, opts) + vim.keymap.set('n', '[d', function() vim.diagnostic.goto_next() end, opts) + vim.keymap.set('n', ']d', function() vim.diagnostic.goto_prev() end, opts) + vim.keymap.set('n', '<leader>vca', function() vim.lsp.buf.code_actions() end, opts) + vim.keymap.set('n', '<leader>vrr', function() vim.lsp.buf.references() end, opts) + vim.keymap.set('n', '<leader>vrn', function() vim.lsp.buf.rename() end, opts) + vim.keymap.set('i', '<C-h>', function() vim.lsp.buf.signature_help() end, opts) +end) |