Files
2025-05-01 23:32:42 +02:00

123 lines
4.3 KiB
Lua

--- @type LazyPluginSpec
return {
"saghen/blink.cmp",
dependencies = {
"rafamadriz/friendly-snippets",
"L3MON4D3/LuaSnip",
"Kaiser-Yang/blink-cmp-avante",
"fang2hou/blink-copilot",
},
-- enabled = false,
version = "*",
config = function()
require("blink-cmp").setup({
appearance = {
use_nvim_cmp_as_default = true,
nerd_font_variant = "mono",
},
signature = {
enabled = true,
window = {
show_documentation = false,
},
},
keymap = {
preset = "default",
["<C-space>"] = {},
["<C-e>"] = {},
["<C-c>"] = { "show", "show_documentation", "hide_documentation" },
["<CR>"] = { "select_and_accept", "fallback" },
["<Up>"] = { "select_prev", "fallback" },
["<Down>"] = { "select_next", "fallback" },
["<Tab>"] = { "snippet_forward", "select_next", "fallback" },
["<S-Tab>"] = { "snippet_backward", "select_prev", "fallback" },
},
completion = {
menu = {
border = "rounded",
winhighlight = "Normal:Normal,Normal:Normal,CursorLine:BlinkCmpMenuSelection,Search:None",
},
documentation = {
auto_show = true,
window = {
border = "single",
},
},
},
snippets = {
preset = "luasnip",
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,
},
cmdline = {
completion = { menu = { auto_show = true } },
keymap = {
["<NL>"] = { "select_and_accept" },
},
},
sources = {
default = { "avante", "lsp", "snippets", "copilot", "buffer", "path" },
providers = {
avante = {
module = "blink-cmp-avante",
name = "Avante",
score_offset = 100,
},
lsp = {
name = "lsp",
enabled = true,
module = "blink.cmp.sources.lsp",
score_offset = 90,
},
snippets = {
name = "snippets",
enabled = true,
module = "blink.cmp.sources.snippets",
score_offset = 80,
},
copilot = {
name = "copilot",
module = "blink-copilot",
score_offset = 70,
async = true,
},
buffer = {
name = "Buffer",
enabled = true,
module = "blink.cmp.sources.buffer",
score_offset = 60,
},
path = {
name = "Path",
module = "blink.cmp.sources.path",
score_offset = 10,
opts = {
trailing_slash = false,
label_trailing_slash = true,
get_cwd = function(context)
return vim.fn.expand(("#%d:p:h"):format(context.bufnr))
end,
show_hidden_files_by_default = true,
},
},
},
},
})
end,
opts_extend = { "sources.default" },
}