return { { 'onsails/lspkind.nvim', config = function() require('lspkind').setup({ mode = 'symbol_text', preset = 'codicons', symbol_map = { Text = "󰉿", Method = "󰆧", Function = "󰊕", Constructor = "", Field = "󰜢", Variable = "󰀫", Class = "󰠱", Interface = "", Module = "", Property = "󰜢", Unit = "󰑭", Value = "󰎠", Enum = "", Keyword = "󰌋", Snippet = "", Color = "󰏘", File = "󰈙", Reference = "󰈇", Folder = "󰉋", EnumMember = "", Constant = "󰏿", Struct = "󰙅", Event = "", Operator = "󰆕", TypeParameter = "", }, }) end }, { "hrsh7th/nvim-cmp", dependencies = { "onsails/lspkind.nvim", "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "L3MON4D3/LuaSnip", }, event = "InsertEnter", config = function() local cmp = require('cmp') local lspkind = require('lspkind') cmp.setup({ snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end, }, formatting = { format = lspkind.cmp_format({ mode = 'symbol_text', maxwidth = { menu = 50, abbr = 50, }, ellipsis_char = '...', show_labelDetails = true, before = function(entry, vim_item) -- Add source name to menu vim_item.menu = ({ nvim_lsp = "[LSP]", luasnip = "[LuaSnip]", buffer = "[Buffer]", path = "[Path]", })[entry.source.name] return vim_item end }) }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.select_next_item(cmp_select), [''] = cmp.mapping.select_prev_item(cmp_select), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'luasnip' }, }, { { name = 'buffer' }, { name = 'path' }, }), window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, }) end, }, }