local cmp = require("cmp") return { "hrsh7th/nvim-cmp", dependencies = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", }, keys = { { "ciC", "CmpStatus", desc = "Cmp Status" }, }, opts = function(_, opts) opts.mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.abort(), [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true, }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. [""] = function(fallback) cmp.abort() fallback() end, }) opts.window = { completion = { border = "rounded", winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None", scrollbar = false, col_offset = -3, side_padding = 1, }, documentation = { border = "rounded", winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None", scrollbar = false, }, } opts.performance = { debounce = 0, throttle = 0, fetching_timeout = 20, confirm_resolve_timeout = 20, async_budget = 1, max_view_entries = 50, } cmp.setup.cmdline({ "/", "?" }, { mapping = cmp.mapping.preset.cmdline({ [""] = { c = function(fallback) if cmp.visible() then cmp.select_next_item() else fallback() end end, }, [""] = { c = function(fallback) if cmp.visible() then cmp.select_prev_item() else fallback() end end, }, }), sources = { { name = "buffer" }, }, }) end, }