diff --git a/config/nvim/lua/fschauen/plugins/completion.lua b/config/nvim/lua/fschauen/plugins/completion.lua index f8a68a8..d6bea98 100644 --- a/config/nvim/lua/fschauen/plugins/completion.lua +++ b/config/nvim/lua/fschauen/plugins/completion.lua @@ -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 - [""] = cmp_map(next_or_complete), - [""] = cmp_map(prev_or_complete), + [""] = { i = next_or_complete, c = next_or_complete }, + [""] = { i = prev_or_complete, c = prev_or_complete }, - [""] = cmp_map(next_or_complete), - [""] = cmp_map(prev_or_complete), + [""] = { i = next_or_complete, c = next }, + [""] = { i = prev_or_complete, c = prev }, - [""] = cmp_map(cmp.mapping.scroll_docs( 3)), - [""] = cmp_map(cmp.mapping.scroll_docs(-3)), + [""] = { i = next_or_complete, c = next }, + [""] = { i = prev_or_complete, c = prev }, - [""] = cmp_map(cmp.mapping.abort()), - [""] = cmp_map(cmp.mapping.confirm { select = true }), + [""] = { i = scroll_docs_down, c = scroll_docs_down }, + [""] = { i = scroll_docs_up, c = scroll_docs_up }, + + [""] = { i = abort, c = abort }, + [""] = { i = abort, c = abort }, + [""] = { i = confirm, c = confirm }, + + [""] = { i = confirm, c = confirm_or_complete }, -- stylua: ignore end } end