summaryrefslogtreecommitdiffstats
path: root/.config/nvim/after/plugin/lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.config/nvim/after/plugin/lsp.lua46
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)