return { { "hrsh7th/nvim-cmp", dependencies = { 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', 'hrsh7th/cmp-cmdline', 'hrsh7th/cmp-nvim-lua', 'hrsh7th/cmp-calc', 'saadparwaiz1/cmp_luasnip', 'L3MON4D3/LuaSnip', 'onsails/lspkind.nvim', { 'windwp/nvim-autopairs', event = "InsertEnter", config = true }, }, config = function() 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.menu = ({ nvim_lsp = "[LSP]", buffer = "[BUF]", path = "[PATH]", luasnip = "[SNIP]", nvim_lua = "[LUA]", })[entry.source.name] vim_item.kind = lspkind.symbolic(vim_item.kind, { mode = "symbol" }) return vim_item end, }, sorting = { comparators = { cmp.config.compare.offset, cmp.config.compare.exact, cmp.config.compare.recently_used, 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.abort(), [""] = cmp.mapping.confirm({ select = false }), }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'buffer' }, { name = 'path' }, { name = 'nvim_lua' }, }), }) end }, }