From b558f750bfc4718cbeb4a89d5f68ef11566e126d Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 16 Jan 2018 00:08:31 +0100 Subject: [PATCH] vim-patch:8.0.1419: cursor column is not updated after ]s Problem: Cursor column is not updated after ]s. (Gary Johnson) Solution: Set the curswant flag. https://github.com/vim/vim/commit/b73fa629d6d3d705c1f8e8d5f8109fc9abd7bb6f --- src/nvim/eval.c | 1 + src/nvim/normal.c | 2 ++ src/nvim/testdir/test_spell.vim | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 2e8bf18f2d..5c414cdaeb 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -15538,6 +15538,7 @@ static void f_spellbadword(typval_T *argvars, typval_T *rettv, FunPtr fptr) len = spell_move_to(curwin, FORWARD, true, true, &attr); if (len != 0) { word = (char *)get_cursor_pos_ptr(); + curwin->w_set_curswant = true; } } else if (curwin->w_p_spell && *curbuf->b_s.b_p_spl != NUL) { const char *str = tv_get_string_chk(&argvars[0]); diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 1103fe15d2..ab20be7246 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -5687,6 +5687,8 @@ static void nv_brackets(cmdarg_T *cap) cap->nchar == 's', false, NULL) == 0) { clearopbeep(cap->oap); break; + } else { + curwin->w_set_curswant = true; } if (cap->oap->op_type == OP_NOP && (fdo_flags & FDO_SEARCH) && KeyTyped) foldOpenCursor(); diff --git a/src/nvim/testdir/test_spell.vim b/src/nvim/testdir/test_spell.vim index 8165128fa3..21f2363731 100644 --- a/src/nvim/testdir/test_spell.vim +++ b/src/nvim/testdir/test_spell.vim @@ -28,6 +28,37 @@ func Test_wrap_search() set nospell endfunc +func Test_curswant() + new + call setline(1, ['Another plong line', 'abcdefghijklmnopq']) + set spell wrapscan + normal 0]s + call assert_equal('plong', expand('')) + normal j + call assert_equal(9, getcurpos()[2]) + normal 0[s + call assert_equal('plong', expand('')) + normal j + call assert_equal(9, getcurpos()[2]) + + normal 0]S + call assert_equal('plong', expand('')) + normal j + call assert_equal(9, getcurpos()[2]) + normal 0[S + call assert_equal('plong', expand('')) + normal j + call assert_equal(9, getcurpos()[2]) + + normal 1G0 + call assert_equal('plong', spellbadword()[0]) + normal j + call assert_equal(9, getcurpos()[2]) + + bwipe! + set nospell +endfunc + func Test_z_equal_on_invalid_utf8_word() split set spell