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",
	},
	opts = {
		completion = {
			autocomplete = true,
			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,
		},
		-- 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",
			}
		},
	},
	config = function(_, opts)
		local cmp = require("cmp")

		opts.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 }),
		}

		cmp.setup(opts)
	end,
}