changeset 10950:2297aae8e127 v8.0.0364

patch 8.0.0364: ]s does not move cursor with two spell errors in one line commit https://github.com/vim/vim/commit/d3f78dc9ebd729475a7f24a50a91112e300d5ac9 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 25 14:21:10 2017 +0100 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.
author Christian Brabandt <cb@256bit.org>
date Sat, 25 Feb 2017 14:30:04 +0100
parents 305dd0c5f52f
children 32704a1de17c
files src/Makefile src/spell.c src/testdir/Make_all.mak src/testdir/test_spell.vim src/version.c
diffstat 5 files changed, 30 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile
+++ b/src/Makefile
@@ -2193,6 +2193,7 @@ test_arglist \
 	test_smartindent \
 	test_sort \
 	test_source_utf8 \
+	test_spell \
 	test_startup \
 	test_startup_utf8 \
 	test_stat \
--- a/src/spell.c
+++ b/src/spell.c
@@ -1734,14 +1734,14 @@ spell_move_to(
 	if (curline)
 	    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. */
 	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)
 		--lnum;
 	    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
 	     * give up. */
-	    if (lnum == wp->w_cursor.lnum && (!found_one || wrapped))
+	    if (lnum == wp->w_cursor.lnum && !found_one)
 		break;
 
 	    /* Skip the characters at the start of the next line that were
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -192,6 +192,7 @@ NEW_TESTS = test_arglist.res \
 	    test_search.res \
 	    test_signs.res \
 	    test_smartindent.res \
+	    test_spell.res \
 	    test_startup.res \
 	    test_startup_utf8.res \
 	    test_stat.res \
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_spell.vim
@@ -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
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    364,
+/**/
     363,
 /**/
     362,