From f2f6dce0cc708ebea904ed471849e1d62a19cf96 Mon Sep 17 00:00:00 2001 From: hrsh7th <hrsh7th@gmail.com> Date: Tue, 11 Jan 2022 02:13:43 +0900 Subject: [PATCH] Use manual key conversion logic --- lua/cmp/utils/keymap.lua | 4 +++- lua/cmp/utils/keymap_spec.lua | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lua/cmp/utils/keymap.lua b/lua/cmp/utils/keymap.lua index d1088702a..daf9b0db8 100644 --- a/lua/cmp/utils/keymap.lua +++ b/lua/cmp/utils/keymap.lua @@ -7,7 +7,9 @@ local keymap = {} ---@param keys string ---@return string keymap.t = function(keys) - return vim.api.nvim_replace_termcodes(keys, true, true, true) + return (string.gsub(keys, '(<[A-Za-z0-9_%-%[%]%^@]->)', function(match) + return vim.api.nvim_eval(string.format([["\%s"]], match)) + end)) end ---Normalize key sequence. diff --git a/lua/cmp/utils/keymap_spec.lua b/lua/cmp/utils/keymap_spec.lua index 2c6acbfac..fc91c3e76 100644 --- a/lua/cmp/utils/keymap_spec.lua +++ b/lua/cmp/utils/keymap_spec.lua @@ -6,6 +6,12 @@ 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>')