return { 'saghen/blink.cmp', -- optional: provides snippets for the snippet source dependencies = { { 'rafamadriz/friendly-snippets' }, { 'L3MON4D3/LuaSnip', version = 'v2.*', config = function() -- load snippets from path/of/your/nvim/config/my-cool-snippets require('luasnip.loaders.from_vscode').lazy_load() require('luasnip.loaders.from_vscode').lazy_load { paths = vim.fn.stdpath 'config' .. '/mysnippets/' } end, }, }, -- use a release tag to download pre-built binaries version = '1.*', -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust -- build = 'cargo build --release', -- If you use nix, you can build from source using latest nightly rust with: -- build = 'nix run .#build-plugin', ---@module 'blink.cmp' ---@type blink.cmp.Config opts = { -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept) -- 'super-tab' for mappings similar to vscode (tab to accept) -- 'enter' for enter to accept -- 'none' for no mappings -- -- All presets have the following mappings: -- C-space: Open menu or open docs if already open -- C-n/C-p or Up/Down: Select next/previous item -- C-e: Hide menu -- C-k: Toggle signature help (if signature.enabled = true) -- -- See :h blink-cmp-config-keymap for defining your own keymap keymap = { preset = 'default', [''] = { function(cmp) if cmp.snippet_active() then return cmp.accept() else return cmp.select_and_accept() end end, 'snippet_forward', }, [''] = { 'snippet_backward', 'fallback' }, }, appearance = { -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' -- Adjusts spacing to ensure icons are aligned nerd_font_variant = 'mono', }, signature = { enabled = true }, completion = { -- menu = { border = 'single' }, documentation = { auto_show = true, auto_show_delay_ms = 500, }, accept = { auto_brackets = { enabled = true } }, list = { selection = { preselect = false, auto_insert = true } }, -- Display a preview of the selected item on the current line ghost_text = { enabled = true }, }, -- ensure you have the `snippets` source (enabled by default) -- snippets = { preset = 'default' }, snippets = { preset = 'luasnip' }, -- Default list of enabled providers defined so that you can extend it -- elsewhere in your config, without redefining it, due to `opts_extend` sources = { default = { 'lsp', 'path', 'snippets', 'buffer' }, }, -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` -- -- See the fuzzy documentation for more information fuzzy = { implementation = 'prefer_rust_with_warning' }, }, opts_extend = { 'sources.default' }, }