return function() local cmp = require("cmp") local luasnip = require("luasnip") local mapping = cmp.mapping return { completion = { completeopt = "menu,menuone,noinsert", }, snippet = { expand = function(args) luasnip.lsp_expand(args.body) end, }, mapping = mapping.preset.insert({ [""] = mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), [""] = mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), [""] = mapping.scroll_docs(-4), [""] = mapping.scroll_docs(4), [""] = mapping.complete(), [""] = mapping.abort(), [""] = mapping.confirm({ select = true }), [""] = mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true, }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "luasnip" }, { name = "async_path" }, { name = "buffer" }, }), } end