return { "saghen/blink.cmp", build = 'cargo +nightly build --release', dependencies = { { "L3MON4D3/LuaSnip", version = "v2.*" } }, lazy = true, opts = { snippets = { preset = 'luasnip' }, sources = { default = { 'buffer', 'lsp', 'path', 'snippets' }, }, fuzzy = { implementation = 'prefer_rust' }, appearance = { nerd_font_variant = 'mono', kind_icons = { 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 = "󰅲" } }, completion = { keyword = { range = 'full' }, ghost_text = { enabled = true }, menu = { border = 'rounded', winhighlight = 'Normal:NormalFloat,FloatBorder:FloatBorder,CursorLine:CursorLine,Search:None', min_width = 40, max_height = 25, draw = { columns = { { 'label', 'label_description', gap = 1 }, { 'kind_icon', 'kind', gap = 1 } }, components = { label = { highlight = function(ctx) -- label and label details local highlights = { { 0, #ctx.label, group = ctx.deprecated and 'DiagnosticFloatingWarn' or 'NormalFloator' }, } if ctx.label_detail then table.insert(highlights, { #ctx.label, #ctx.label + #ctx.label_detail, group = 'NormalFloat' }) end return highlights end, }, } } }, documentation = { auto_show = true, auto_show_delay_ms = 0, window = { border = 'rounded', winhighlight = 'Normal:NormalFloat,FloatBorder:FloatBorder,CursorLine:CursorLine', } }, }, keymap = { [''] = { 'hide', 'show', 'fallback' }, [''] = { 'accept', 'fallback' }, [''] = { function(cmp) if cmp.snippet_active() then return cmp.accept() else return cmp.select_next() end end, 'snippet_forward', 'fallback' }, [''] = { function(cmp) if cmp.snippet_active() then return cmp.accept() else return cmp.select_prev() end end, 'snippet_backward', 'fallback' }, [''] = { 'select_prev', 'fallback' }, [''] = { 'select_next', 'fallback' }, [''] = { 'scroll_documentation_up', 'fallback' }, [''] = { 'scroll_documentation_down', 'fallback' }, [''] = { 'show_signature', 'hide_signature', 'fallback' }, }, signature = { enabled = true, window = { border = 'rounded', winhighlight = 'Normal:NormalFloat,FloatBorder:FloatBorder', } }, cmdline = { keymap = { preset = 'inherit', [''] = { 'accept_and_enter', 'fallback' } }, completion = { menu = { auto_show = function() local type = vim.fn.getcmdtype() -- Search forward and backward if type == "/" or type == "?" then return false end -- Commands if type == ":" then return true end return false end, } }, sources = function() local type = vim.fn.getcmdtype() -- Search forward and backward if type == "/" or type == "?" then return { "buffer" } end -- Commands if type == ":" then return { "cmdline" } end return {} end, }, } }