return { 'blink.cmp', event = 'InsertEnter', before = function() require('lz.n').trigger_load({ 'mini.icons', 'luasnip', }) end, after = function() ---@module 'blink.cmp' ---@type blink.cmp.Config local opts = { appearance = { use_nvim_cmp_as_default = false, nerd_font_variant = 'mono', }, completion = { accept = { auto_brackets = { enabled = true, }, }, menu = { draw = { treesitter = { 'lsp' }, components = { kind_icon = { ellipsis = false, text = function(ctx) local icon, _, _ = require('mini.icons').get('lsp', ctx.kind) return icon end, highlight = function(ctx) local _, hl, _ = require('mini.icons').get('lsp', ctx.kind) return hl end, }, }, }, }, documentation = { auto_show = true, auto_show_delay_ms = 200, }, ghost_text = { enabled = false, }, list = { selection = 'manual', }, }, snippets = { expand = function(snippet) require('luasnip').lsp_expand(snippet) end, active = function(filter) if filter and filter.direction then return require('luasnip').jumpable(filter.direction) end return require('luasnip').in_snippet() end, jump = function(direction) require('luasnip').jump(direction) end, }, sources = { default = { 'lsp', 'path', 'snippets', 'buffer', 'luasnip' }, }, keymap = { preset = 'super-tab', }, } require('blink.cmp').setup(opts) end, }