From 1628c934d1c24e85c89778572b927e883bf88c94 Mon Sep 17 00:00:00 2001 From: hrsh7th Date: Mon, 8 Nov 2021 15:47:35 +0900 Subject: [PATCH] Fix tests --- lua/cmp/utils/api_spec.lua | 36 ++++++++++++++++++++------------- lua/cmp/utils/feedkeys.lua | 12 +++++------ lua/cmp/utils/feedkeys_spec.lua | 7 ++++--- lua/cmp/utils/keymap.lua | 2 +- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/lua/cmp/utils/api_spec.lua b/lua/cmp/utils/api_spec.lua index 9fb7a6a..1b05686 100644 --- a/lua/cmp/utils/api_spec.lua +++ b/lua/cmp/utils/api_spec.lua @@ -7,32 +7,40 @@ describe('api', function() describe('get_cursor', function() before_each(spec.before) it('insert-mode', function() - feedkeys.call(keymap.t('i\t1234567890'), 'n', function() - assert.are.same(api.get_cursor()[2], 10) + local cursor + feedkeys.call(keymap.t('i\t1234567890'), 'nx', function() + cursor = api.get_cursor() end) - feedkeys.call('', 'nx') + assert.are.equal(cursor[2], 11) end) it('cmdline-mode', function() - feedkeys.call(keymap.t(':\t1234567890'), 'n', function() - assert.are.same(api.get_cursor()[2], 10) - end) - feedkeys.call('', 'nx') + local cursor + keymap.set_map(0, 'c', '(cmp-spec-spy)', function() + cursor = api.get_cursor() + end, { expr = true, noremap = true }) + feedkeys.call(keymap.t(':\t1234567890'), 'n') + feedkeys.call(keymap.t('(cmp-spec-spy)'), 'x') + assert.are.equal(cursor[2], 11) end) end) describe('get_cursor_before_line', function() before_each(spec.before) it('insert-mode', function() - feedkeys.call(keymap.t(':\t1234567890'), 'n', function() - assert.are.same(api.get_cursor_before_line(), '\t12345678') + local cursor_before_line + feedkeys.call(keymap.t('i\t1234567890'), 'nx', function() + cursor_before_line = api.get_cursor_before_line() end) - feedkeys.call('', 'nx') + assert.are.same(cursor_before_line, '\t12345678') end) it('cmdline-mode', function() - feedkeys.call(keymap.t(':\t1234567890'), 'n', function() - assert.are.same(api.get_cursor_before_line(), '\t12345678') - end) - feedkeys.call('', 'nx') + local cursor_before_line + keymap.set_map(0, 'c', '(cmp-spec-spy)', function() + cursor_before_line = api.get_cursor_before_line() + end, { expr = true, noremap = true }) + feedkeys.call(keymap.t(':\t1234567890'), 'n') + feedkeys.call(keymap.t('(cmp-spec-spy)'), 'x') + assert.are.same(cursor_before_line, '\t12345678') end) end) end) diff --git a/lua/cmp/utils/feedkeys.lua b/lua/cmp/utils/feedkeys.lua index 1b101a1..cf0129f 100644 --- a/lua/cmp/utils/feedkeys.lua +++ b/lua/cmp/utils/feedkeys.lua @@ -12,22 +12,19 @@ feedkeys.call = setmetatable({ end local is_insert = string.match(mode, 'i') ~= nil + local is_immediate = string.match(mode, 'x') ~= nil local queue = {} if #keys > 0 then table.insert(queue, { keymap.t('set lazyredraw'), 'n' }) table.insert(queue, { keymap.t('set eventignore=all'), 'n' }) - table.insert(queue, { keys, string.gsub(mode, '[it]', ''), true }) + table.insert(queue, { keys, string.gsub(mode, '[itx]', ''), true }) table.insert(queue, { keymap.t('set %slazyredraw'):format(vim.o.lazyredraw and '' or 'no'), 'n' }) table.insert(queue, { keymap.t('set eventignore=%s'):format(vim.o.eventignore or ''), 'n' }) end if callback then local id = misc.id('cmp.utils.feedkeys.call') - self.callbacks[id] = function() - if callback then - callback() - end - end + self.callbacks[id] = callback table.insert(queue, { keymap.t('call v:lua.cmp.utils.feedkeys.call.run(%s)'):format(id), 'n', true }) end @@ -40,6 +37,9 @@ feedkeys.call = setmetatable({ vim.api.nvim_feedkeys(queue[i][1], queue[i][2], queue[i][3]) end end + if is_immediate then + vim.api.nvim_feedkeys('', 'x', true) + end end, }) misc.set(_G, { 'cmp', 'utils', 'feedkeys', 'call', 'run' }, function(id) diff --git a/lua/cmp/utils/feedkeys_spec.lua b/lua/cmp/utils/feedkeys_spec.lua index 3e16e43..45b539f 100644 --- a/lua/cmp/utils/feedkeys_spec.lua +++ b/lua/cmp/utils/feedkeys_spec.lua @@ -7,9 +7,10 @@ describe('feedkeys', function() before_each(spec.before) it('dot-repeat', function() - feedkeys.call(keymap.t('iaiueo'), 'n', function() - assert.are.equal(vim.fn.getreg('.'), keymap.t('aiueo')) + local reg + feedkeys.call(keymap.t('iaiueo'), 'nx', function() + reg = vim.fn.getreg('.') end) - feedkeys.call('', 'nx') + assert.are.equal(reg, keymap.t('aiueo')) end) end) diff --git a/lua/cmp/utils/keymap.lua b/lua/cmp/utils/keymap.lua index 0f8214f..981f523 100644 --- a/lua/cmp/utils/keymap.lua +++ b/lua/cmp/utils/keymap.lua @@ -258,7 +258,7 @@ keymap.set_map = setmetatable({ end }) misc.set(_G, { 'cmp', 'utils', 'keymap', 'set_map' }, function(id) - return keymap.set_map.callbacks[id]() + return keymap.set_map.callbacks[id]() or '' end) return keymap