# HG changeset patch # User Christian Brabandt # Date 1489333504 -3600 # Node ID e2258e86d8e102261faee093d05ab603d0433289 # Parent e879e8149411ef1f600312300c9643acbc0b67df patch 8.0.0446: the ";" command does not work after some characters commit https://github.com/vim/vim/commit/454709baffd3205bf2b7d2519419675a122f2bd2 Author: Bram Moolenaar Date: Sun Mar 12 16:37:14 2017 +0100 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) diff --git a/src/Makefile b/src/Makefile --- 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 --- 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 --- 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 --- /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 --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,10 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 446, +/**/ + 446, +/**/ 445, /**/ 444,