local capabilities = require('cmp_nvim_lsp').default_capabilities() local lspconfig = require('lspconfig') local servers = {'ccls', 'rust_analyzer'} for _, lsp in ipairs(servers) do lspconfig[lsp].setup { capabilities = capabilities } end local luasnip = require 'luasnip' local cmp = require 'cmp' cmp.setup { snippet = { expand = function(args) luasnip.lsp_expand(args.body) end }, preselect = cmp.PreselectMode.None, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.complete(), [''] = cmp.mapping.confirm { behavior = cmp.ConfirmBehavior.Replace, select = true, }, [''] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() else fallback() end end, { 'i', 's' }), [''] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() else fallback() end end, { 'i', 's' }), }), sources = { { name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'path' }, }, }