vim-patch:8.2.4563: "z=" in Visual mode may go beyond the end of the line

Problem:    "z=" in Visual mode may go beyond the end of the line.
Solution:   Adjust "badlen".

5c68617d39

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq 2023-01-15 06:32:35 +08:00
parent fe17cd50fb
commit 89f45dc155
2 changed files with 21 additions and 1 deletions

View File

@ -483,6 +483,11 @@ void spell_suggest(int count)
}
badlen++;
end_visual_mode();
// make sure we don't include the NUL at the end of the line
line = get_cursor_line_ptr();
if (badlen > (int)strlen(line) - (int)curwin->w_cursor.col) {
badlen = (int)strlen(line) - (int)curwin->w_cursor.col;
}
// Find the start of the badly spelled word.
} else if (spell_move_to(curwin, FORWARD, true, true, NULL) == 0
|| curwin->w_cursor.col > prev_cursor.col) {

View File

@ -531,8 +531,23 @@ func Test_spellsuggest_timeout()
call assert_fails('set spellsuggest=timeout:--9', 'E474:')
endfunc
func Test_spellsuggest_visual_end_of_line()
let enc_save = &encoding
" set encoding=iso8859
" This was reading beyond the end of the line.
norm R00000000000
sil norm 0
sil! norm i00000)
sil! norm i00000)
call feedkeys("\<CR>")
norm z=
let &encoding = enc_save
endfunc
func Test_spellinfo()
throw 'skipped: Nvim does not support enc=latin1'
throw 'Skipped: Nvim does not support enc=latin1'
new
let runtime = substitute($VIMRUNTIME, '\\', '/', 'g')