From 08c7e206cc3f45b4185a3ca33ce2c4616f699cca Mon Sep 17 00:00:00 2001 From: notomo Date: Sun, 28 Jul 2019 07:44:28 +0900 Subject: [PATCH 1/2] vim-patch:8.1.1759: no mode char for terminal mapping from maparg() Problem: No mode char for terminal mapping from maparg(). Solution: Check for TERMINAL mode. (closes vim/vim#4735) https://github.com/vim/vim/commit/14371ed69778107654e39268d0d90982e53ad6e0 --- src/nvim/getchar.c | 2 ++ src/nvim/testdir/test_maparg.vim | 4 ++++ test/functional/api/keymap_spec.lua | 5 ----- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 28d37f3581..52f69343af 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -3304,6 +3304,8 @@ char *map_mode_to_chars(int mode) ga_append(&mapmode, 'n'); /* :nmap */ if (mode & OP_PENDING) ga_append(&mapmode, 'o'); /* :omap */ + if (mode & TERM_FOCUS) + ga_append(&mapmode, 't'); /* :tmap */ if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE) ga_append(&mapmode, 'v'); /* :vmap */ else { diff --git a/src/nvim/testdir/test_maparg.vim b/src/nvim/testdir/test_maparg.vim index 0fb878b04a..ee16a22398 100644 --- a/src/nvim/testdir/test_maparg.vim +++ b/src/nvim/testdir/test_maparg.vim @@ -27,6 +27,10 @@ function Test_maparg() call assert_equal({'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', \ 'nowait': 1, 'expr': 0, 'sid': sid, 'rhs': 'bar', 'buffer': 1}, \ maparg('foo', '', 0, 1)) + tmap baz foo + call assert_equal({'silent': 0, 'noremap': 0, 'lhs': 'baz', 'mode': 't', + \ 'nowait': 0, 'expr': 0, 'sid': sid, 'rhs': 'foo', 'buffer': 0}, + \ maparg('baz', 't', 0, 1)) map abc xx call assert_equal("xrx", maparg('abc')) diff --git a/test/functional/api/keymap_spec.lua b/test/functional/api/keymap_spec.lua index b3f6bb7895..73c55a342c 100644 --- a/test/functional/api/keymap_spec.lua +++ b/test/functional/api/keymap_spec.lua @@ -346,11 +346,6 @@ describe('nvim_set_keymap, nvim_del_keymap', function() to_return.sid = not opts.sid and 0 or opts.sid to_return.buffer = not opts.buffer and 0 or opts.buffer - -- mode 't' doesn't print when calling maparg - if mode == 't' then - to_return.mode = '' - end - return to_return end From 32a6b5601b89b59427baddbf05c31a4e34d4999c Mon Sep 17 00:00:00 2001 From: notomo Date: Sun, 28 Jul 2019 09:22:46 +0900 Subject: [PATCH 2/2] Fix clint error --- src/nvim/getchar.c | 55 +++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 52f69343af..e1aea25409 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -3288,31 +3288,36 @@ char *map_mode_to_chars(int mode) ga_init(&mapmode, 1, 7); - if ((mode & (INSERT + CMDLINE)) == INSERT + CMDLINE) - ga_append(&mapmode, '!'); /* :map! */ - else if (mode & INSERT) - ga_append(&mapmode, 'i'); /* :imap */ - else if (mode & LANGMAP) - ga_append(&mapmode, 'l'); /* :lmap */ - else if (mode & CMDLINE) - ga_append(&mapmode, 'c'); /* :cmap */ - else if ((mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING)) - == NORMAL + VISUAL + SELECTMODE + OP_PENDING) - ga_append(&mapmode, ' '); /* :map */ - else { - if (mode & NORMAL) - ga_append(&mapmode, 'n'); /* :nmap */ - if (mode & OP_PENDING) - ga_append(&mapmode, 'o'); /* :omap */ - if (mode & TERM_FOCUS) - ga_append(&mapmode, 't'); /* :tmap */ - if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE) - ga_append(&mapmode, 'v'); /* :vmap */ - else { - if (mode & VISUAL) - ga_append(&mapmode, 'x'); /* :xmap */ - if (mode & SELECTMODE) - ga_append(&mapmode, 's'); /* :smap */ + if ((mode & (INSERT + CMDLINE)) == INSERT + CMDLINE) { + ga_append(&mapmode, '!'); // :map! + } else if (mode & INSERT) { + ga_append(&mapmode, 'i'); // :imap + } else if (mode & LANGMAP) { + ga_append(&mapmode, 'l'); // :lmap + } else if (mode & CMDLINE) { + ga_append(&mapmode, 'c'); // :cmap + } else if ((mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING)) + == NORMAL + VISUAL + SELECTMODE + OP_PENDING) { + ga_append(&mapmode, ' '); // :map + } else { + if (mode & NORMAL) { + ga_append(&mapmode, 'n'); // :nmap + } + if (mode & OP_PENDING) { + ga_append(&mapmode, 'o'); // :omap + } + if (mode & TERM_FOCUS) { + ga_append(&mapmode, 't'); // :tmap + } + if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE) { + ga_append(&mapmode, 'v'); // :vmap + } else { + if (mode & VISUAL) { + ga_append(&mapmode, 'x'); // :xmap + } + if (mode & SELECTMODE) { + ga_append(&mapmode, 's'); // :smap + } } }