---@type boolean local cond = not require("config.settings").use_blink_cmp ---@type LazySpec local spec = { "iguanacucumber/magazine.nvim", name = "nvim-cmp", lazy = false, dependencies = require("plugins.nvim-cmp.dependencies"), config = function() local cmp = require("cmp") local luasnip = require("luasnip") if require("config.settings").use_github_copilot then require("copilot_cmp").setup({}) end local act = require("plugins.nvim-cmp.actions") cmp.setup({ -- mapping mapping = cmp.mapping.preset.insert({ ["<C-d>"] = cmp.mapping.scroll_docs(-4), ["<C-f>"] = cmp.mapping.scroll_docs(4), ["<C-Space>"] = cmp.mapping.complete(), ["<C-e>"] = cmp.mapping.abort(), ["<CR>"] = cmp.mapping(function(fallback) if cmp.visible() then if luasnip.expandable() then luasnip.expand() else cmp.confirm({ select = true, }) end else fallback() end end), ["<Tab>"] = cmp.mapping(act.tab, { "i", "s" }), ["<S-Tab>"] = cmp.mapping(act.shift_tab, { "i", "s" }), }), -- sources sources = cmp.config.sources(require("plugins.nvim-cmp.cmp-config-sources")), -- snippet snippet = { expand = function(args) luasnip.lsp_expand(args.body) end, }, -- formatting formatting = { format = require("lspkind").cmp_format({ -- "text" or "text_symbol", "symbol_text", "symbol" mode = "text_symbol", -- "codicons" or "default" preset = "codicons", symbol_map = { Copilot = "" }, }), --[[ format = function(entry, vim_item) local highlights_info = require("colorful-menu").cmp_highlights(entry) -- highlight_info is nil means we are missing the ts parser, it's -- better to fallback to use default `vim_item.abbr`. What this plugin -- offers is two fields: `vim_item.abbr_hl_group` and `vim_item.abbr`. if highlights_info ~= nil then vim_item.abbr_hl_group = highlights_info.highlights vim_item.abbr = highlights_info.text end return vim_item end, ]] }, enabled = function() local is_prompt_buftype = vim.api.nvim_get_option_value("buftype", {}) ~= "prompt" local is_dap_buffer = require("cmp_dap").is_dap_buffer() return is_prompt_buftype or is_dap_buffer end, performance = { --fetching_timeout = 2000, }, }) cmp.setup.cmdline(":", { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = "cmdline" }, { name = "path" }, }), }) cmp.setup.cmdline({ "/", "?" }, { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = "buffer", option = { keyword_pattern = [[\k\+]], }, }, }), }) cmp.setup.filetype({ "dap-repl", "dapui_watches", "dapui_hover" }, { sources = { { name = "dap" }, }, }) end, cond = cond, enabled = cond, } return spec