local icons = {
	Namespace = "󰌗",
	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 = "󰊄",
	Table = "",
	Object = "󰅩",
	Tag = "",
	Array = "[]",
	Boolean = "",
	Number = "",
	Null = "󰟢",
	String = "󰉿",
	Calendar = "",
	Watch = "󰥔",
	Package = "",
	Copilot = "",
	Codeium = "",
	TabNine = "",
}

return {
	"hrsh7th/nvim-cmp",
	event = "InsertEnter",
	dependencies = {
		"hrsh7th/cmp-nvim-lsp",
		-- "hrsh7th/cmp-buffer",
		-- "hrsh7th/cmp-path",
		-- "L3MON4D3/LuaSnip",
	},
	config = function()
		local cmp = require("cmp")

		local opts = {
			completion = {
				-- autocomplete = false,
				completeopt = "menu,menuone,noinsert",
			},
			formatting = {
				fields = { "abbr", "kind", "menu" },
				format = function(_, item)
					local icon = icons[item.kind] or ""
					item.kind = string.format(" %s  %s", icon, item.kind)
					return item
				end,
			},
			mapping = {
				["<C-space>"] = cmp.mapping.complete(),
				["<C-up>"] = cmp.mapping.select_prev_item(),
				["<C-down>"] = cmp.mapping.select_next_item(),
				["<C-x>"] = cmp.mapping.abort(),
				["<cr>"] = cmp.mapping.confirm({ select = true }),
			},
			-- snippet = {
			-- 	expand = function(args)
			-- 		require("luasnip").lsp_expand(args.body)
			-- 	end,
			-- },
			-- preselect = cmp.PreselectMode.None,
			sources = {
				{ name = "nvim_lsp" },
				-- { name = "luasnip" },
				-- { name = "buffer" },
				-- { name = "path" },
			},
			window = {
				completion = {
					border = "rounded",
					scrollbar = false,
				},
				documentation = {
					border = "rounded",
				}
			},
		}

		cmp.setup(opts)
	end,
}