local lsp = require("lsp-zero") local lspconfig = require("lspconfig") lsp.preset("recommended") lsp.ensure_installed { "lua_ls", "clangd", "cmake", } local cmp = require("cmp") local cmp_select = { behavior = cmp.SelectBehavior.Select } local cmp_mappings = lsp.defaults.cmp_mappings { [""] = cmp.mapping.select_next_item(cmp_select), [""] = cmp.mapping.select_prev_item(cmp_select), [""] = cmp.mapping.confirm({ select = true }), [""] = cmp.mapping.confirm({ select = true }), } lsp.setup_nvim_cmp { mapping = cmp_mappings } lsp.set_preferences { } lsp.on_attach(function(_, buffer) local opts = { buffer=buffer, remap=false } vim.keymap.set("n", "ld", function() vim.lsp.buf.definition() end, opts) vim.keymap.set("n", "h", function() vim.lsp.buf.hover() end, opts) vim.keymap.set("n", "la", function() vim.lsp.buf.code_action() end, opts) vim.keymap.set("n", "lrf", function() vim.lsp.buf.references() end, opts) vim.keymap.set("n", "lrn", function() vim.lsp.buf.rename() end, opts) vim.keymap.set("n", "ls", function() vim.lsp.buf.signature_help() end, opts) end) lsp.setup() vim.diagnostic.config { virtual_text = true }