feat(mapping): add all native mappings (#1430)

* feat(mapping): fully mimics the behavior of native `<C-n>` and `<C-p>`

Signed-off-by: Wuelner Martínez <wuelner.martinez@outlook.com>

* feat(mapping): added more native mappings to the `cmdline` preset

Signed-off-by: Wuelner Martínez <wuelner.martinez@outlook.com>

* fix(mapping): improved `<Tab>` and `<S-Tab>` mapppings of `cmdline`

Signed-off-by: Wuelner Martínez <wuelner.martinez@outlook.com>

---------

Signed-off-by: Wuelner Martínez <wuelner.martinez@outlook.com>
This commit is contained in:
Wuelner Martínez
2023-02-11 07:31:42 -06:00
committed by GitHub
parent cfafe0a1ca
commit 53f49c5145

View File

@@ -1,6 +1,5 @@
local types = require('cmp.types') local types = require('cmp.types')
local misc = require('cmp.utils.misc') local misc = require('cmp.utils.misc')
local feedkeys = require('cmp.utils.feedkeys')
local keymap = require('cmp.utils.keymap') local keymap = require('cmp.utils.keymap')
local function merge_keymaps(base, override) local function merge_keymaps(base, override)
@@ -43,10 +42,24 @@ mapping.preset.insert = function(override)
i = mapping.select_prev_item({ behavior = types.cmp.SelectBehavior.Select }), i = mapping.select_prev_item({ behavior = types.cmp.SelectBehavior.Select }),
}, },
['<C-n>'] = { ['<C-n>'] = {
i = mapping.select_next_item({ behavior = types.cmp.SelectBehavior.Insert }), i = function()
local cmp = require('cmp')
if cmp.visible() then
cmp.select_next_item({ behavior = types.cmp.SelectBehavior.Insert })
else
cmp.complete()
end
end,
}, },
['<C-p>'] = { ['<C-p>'] = {
i = mapping.select_prev_item({ behavior = types.cmp.SelectBehavior.Insert }), i = function()
local cmp = require('cmp')
if cmp.visible() then
cmp.select_prev_item({ behavior = types.cmp.SelectBehavior.Insert })
else
cmp.complete()
end
end,
}, },
['<C-y>'] = { ['<C-y>'] = {
i = mapping.confirm({ select = false }), i = mapping.confirm({ select = false }),
@@ -60,13 +73,23 @@ end
---Mapping preset cmdline-mode configuration. ---Mapping preset cmdline-mode configuration.
mapping.preset.cmdline = function(override) mapping.preset.cmdline = function(override)
return merge_keymaps(override or {}, { return merge_keymaps(override or {}, {
['<C-z>'] = {
c = function()
local cmp = require('cmp')
if cmp.visible() then
cmp.select_next_item()
else
cmp.complete()
end
end,
},
['<Tab>'] = { ['<Tab>'] = {
c = function() c = function()
local cmp = require('cmp') local cmp = require('cmp')
if cmp.visible() then if cmp.visible() then
cmp.select_next_item() cmp.select_next_item()
else else
feedkeys.call(keymap.t('<C-z>'), 'n') cmp.complete()
end end
end, end,
}, },
@@ -76,7 +99,7 @@ mapping.preset.cmdline = function(override)
if cmp.visible() then if cmp.visible() then
cmp.select_prev_item() cmp.select_prev_item()
else else
feedkeys.call(keymap.t('<C-z>'), 'n') cmp.complete()
end end
end, end,
}, },
@@ -101,7 +124,10 @@ mapping.preset.cmdline = function(override)
end, end,
}, },
['<C-e>'] = { ['<C-e>'] = {
c = mapping.close(), c = mapping.abort(),
},
['<C-y>'] = {
c = mapping.confirm({ select = false }),
}, },
}) })
end end