return { { -- Autocompletion "saghen/blink.cmp", event = "VimEnter", version = "1.*", dependencies = { -- "allaman/emoji.nvim", -- "saghen/blink.compat", "moyiz/blink-emoji.nvim", "ribru17/blink-cmp-spell", -- Snippet Engine { "L3MON4D3/LuaSnip", version = "2.*", build = (function() -- Build Step is needed for regex support in snippets. -- This step is not supported in many windows environments. -- Remove the below condition to re-enable on windows. if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then return end return "make install_jsregexp" end)(), config = function() require("snippets") end, dependencies = { -- `friendly-snippets` contains a variety of premade snippets. -- See the README about individual language/framework/plugin snippets: -- https://github.com/rafamadriz/friendly-snippets -- { -- 'rafamadriz/friendly-snippets', -- config = function() -- require('luasnip.loaders.from_vscode').lazy_load() -- end, -- }, }, opts = {}, }, "folke/lazydev.nvim", }, --- @module 'blink.cmp' --- @type blink.cmp.Config opts = { keymap = { -- 'default' (recommended) for mappings similar to built-in completions -- to accept ([y]es) the completion. -- This will auto-import if your LSP supports it. -- This will expand snippets if the LSP sent a snippet. -- 'super-tab' for tab to accept -- 'enter' for enter to accept -- 'none' for no mappings -- -- For an understanding of why the 'default' preset is recommended, -- you will need to read `:help ins-completion` -- -- No, but seriously. Please read `:help ins-completion`, it is really good! -- -- All presets have the following mappings: -- /: move to right/left of your snippet expansion -- : Open menu or open docs if already open -- / or /: Select next/previous item -- : Hide menu -- : Toggle signature help -- -- See :h blink-cmp-config-keymap for defining your own keymap preset = "default", -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps }, appearance = { -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' -- Adjusts spacing to ensure icons are aligned nerd_font_variant = "mono", }, completion = { -- By default, you may press `` to show the documentation. -- Optionally, set `auto_show = true` to show the documentation after a delay. documentation = { auto_show = false, auto_show_delay_ms = 500 }, }, sources = { -- removed "spell" from default list default = { "lsp", "path", "snippets", "lazydev", "emoji" }, providers = { spell = { name = "Spell", module = "blink-cmp-spell", opts = { max_entries = 5, }, }, emoji = { name = "Emoji", module = "blink-emoji", score_offset = 15, opts = { insert = true, ---@type string|table|fun():table trigger = function() return { ":" } end, }, should_show_items = function() return vim.tbl_contains({ "gitcommit", "markdown" }, vim.o.filetype) end, }, -- emoji = { -- name = "emoji", -- module = "blink.compat.source", -- transform_items = function(ctx, items) -- local kind = require("blink.cmp.types").CompletionItemKind.Text -- for i = 1, #items do -- items[i].kind = kind -- end -- return items -- end, -- }, lazydev = { module = "lazydev.integrations.blink", score_offset = 100 }, }, }, snippets = { preset = "luasnip" }, -- Blink.cmp includes an optional, recommended rust fuzzy matcher, -- which automatically downloads a prebuilt binary when enabled. -- -- By default, we use the Lua implementation instead, but you may enable -- the rust implementation via `'prefer_rust_with_warning'` -- -- See :h blink-cmp-config-fuzzy for more information fuzzy = { implementation = "lua", }, -- Shows a signature help window while you type arguments for a function signature = { enabled = true }, }, }, } -- vim: ts=2 sts=2 sw=2 et