mirror of
https://github.com/neovim/neovim.git
synced 2025-10-05 09:26:30 +00:00
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:
@@ -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) {
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user