-- blink.lua - blink.cmp 补全引擎(替换 nvim-cmp) return { { "saghen/blink.cmp", version = "*", event = "InsertEnter", dependencies = { "rafamadriz/friendly-snippets", { "L3MON4D3/LuaSnip", version = "v2.*" }, }, opts = { keymap = { preset = "default", [""] = { "show", "show_documentation", "hide_documentation" }, [""] = { "hide" }, [""] = { "accept", "fallback" }, [""] = { "snippet_forward", "fallback" }, [""] = { "snippet_backward", "fallback" }, [""] = { "select_next", "fallback" }, [""] = { "select_prev", "fallback" }, [""] = { "scroll_documentation_up", "fallback" }, [""] = { "scroll_documentation_down", "fallback" }, }, appearance = { nerd_font_variant = "mono", }, 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" }, providers = { lsp = { score_offset = 100 }, path = { score_offset = 50 }, snippets = { score_offset = 40 }, buffer = { score_offset = 10 }, }, }, completion = { accept = { auto_brackets = { enabled = true } }, menu = { border = "rounded", draw = { treesitter = { "lsp" }, columns = { { "label", "label_description", gap = 1 }, { "kind_icon", "kind" }, }, }, }, documentation = { auto_show = true, auto_show_delay_ms = 200, window = { border = "rounded" }, }, ghost_text = { enabled = true }, }, signature = { enabled = true, window = { border = "rounded" }, }, }, config = function(_, opts) -- LuaSnip 加载 vscode 风格的代码片段 require("luasnip.loaders.from_vscode").lazy_load() require("blink.cmp").setup(opts) end, }, -- LuaSnip 代码片段引擎 { "L3MON4D3/LuaSnip", version = "v2.*", build = "make install_jsregexp", dependencies = { "rafamadriz/friendly-snippets" }, opts = { history = true, delete_check_events = "TextChanged", }, }, }