mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.0.0364: ]s does not move cursor with two spell errors in one line
Problem: ]s does not move cursor with two spell errors in one line. (Manuel Ortega) Solution: Don't stop search immediately when wrapped, search the line first. (Ken Takata) Add a test.
This commit is contained in:
@@ -2193,6 +2193,7 @@ test_arglist \
|
|||||||
test_smartindent \
|
test_smartindent \
|
||||||
test_sort \
|
test_sort \
|
||||||
test_source_utf8 \
|
test_source_utf8 \
|
||||||
|
test_spell \
|
||||||
test_startup \
|
test_startup \
|
||||||
test_startup_utf8 \
|
test_startup_utf8 \
|
||||||
test_stat \
|
test_stat \
|
||||||
|
12
src/spell.c
12
src/spell.c
@@ -1734,14 +1734,14 @@ spell_move_to(
|
|||||||
if (curline)
|
if (curline)
|
||||||
break; /* only check cursor line */
|
break; /* only check cursor line */
|
||||||
|
|
||||||
|
/* If we are back at the starting line and searched it again there
|
||||||
|
* is no match, give up. */
|
||||||
|
if (lnum == wp->w_cursor.lnum && wrapped)
|
||||||
|
break;
|
||||||
|
|
||||||
/* Advance to next line. */
|
/* Advance to next line. */
|
||||||
if (dir == BACKWARD)
|
if (dir == BACKWARD)
|
||||||
{
|
{
|
||||||
/* If we are back at the starting line and searched it again there
|
|
||||||
* is no match, give up. */
|
|
||||||
if (lnum == wp->w_cursor.lnum && wrapped)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (lnum > 1)
|
if (lnum > 1)
|
||||||
--lnum;
|
--lnum;
|
||||||
else if (!p_ws)
|
else if (!p_ws)
|
||||||
@@ -1775,7 +1775,7 @@ spell_move_to(
|
|||||||
|
|
||||||
/* If we are back at the starting line and there is no match then
|
/* If we are back at the starting line and there is no match then
|
||||||
* give up. */
|
* give up. */
|
||||||
if (lnum == wp->w_cursor.lnum && (!found_one || wrapped))
|
if (lnum == wp->w_cursor.lnum && !found_one)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Skip the characters at the start of the next line that were
|
/* Skip the characters at the start of the next line that were
|
||||||
|
@@ -192,6 +192,7 @@ NEW_TESTS = test_arglist.res \
|
|||||||
test_search.res \
|
test_search.res \
|
||||||
test_signs.res \
|
test_signs.res \
|
||||||
test_smartindent.res \
|
test_smartindent.res \
|
||||||
|
test_spell.res \
|
||||||
test_startup.res \
|
test_startup.res \
|
||||||
test_startup_utf8.res \
|
test_startup_utf8.res \
|
||||||
test_stat.res \
|
test_stat.res \
|
||||||
|
20
src/testdir/test_spell.vim
Normal file
20
src/testdir/test_spell.vim
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
" Test spell checking
|
||||||
|
" TODO: move test58 tests here
|
||||||
|
|
||||||
|
if !has('spell')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
func Test_wrap_search()
|
||||||
|
new
|
||||||
|
call setline(1, ['The', '', 'A plong line with two zpelling mistakes', '', 'End'])
|
||||||
|
set spell wrapscan
|
||||||
|
normal ]s
|
||||||
|
call assert_equal('plong', expand('<cword>'))
|
||||||
|
normal ]s
|
||||||
|
call assert_equal('zpelling', expand('<cword>'))
|
||||||
|
normal ]s
|
||||||
|
call assert_equal('plong', expand('<cword>'))
|
||||||
|
bwipe!
|
||||||
|
set nospell
|
||||||
|
endfunc
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
364,
|
||||||
/**/
|
/**/
|
||||||
363,
|
363,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user