vim.opt.signcolumn = 'yes' -- Add cmp_nvim_lsp capabilities settings vim.lsp.config('*', { capabilities = require('cmp_nvim_lsp').default_capabilities(), automatic_enable = true, }) -- This is where you enable features that only work -- if there is a language server active in the file vim.api.nvim_create_autocmd('LspAttach', { desc = 'LSP actions', callback = function(event) local opts = { buffer = event.buf } vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) vim.keymap.set('n', 'go', 'lua vim.lsp.buf.type_definition()', opts) vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) vim.keymap.set('n', '', 'lua vim.lsp.buf.rename()', opts) vim.keymap.set({ 'n', 'x' }, '', 'lua vim.lsp.buf.format({async = true})', opts) vim.keymap.set('n', '', 'lua vim.lsp.buf.code_action()', opts) vim.keymap.set('n', 'd', 'lua vim.diagnostic.open_float()', opts) end, }) local cmp = require('cmp') cmp.setup({ sources = { { name = 'nvim_lsp' }, { name = 'luasnip' }, -- Ensure snippets work }, snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) -- Use luasnip instead of vim.snippet end, }, mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true, }), }), }) vim.lsp.config("clangd", { -- ain't working -- cmd = {"clangd", "-xc-header"} }) vim.lsp.config("rust_analyzer", { enabled = false, }) local mason_lspconfig = require('mason-lspconfig') mason_lspconfig.setup { PATH = "append", } vim.g.rustaceanvim = { server = { on_attach = function(client, bufnr) print("Loaded rustaceanvim") end, settings = { ["rust-analyzer"] = { diagnostics = { enable = true, enableExperimental = true, }, } }, } } vim.keymap.set('n', 'tt', 'lua vim.cmd("RustLsp testables")', {})