local spec = require('cmp.utils.spec') local keymap = require('cmp.utils.keymap') describe('keymap', function() before_each(spec.before) it('to_keymap', function() assert.are.equal(keymap.to_keymap('\n'), '') assert.are.equal(keymap.to_keymap(''), '') assert.are.equal(keymap.to_keymap('|'), '') end) it('escape', function() assert.are.equal(keymap.escape(''), 'C-d>') assert.are.equal(keymap.escape(''), 'C-d>C-f>') assert.are.equal(keymap.escape('C-d>'), 'C-d>') end) describe('evacuate', function() before_each(spec.before) it('expr & register', function() vim.api.nvim_buf_set_keymap(0, 'i', '(', [['="("']], { expr = true, noremap = false, }) local fallback = keymap.evacuate('i', '(') vim.api.nvim_feedkeys('i' .. keymap.t(fallback), 'x', true) assert.are.same({ '(' }, vim.api.nvim_buf_get_lines(0, 0, -1, true)) end) it('recursive & (tpope/vim-endwise)', function() vim.api.nvim_buf_set_keymap(0, 'i', '(paren-close)', [[)]], { expr = false, noremap = true, }) vim.api.nvim_buf_set_keymap(0, 'i', '(', [[((paren-close)]], { expr = false, noremap = false, }) local fallback = keymap.evacuate('i', '(') vim.api.nvim_feedkeys('i' .. keymap.t(fallback), 'x', true) assert.are.same({ '()' }, vim.api.nvim_buf_get_lines(0, 0, -1, true)) end) end) end)