From 454709baffd3205bf2b7d2519419675a122f2bd2 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 12 Mar 2017 16:37:14 +0100 Subject: patch 8.0.0446: the ";" command does not work after some characters Problem: The ";" command does not work after characters with a lower byte that is NUL. Solution: Properly check for not having a previous character. (Hirohito Higashi) --- src/Makefile | 1 + src/search.c | 6 ++++- src/testdir/test_alot_utf8.vim | 1 + src/testdir/test_charsearch_utf8.vim | 44 ++++++++++++++++++++++++++++++++++++ src/version.c | 4 ++++ 5 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/testdir/test_charsearch_utf8.vim (limited to 'src') diff --git a/src/Makefile b/src/Makefile index 02388364a2..1af1e17aae 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2099,6 +2099,7 @@ test_arglist \ test_cdo \ test_channel \ test_charsearch \ + test_charsearch_utf8 \ test_changedtick \ test_cindent \ test_cmdline \ diff --git a/src/search.c b/src/search.c index d23dde2c88..f4a5c6dcd1 100644 --- a/src/search.c +++ b/src/search.c @@ -1643,7 +1643,11 @@ searchc(cmdarg_T *cap, int t_cmd) } else /* repeat previous search */ { - if (*lastc == NUL) + if (*lastc == NUL +#ifdef FEAT_MBYTE + && lastc_bytelen == 1 +#endif + ) return FAIL; if (dir) /* repeat in opposite direction */ dir = -lastcdir; diff --git a/src/testdir/test_alot_utf8.vim b/src/testdir/test_alot_utf8.vim index 3022da3348..13724cbd4a 100644 --- a/src/testdir/test_alot_utf8.vim +++ b/src/testdir/test_alot_utf8.vim @@ -6,6 +6,7 @@ " files, so that they can be run by themselves. set belloff=all +source test_charsearch_utf8.vim source test_expr_utf8.vim source test_matchadd_conceal_utf8.vim source test_regexp_utf8.vim diff --git a/src/testdir/test_charsearch_utf8.vim b/src/testdir/test_charsearch_utf8.vim new file mode 100644 index 0000000000..b700a8c756 --- /dev/null +++ b/src/testdir/test_charsearch_utf8.vim @@ -0,0 +1,44 @@ +" Tests for related f{char} and t{char} using utf-8. +if !has('multi_byte') + finish +endif + +" Test for t,f,F,T movement commands +function! Test_search_cmds() + new! + call setline(1, "・最初から最後まで最強のVimは最高") + 1 + normal! f最 + call assert_equal([0, 1, 4, 0], getpos('.')) + normal! ; + call assert_equal([0, 1, 16, 0], getpos('.')) + normal! 2; + call assert_equal([0, 1, 43, 0], getpos('.')) + normal! , + call assert_equal([0, 1, 28, 0], getpos('.')) + bw! +endfunction + +" vim: shiftwidth=2 sts=2 expandtab +" Tests for related f{char} and t{char} using utf-8. +if !has('multi_byte') + finish +endif + +" Test for t,f,F,T movement commands +function! Test_search_cmds() + new! + call setline(1, "・最初から最後まで最強のVimは最高") + 1 + normal! f最 + call assert_equal([0, 1, 4, 0], getpos('.')) + normal! ; + call assert_equal([0, 1, 16, 0], getpos('.')) + normal! 2; + call assert_equal([0, 1, 43, 0], getpos('.')) + normal! , + call assert_equal([0, 1, 28, 0], getpos('.')) + bw! +endfunction + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 7a0d500b47..cb416dcf90 100644 --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,10 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 446, +/**/ + 446, /**/ 445, /**/ -- cgit v1.2.3