local lsp_installer = require("nvim-lsp-installer") local cmp = require("cmp") local lspkind = require("lspkind") cmp.setup({ snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end }, mapping = { [''] = cmp.config.disable, [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.confirm({ select = true }), [''] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), [''] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }) }, sources = { { name = "nvim_lsp" }, { name = "luasnip" }, { name = "nvim_lua" }, { name = "path" }, { name = "buffer", keyword_length = 5 } }, completion = { completeopt = "menu,menuone,noselect,noinsert" }, formatting = { format = lspkind.cmp_format({ with_text = true, menu = { buffer = "[buf]", nvim_lsp = "[LSP]", path = "[path]" } }) }, experimental = { ghost_text = true } }) local capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()) lsp_installer.on_server_ready(function(server) local opts = { capabilities = capabilities } require("lsp_signature").setup({ bind = true, }) server:setup(opts) end)