Mercurial > vim
changeset 11117:e2258e86d8e1 v8.0.0446
patch 8.0.0446: the ";" command does not work after some characters
commit https://github.com/vim/vim/commit/454709baffd3205bf2b7d2519419675a122f2bd2
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 12 Mar 2017 16:45:04 +0100 |
parents | e879e8149411 |
children | 9204ebc311d4 |
files | src/Makefile src/search.c src/testdir/test_alot_utf8.vim src/testdir/test_charsearch_utf8.vim src/version.c |
diffstat | 5 files changed, 55 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 \
--- 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;
--- 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
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