nvim: fix annoyances with completion key map

This commit is contained in:
Fernando Schauenburg 2024-07-19 22:37:45 +02:00
parent c6e0d17e27
commit 80136704e7

View file

@ -17,30 +17,37 @@ local make_keymap = function(cmp)
local select = { behavior = cmp.SelectBehavior.Select }
local next_or_complete = if_visible(cmp.mapping.select_next_item(select), cmp.mapping.complete())
local prev_or_complete = if_visible(cmp.mapping.select_prev_item(select), cmp.mapping.complete())
local next = if_visible(cmp.mapping.select_next_item(select))
local prev = if_visible(cmp.mapping.select_prev_item(select))
local cmp_map = function(rhs, modes)
if modes == nil then
modes = { "i", "c" }
elseif type(modes) ~= "table" then
modes = { modes }
end
return cmp.mapping(rhs, modes)
end
local abort = if_visible(cmp.mapping.abort())
local confirm = if_visible(cmp.mapping.confirm { select = true })
local confirm_or_complete =
if_visible(cmp.mapping.confirm { select = true }, cmp.mapping.complete())
local scroll_docs_down = cmp.mapping.scroll_docs(3)
local scroll_docs_up = cmp.mapping.scroll_docs(-3)
-- Mappings that should work in both command line and Insert mode.
return {
-- stylua: ignore start
["<c-n>"] = cmp_map(next_or_complete),
["<c-p>"] = cmp_map(prev_or_complete),
["<c-n>"] = { i = next_or_complete, c = next_or_complete },
["<c-p>"] = { i = prev_or_complete, c = prev_or_complete },
["<c-j>"] = cmp_map(next_or_complete),
["<c-k>"] = cmp_map(prev_or_complete),
["<c-j>"] = { i = next_or_complete, c = next },
["<c-k>"] = { i = prev_or_complete, c = prev },
["<s-down>"] = cmp_map(cmp.mapping.scroll_docs( 3)),
["<s-up>"] = cmp_map(cmp.mapping.scroll_docs(-3)),
["<down>"] = { i = next_or_complete, c = next },
["<up>"] = { i = prev_or_complete, c = prev },
["<c-e>"] = cmp_map(cmp.mapping.abort()),
["<c-y>"] = cmp_map(cmp.mapping.confirm { select = true }),
["<s-down>"] = { i = scroll_docs_down, c = scroll_docs_down },
["<s-up>"] = { i = scroll_docs_up, c = scroll_docs_up },
["<c-c>"] = { i = abort, c = abort },
["<c-e>"] = { i = abort, c = abort },
["<c-y>"] = { i = confirm, c = confirm },
["<tab>"] = { i = confirm, c = confirm_or_complete },
-- stylua: ignore end
}
end