diff options
-rw-r--r-- | src/nvim/search.c | 4 | ||||
-rw-r--r-- | test/old/testdir/test_charsearch.vim | 2 | ||||
-rw-r--r-- | test/old/testdir/test_charsearch_utf8.vim | 7 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/nvim/search.c b/src/nvim/search.c index d1a31a357f..bcaacede9e 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -1519,7 +1519,7 @@ int searchc(cmdarg_T *cap, int t_cmd) } } } else { // repeat previous search - if (*lastc == NUL && lastc_bytelen == 1) { + if (*lastc == NUL && lastc_bytelen <= 1) { return FAIL; } if (dir) { // repeat in opposite direction @@ -1562,7 +1562,7 @@ int searchc(cmdarg_T *cap, int t_cmd) } col -= utf_head_off(p, p + col - 1) + 1; } - if (lastc_bytelen == 1) { + if (lastc_bytelen <= 1) { if (p[col] == c && stop) { break; } diff --git a/test/old/testdir/test_charsearch.vim b/test/old/testdir/test_charsearch.vim index 8d6b405743..084d4f0a22 100644 --- a/test/old/testdir/test_charsearch.vim +++ b/test/old/testdir/test_charsearch.vim @@ -38,6 +38,8 @@ func Test_charsearch() " clear the character search call setcharsearch({'char' : ''}) call assert_equal('', getcharsearch().char) + call assert_beeps('normal ;') + call assert_beeps('normal ,') call assert_fails("call setcharsearch([])", 'E1206:') enew! diff --git a/test/old/testdir/test_charsearch_utf8.vim b/test/old/testdir/test_charsearch_utf8.vim index 82a807ac5b..843edbb514 100644 --- a/test/old/testdir/test_charsearch_utf8.vim +++ b/test/old/testdir/test_charsearch_utf8.vim @@ -13,6 +13,13 @@ func Test_search_cmds() call assert_equal([0, 1, 43, 0], getpos('.')) normal! , call assert_equal([0, 1, 28, 0], getpos('.')) + call assert_equal('最', getcharsearch().char) + call setcharsearch({'char' : ''}) + call assert_equal('', getcharsearch().char) + call assert_beeps('normal ;') + call assert_equal([0, 1, 28, 0], getpos('.')) + call assert_beeps('normal ,') + call assert_equal([0, 1, 28, 0], getpos('.')) bw! endfunc |