@@ -122,8 +122,9 @@ keymap.get_mapping = function(mode, lhs)
|
||||
if keymap.equals(map.lhs, lhs) then
|
||||
return {
|
||||
lhs = map.lhs,
|
||||
rhs = map.rhs,
|
||||
rhs = map.rhs or '',
|
||||
expr = map.expr == 1,
|
||||
callback = map.callback,
|
||||
noremap = map.noremap == 1,
|
||||
script = map.script == 1,
|
||||
silent = map.silent == 1,
|
||||
@@ -137,8 +138,9 @@ keymap.get_mapping = function(mode, lhs)
|
||||
if keymap.equals(map.lhs, lhs) then
|
||||
return {
|
||||
lhs = map.lhs,
|
||||
rhs = map.rhs,
|
||||
rhs = map.rhs or '',
|
||||
expr = map.expr == 1,
|
||||
callback = map.callback,
|
||||
noremap = map.noremap == 1,
|
||||
script = map.script == 1,
|
||||
silent = map.silent == 1,
|
||||
@@ -152,6 +154,7 @@ keymap.get_mapping = function(mode, lhs)
|
||||
lhs = lhs,
|
||||
rhs = lhs,
|
||||
expr = false,
|
||||
callback = nil,
|
||||
noremap = true,
|
||||
script = false,
|
||||
silent = false,
|
||||
@@ -172,7 +175,19 @@ keymap.evacuate = function(bufnr, mode, lhs)
|
||||
end
|
||||
|
||||
-- Keep existing mapping as <Plug> mapping. We escape fisrt recursive key sequence. See `:help recursive_mapping`)
|
||||
local rhs = map.rhs
|
||||
local rhs, callback = '', nil
|
||||
if map.callback then
|
||||
callback = function(...)
|
||||
local keys = map.callback(...)
|
||||
if map.noremap then
|
||||
return keys
|
||||
end
|
||||
|
||||
vim.api.nvim_feedkeys(keymap.t(keymap.recursive(bufnr, mode, lhs, keys)), 'i', true)
|
||||
return keymap.t('<Ignore>')
|
||||
end
|
||||
else
|
||||
rhs = map.rhs
|
||||
if not map.noremap and map.expr then
|
||||
-- remap & expr mapping should evacuate as <Plug> mapping with solving recursive mapping.
|
||||
rhs = function()
|
||||
@@ -196,11 +211,13 @@ keymap.evacuate = function(bufnr, mode, lhs)
|
||||
-- noremap & non-expr mapping doesn't need to evacuate.
|
||||
return { keys = rhs, mode = 'it' .. (map.noremap and 'n' or '') }
|
||||
end
|
||||
end
|
||||
|
||||
local fallback = ('<Plug>(cmp.utils.keymap.evacuate:%s)'):format(map.lhs)
|
||||
keymap.set_map(bufnr, mode, fallback, rhs, {
|
||||
expr = map.expr,
|
||||
noremap = map.noremap,
|
||||
callback = callback,
|
||||
script = map.script,
|
||||
silent = mode ~= 'c', -- I can't understand but it solves the #427 (wilder.nvim's mapping does not work if silent=true in cmdline mode...)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user