aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-02-02 09:46:25 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-02-02 09:46:25 +0800
commit3e689737557ac968e1e62a92a22d33c887bc51bd (patch)
treed9362c7dbedc126f8e6a7bab7974742589355a1d /src
parentf4300985d3212887ef27d703ba8cb4230813e095 (diff)
downloadrneovim-3e689737557ac968e1e62a92a22d33c887bc51bd.tar.gz
rneovim-3e689737557ac968e1e62a92a22d33c887bc51bd.tar.bz2
rneovim-3e689737557ac968e1e62a92a22d33c887bc51bd.zip
vim-patch:8.2.3966: when using feedkeys() abbreviations may be blocked
Problem: When using feedkeys() abbreviations may be blocked. Solution: Reset tb_no_abbr_cnt when running out of characters. (closes vim/vim#9448) https://github.com/vim/vim/commit/b37a65e4bf08c4eec4fa5b81a5efc3945fca44de
Diffstat (limited to 'src')
-rw-r--r--src/nvim/getchar.c4
-rw-r--r--src/nvim/testdir/test_feedkeys.vim12
2 files changed, 16 insertions, 0 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c
index d3641032ab..5d8a8ddbfe 100644
--- a/src/nvim/getchar.c
+++ b/src/nvim/getchar.c
@@ -2304,6 +2304,10 @@ static int vgetorpeek(bool advance)
c = ESC;
}
tc = c;
+
+ // no chars to block abbreviations for
+ typebuf.tb_no_abbr_cnt = 0;
+
break;
}
diff --git a/src/nvim/testdir/test_feedkeys.vim b/src/nvim/testdir/test_feedkeys.vim
index 70500f2bb5..f343b0174c 100644
--- a/src/nvim/testdir/test_feedkeys.vim
+++ b/src/nvim/testdir/test_feedkeys.vim
@@ -12,3 +12,15 @@ func Test_feedkeys_x_with_empty_string()
call assert_equal('foo', getline('.'))
quit!
endfunc
+
+func Test_feedkeys_with_abbreviation()
+ new
+ inoreabbrev trigger value
+ call feedkeys("atrigger ", 'x')
+ call feedkeys("atrigger ", 'x')
+ call assert_equal('value value ', getline(1))
+ bwipe!
+ iunabbrev trigger
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab