nvim/lua/plugins/completion.lua

88 lines
2.4 KiB
Lua

return {
{
"saghen/blink.cmp",
dependencies = {
"L3MON4D3/LuaSnip",
"rafamadriz/friendly-snippets",
},
version = "*",
config = function()
require("blink.cmp").setup({
snippets = { preset = "luasnip" },
signature = { enabled = true },
appearance = {
use_nvim_cmp_as_default = false,
nerd_font_variant = "normal",
},
sources = {
default = { "lsp", "path", "snippets", "buffer" },
providers = {
cmdline = {
min_keyword_length = 2,
},
},
},
keymap = {
["<C-space>"] = {
"show",
"show_documentation",
"hide_documentation",
},
["<C-d>"] = { "hide", "fallback" },
["<C-c>"] = { "hide", "fallback" },
["<CR>"] = { "accept", "fallback" },
["<C-k>"] = { "select_prev", "fallback" },
["<C-j>"] = { "select_next", "fallback" },
},
cmdline = {
enabled = true,
completion = { menu = { auto_show = true } },
keymap = {
["<CR>"] = { "accept_and_enter", "fallback" },
},
},
completion = {
list = {
selection = {
auto_insert = true,
preselect = false,
},
},
menu = {
border = "rounded",
scrolloff = 1,
scrollbar = true,
draw = {
columns = {
{ "kind_icon" },
{ "label", "label_description", gap = 1 },
{ "kind" },
{ "source_name" },
},
},
},
documentation = {
auto_show = true,
auto_show_delay_ms = 200,
},
},
fuzzy = {
-- Frecency tracks the most recently/frequently used items and boosts the score of the item
use_frecency = true,
-- Proximity bonus boosts the score of items matching nearby words
use_proximity = true,
-- Controls which sorts to use and in which order, falling back to the next sort if the first one returns nil
-- You may pass a function instead of a string to customize the sorting
sorts = { "score", "sort_text" },
},
})
require("luasnip.loaders.from_vscode").lazy_load()
end,
},
}