Files
nvim-cmp/lua/cmp/mapping.lua
elianiva b8e93385e0 fix: {next,prev}_item mapping (#18)
* fix: {next,prev}_item mapping

* fix: use 'n' for feedkeys
2021-08-13 19:34:37 +09:00

68 lines
1.4 KiB
Lua

local types = require('cmp.types')
local mapping = {}
mapping.complete = function()
return function(core)
core.complete(core.get_context({ reason = types.cmp.ContextReason.Manual }))
end
end
mapping.close = function()
return function(core, fallback)
if vim.fn.pumvisible() == 1 then
core.reset()
else
fallback()
end
end
end
mapping.scroll = function(delta)
return function(core, fallback)
if core.menu.float:is_visible() then
core.menu.float:scroll(delta)
else
fallback()
end
end
end
mapping.next_item = function()
return function(_, fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-n>', 'n', true, true), 'n')
else
fallback()
end
end
end
mapping.prev_item = function()
return function(_, fallback)
if vim.fn.pumvisible() == 1 then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes('<C-p>', 'n', true, true), 'n')
else
fallback()
end
end
end
mapping.confirm = function(option)
option = option or {}
return function(core, fallback)
local e = core.menu:get_selected_entry() or (option.select and core.menu:get_first_entry() or nil)
if e then
core.confirm(e, {
behavior = option.behavior,
}, function()
core.complete(core.get_context({ reason = types.cmp.ContextReason.TriggerOnly }))
end)
else
fallback()
end
end
end
return mapping