require("mason").setup() require("mason-lspconfig").setup({}) local cmp = require('cmp') cmp.setup({ sources = { { name = 'nvim_lsp' }, }, snippet = { expand = function(args) -- You need Neovim v0.10 to use vim.snippet vim.snippet.expand(args.body) end, }, mapping = cmp.mapping.preset.insert({}), }) vim.api.nvim_create_autocmd('LspAttach', { desc = 'LSP actions', callback = function(event) local opts = { buffer = event.buf } vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) vim.keymap.set("n", "vws", vim.lsp.buf.workspace_symbol, opts) vim.keymap.set("n", "vd", vim.diagnostic.open_float, opts) vim.keymap.set("n", "[d", vim.diagnostic.goto_next, opts) vim.keymap.set("n", "]d", vim.diagnostic.goto_prev, opts) vim.keymap.set("n", "vca", vim.lsp.buf.code_action, opts) vim.keymap.set("n", "vrr", vim.lsp.buf.references, opts) vim.keymap.set("n", "vrn", vim.lsp.buf.rename, opts) vim.keymap.set("i", "", vim.lsp.buf.signature_help, opts) end, })