diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/extmark.c | 6 | ||||
-rw-r--r-- | src/nvim/undo.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/nvim/extmark.c b/src/nvim/extmark.c index 0f9e7749f1..e753ad199a 100644 --- a/src/nvim/extmark.c +++ b/src/nvim/extmark.c @@ -116,6 +116,12 @@ static void extmark_setraw(buf_T *buf, uint64_t mark, int row, colnr_T col, bool return; } + // Only the position before undo needs to be redrawn here, + // as the position after undo should be marked as changed. + if (!invalid && mt_decor_any(key) && key.pos.row != row) { + decor_redraw(buf, key.pos.row, key.pos.row, key.pos.col, mt_decor(key)); + } + int row1 = 0; int row2 = 0; if (invalid) { diff --git a/src/nvim/undo.c b/src/nvim/undo.c index 547ac605e7..6081268e53 100644 --- a/src/nvim/undo.c +++ b/src/nvim/undo.c @@ -2390,9 +2390,7 @@ static void u_undoredo(bool undo, bool do_buf_event) // 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. - // Also just in case the line had a sign which needs to be removed. - if ((spell_check_window(curwin) || buf_meta_total(curbuf, kMTMetaSignText)) - && bot <= curbuf->b_ml.ml_line_count) { + if (spell_check_window(curwin) && bot <= curbuf->b_ml.ml_line_count) { redrawWinline(curwin, bot); } |