fix(extmarks): redraw pre-undo position (#27437)

Problem:
Virtual text not redrawn properly after undo moves its extmark.

Solution:
Redraw the moved extmark's pre-undo position.
This commit is contained in:
zeertzjq
2024-02-12 21:24:28 +08:00
committed by GitHub
parent 597ecf7516
commit 2d9e063a63
3 changed files with 45 additions and 3 deletions

View File

@@ -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) {