local cmp = require("cmp") local lspkind = require("lspkind") vim.opt.completeopt = { "menu", "menuone", "noinsert", "noselect" } cmp.setup({ formatting = { format = function(entry, vim_item) vim_item.kind = lspkind.symbolic(vim_item.kind, { mode = "symbol_text" })[entry.source.name] vim_item.dup = ({ vsnip = 0, nvim_lsp = 0, nvim_lua = 0, buffer = 0, })[entry.source.name] or 0 return vim_item end, }, sorting = { comparators = { cmp.config.compare.offset, cmp.config.compare.exact, cmp.config.compare.score, cmp.config.compare.kind, cmp.config.compare.sort_text, cmp.config.compare.length, cmp.config.compare.order, }, }, window = { completion = { autocomplete = true, col_offset = -3, side_padding = 0, }, completion = cmp.config.window.bordered({ winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None", }), documentation = cmp.config.window.bordered({ winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None", }), }, mapping = cmp.mapping.preset.insert({ [""] = 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" }), [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.abort(), [""] = cmp.mapping.confirm({ select = false }), }), --sources = cmp.config.sources({ -- { name = 'nvim_lsp' }, -- { name = 'path' }, -- { name = 'nvim_lua' }, --}), })