return { 'saghen/blink.cmp', -- optional: provides snippets for the snippet source dependencies = { 'mikavilpas/blink-ripgrep.nvim', 'rafamadriz/friendly-snippets', { 'L3MON4D3/LuaSnip', version = 'v2.*' } }, -- use a release tag to download pre-built binaries version = 'v1.8.*', ---@module 'blink-cmp' ---@type blink.cmp.Config opts = { fuzzy = { implementation = 'prefer_rust_with_warning' }, snippets = { preset = 'luasnip', active = function(filter) local snippet = require('luasnip') local blink = require('blink.cmp') if snippet.in_snippet() and not blink.is_visible() then return true else if not snippet.in_snippet() and vim.fn.mode() == 'n' then snippet.unlink_current() end return false end end }, cmdline = { keymap = { preset = 'cmdline' }, completion = { list = { selection = { preselect = false, auto_insert = true } } } }, completion = { list = { selection = { preselect = false, auto_insert = true } } }, keymap = { preset = 'enter' }, appearance = { use_nvim_cmp_as_default = true, nerd_font_variant = 'mono' }, sources = { default = { 'lazydev', 'lsp', 'snippets', 'ripgrep', 'path', 'buffer' }, per_filetype = { sql = { 'snippets', 'dadbod', 'buffer', 'ripgrep' }, mysql = { 'snippets', 'dadbod', 'buffer', 'ripgrep' }, }, providers = { lazydev = { name = 'LazyDev', module = 'lazydev.integrations.blink', -- make lazydev completions top priority (see `:h blink.cmp`) score_offset = 100, }, ripgrep = { module = 'blink-ripgrep', name = 'Ripgrep', score_offset = -5, -- the options below are optional, some default values are shown ---@module 'blink-ripgrep' ---@type blink-ripgrep.Options opts = { backend = { use = 'ripgrep', }, ripgrep = { ignore_paths = {}, additional_paths = {}, additional_rg_options = {}, max_filesize = '1M', project_root_fallback = true, search_casing = '--ignore-case', }, project_root_marker = '.git', fallback_to_regex_highlighting = true, toggles = { debug = nil, }, }, transform_items = function(_, items) for _, item in ipairs(items) do -- example: append a description to easily distinguish rg results item.labelDetails = { description = '(rg)', } end return items end, }, dadbod = { name = 'Dadbod', module = 'vim_dadbod_completion.blink' }, }, }, signature = { enabled = true } }, }