Improve keymap handling (#720)
* Improve keymap handling * Simplify * Fix tests * Fix callback no expr mapping * Rename functions * Use manual key conversion logic * fmt
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
local feedkeys = require('cmp.utils.feedkeys')
|
||||
local spec = require('cmp.utils.spec')
|
||||
|
||||
local keymap = require('cmp.utils.keymap')
|
||||
@@ -5,13 +6,19 @@ local keymap = require('cmp.utils.keymap')
|
||||
describe('keymap', function()
|
||||
before_each(spec.before)
|
||||
|
||||
it('t', function()
|
||||
assert.are.equal(keymap.t('<Tab>'), vim.api.nvim_replace_termcodes('<Tab>', true, true, true))
|
||||
assert.are.equal(keymap.t('<C-g>u'), vim.api.nvim_replace_termcodes('<C-g>u', true, true, true))
|
||||
assert.are.equal(keymap.t('<Cmd>aiueo<CR>'), vim.api.nvim_replace_termcodes('<Cmd>aiueo<CR>', true, true, true))
|
||||
end)
|
||||
|
||||
it('to_keymap', function()
|
||||
assert.are.equal(keymap.to_keymap('\n'), '<CR>')
|
||||
assert.are.equal(keymap.to_keymap('<CR>'), '<CR>')
|
||||
assert.are.equal(keymap.to_keymap('|'), '<Bar>')
|
||||
end)
|
||||
|
||||
describe('evacuate', function()
|
||||
describe('feedmap', function()
|
||||
before_each(spec.before)
|
||||
|
||||
it('expr & register', function()
|
||||
@@ -19,8 +26,9 @@ describe('keymap', function()
|
||||
expr = true,
|
||||
noremap = false,
|
||||
})
|
||||
local fallback = keymap.evacuate(0, 'i', '(')
|
||||
vim.api.nvim_feedkeys('i' .. keymap.t(fallback.keys), fallback.mode .. 'x', true)
|
||||
feedkeys.call('i', 'nx', function()
|
||||
keymap.feed_map(keymap.get_map('i', '('))
|
||||
end)
|
||||
assert.are.same({ '(' }, vim.api.nvim_buf_get_lines(0, 0, -1, true))
|
||||
end)
|
||||
|
||||
@@ -33,8 +41,9 @@ describe('keymap', function()
|
||||
expr = false,
|
||||
noremap = false,
|
||||
})
|
||||
local fallback = keymap.evacuate(0, 'i', '(')
|
||||
vim.api.nvim_feedkeys('i' .. keymap.t(fallback.keys), fallback.mode .. 'x', true)
|
||||
feedkeys.call('i', 'nx', function()
|
||||
keymap.feed_map(keymap.get_map('i', '('))
|
||||
end)
|
||||
assert.are.same({ '()' }, vim.api.nvim_buf_get_lines(0, 0, -1, true))
|
||||
end)
|
||||
|
||||
@@ -46,8 +55,10 @@ describe('keymap', function()
|
||||
expr = true,
|
||||
noremap = false,
|
||||
})
|
||||
local fallback = keymap.evacuate(0, 'i', '<Tab>')
|
||||
vim.api.nvim_feedkeys('i' .. keymap.t(fallback.keys), fallback.mode .. 'x', true)
|
||||
feedkeys.call('i', 'n', function()
|
||||
keymap.feed_map(keymap.get_map('i', '<Tab>'))
|
||||
end)
|
||||
feedkeys.call('', 'x')
|
||||
assert.are.same({ 'foobar' }, vim.api.nvim_buf_get_lines(0, 0, -1, true))
|
||||
end)
|
||||
it('false', function()
|
||||
@@ -55,8 +66,9 @@ describe('keymap', function()
|
||||
expr = true,
|
||||
noremap = false,
|
||||
})
|
||||
local fallback = keymap.evacuate(0, 'i', '<Tab>')
|
||||
vim.api.nvim_feedkeys('i' .. keymap.t(fallback.keys), fallback.mode .. 'x', true)
|
||||
feedkeys.call('i', 'nx', function()
|
||||
keymap.feed_map(keymap.get_map('i', '<Tab>'))
|
||||
end)
|
||||
assert.are.same({ '\taiueo' }, vim.api.nvim_buf_get_lines(0, 0, -1, true))
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user