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({ [''] = cmp.mapping.select_prev_item(cmp_select), [''] = cmp.mapping.select_next_item(cmp_select), [''] = cmp.mapping.confirm({ select = true }), [''] = 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', 'vws', function() vim.lsp.buf.workspace_symbol() end, opts) vim.keymap.set('n', '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', 'vca', function() vim.lsp.buf.code_actions() end, opts) vim.keymap.set('n', 'vrr', function() vim.lsp.buf.references() end, opts) vim.keymap.set('n', 'vrn', function() vim.lsp.buf.rename() end, opts) vim.keymap.set('i', '', function() vim.lsp.buf.signature_help() end, opts) end)