mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 9.0.0608: with spelling, deleting a full stop does not update next line
Problem: With spell checking, deleting a full stop at the end of a line does not update SpellCap at the start of the next line. Solution: Update the next line when characters have been deleted. Also when using undo.
This commit is contained in:
parent
f802767df7
commit
26f09ea54b
@ -709,6 +709,13 @@ changed_bytes(linenr_T lnum, colnr_T col)
|
|||||||
changedOneline(curbuf, lnum);
|
changedOneline(curbuf, lnum);
|
||||||
changed_common(lnum, col, lnum + 1, 0L);
|
changed_common(lnum, col, lnum + 1, 0L);
|
||||||
|
|
||||||
|
#ifdef FEAT_SPELL
|
||||||
|
// When text has been changed at the end of the line, possibly the start of
|
||||||
|
// the next line may have SpellCap that should be removed or it needs to be
|
||||||
|
// displayed. Schedule the next line for redrawing just in case.
|
||||||
|
if (spell_check_window(curwin) && lnum < curbuf->b_ml.ml_line_count)
|
||||||
|
redrawWinline(curwin, lnum + 1);
|
||||||
|
#endif
|
||||||
#ifdef FEAT_DIFF
|
#ifdef FEAT_DIFF
|
||||||
// Diff highlighting in other diff windows may need to be updated too.
|
// Diff highlighting in other diff windows may need to be updated too.
|
||||||
if (curwin->w_p_diff)
|
if (curwin->w_p_diff)
|
||||||
|
@ -3607,13 +3607,6 @@ ins_esc(
|
|||||||
|
|
||||||
#ifdef FEAT_SPELL
|
#ifdef FEAT_SPELL
|
||||||
check_spell_redraw();
|
check_spell_redraw();
|
||||||
|
|
||||||
// When text has been changed in this line, possibly the start of the next
|
|
||||||
// line may have SpellCap that should be removed or it needs to be
|
|
||||||
// displayed. Schedule the next line for redrawing just in case.
|
|
||||||
if (spell_check_window(curwin)
|
|
||||||
&& curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
|
|
||||||
redrawWinline(curwin, curwin->w_cursor.lnum + 1);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
temp = curwin->w_cursor.col;
|
temp = curwin->w_cursor.col;
|
||||||
|
8
src/testdir/dumps/Test_spell_4.dump
Normal file
8
src/testdir/dumps/Test_spell_4.dump
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
| +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5
|
||||||
|
|a+0fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e|.| @49
|
||||||
|
|N|o|t| @71
|
||||||
|
|a|n|d| |h|e|r>e| @66
|
||||||
|
|a|n|d| |h|e|r|e|.| @65
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @73
|
||||||
|
| +0#0000000&@56|4|,|8| @10|A|l@1|
|
8
src/testdir/dumps/Test_spell_5.dump
Normal file
8
src/testdir/dumps/Test_spell_5.dump
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
| +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5
|
||||||
|
|a+0fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e|.| @49
|
||||||
|
|N|o|t| @71
|
||||||
|
|a|n|d| |h|e|r|e>.| @65
|
||||||
|
|a+0fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @73
|
||||||
|
| +0#0000000&@56|4|,|9| @10|A|l@1|
|
@ -987,6 +987,14 @@ func Test_spell_screendump_spellcap()
|
|||||||
call term_sendkeys(buf, "3GANot\<Esc>")
|
call term_sendkeys(buf, "3GANot\<Esc>")
|
||||||
call VerifyScreenDump(buf, 'Test_spell_3', {})
|
call VerifyScreenDump(buf, 'Test_spell_3', {})
|
||||||
|
|
||||||
|
" Deleting a full stop removes missing Cap in next line
|
||||||
|
call term_sendkeys(buf, "5Gddk$x")
|
||||||
|
call VerifyScreenDump(buf, 'Test_spell_4', {})
|
||||||
|
|
||||||
|
" Undo also updates the next line (go to command line to remove message)
|
||||||
|
call term_sendkeys(buf, "u:\<Esc>")
|
||||||
|
call VerifyScreenDump(buf, 'Test_spell_5', {})
|
||||||
|
|
||||||
" clean up
|
" clean up
|
||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
call delete('XtestSpellCap')
|
call delete('XtestSpellCap')
|
||||||
|
@ -2835,7 +2835,16 @@ u_undoredo(int undo)
|
|||||||
curbuf->b_op_end.lnum += newsize - oldsize;
|
curbuf->b_op_end.lnum += newsize - oldsize;
|
||||||
}
|
}
|
||||||
if (oldsize > 0 || newsize > 0)
|
if (oldsize > 0 || newsize > 0)
|
||||||
|
{
|
||||||
changed_lines(top + 1, 0, bot, newsize - oldsize);
|
changed_lines(top + 1, 0, bot, newsize - oldsize);
|
||||||
|
#ifdef FEAT_SPELL
|
||||||
|
// When text has been changed, possibly the start of the next line
|
||||||
|
// may have SpellCap that should be removed or it needs to be
|
||||||
|
// displayed. Schedule the next line for redrawing just in case.
|
||||||
|
if (spell_check_window(curwin) && bot <= curbuf->b_ml.ml_line_count)
|
||||||
|
redrawWinline(curwin, bot);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Set the '[ mark.
|
// Set the '[ mark.
|
||||||
if (top + 1 < curbuf->b_op_start.lnum)
|
if (top + 1 < curbuf->b_op_start.lnum)
|
||||||
|
@ -699,6 +699,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 */
|
||||||
|
/**/
|
||||||
|
608,
|
||||||
/**/
|
/**/
|
||||||
607,
|
607,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user