dotfiles/.config/nvim/lua/plugins/extras/lazyvim/cmp.lua
2024-05-22 00:15:52 +02:00

84 lines
2.5 KiB
Lua

local cmp = require("cmp")
return {
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
},
keys = {
{ "<leader>ciC", "<cmd>CmpStatus<CR>", desc = "Cmp Status" },
},
opts = function(_, opts)
opts.mapping = cmp.mapping.preset.insert({
["<C-j>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-k>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<S-CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
["<C-CR>"] = function(fallback)
cmp.abort()
fallback()
end,
})
opts.window = {
completion = {
border = "rounded",
winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None",
scrollbar = false,
col_offset = -3,
side_padding = 1,
},
documentation = {
border = "rounded",
winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None",
scrollbar = false,
},
}
opts.performance = {
debounce = 20,
throttle = 20,
fetching_timeout = 20,
confirm_resolve_timeout = 20,
async_budget = 1,
max_view_entries = 50,
}
cmp.setup.cmdline({ "/", "?" }, {
mapping = cmp.mapping.preset.cmdline({
["<C-j>"] = {
c = function(fallback)
if cmp.visible() then
cmp.select_next_item()
else
fallback()
end
end,
},
["<C-k>"] = {
c = function(fallback)
if cmp.visible() then
cmp.select_prev_item()
else
fallback()
end
end,
},
}),
sources = {
{ name = "buffer" },
},
})
end,
}