patch 8.2.2860: adding a text property causes the whole window to be redawn
Problem: Adding a text property causes the whole window to be redawn.
Solution: Use changed_lines_buf() to only redraw the affected lines.
diff --git a/src/change.c b/src/change.c
index 50dc105..248e6d8 100644
--- a/src/change.c
+++ b/src/change.c
@@ -758,7 +758,7 @@
/*
* Marks the area to be redrawn after a change.
*/
- static void
+ void
changed_lines_buf(
buf_T *buf,
linenr_T lnum, // first line with change
diff --git a/src/proto/change.pro b/src/proto/change.pro
index 69ba2a6..b1aa9d5 100644
--- a/src/proto/change.pro
+++ b/src/proto/change.pro
@@ -14,6 +14,7 @@
void appended_lines_mark(linenr_T lnum, long count);
void deleted_lines(linenr_T lnum, long count);
void deleted_lines_mark(linenr_T lnum, long count);
+void changed_lines_buf(buf_T *buf, linenr_T lnum, linenr_T lnume, long xtra);
void changed_lines(linenr_T lnum, colnr_T col, linenr_T lnume, long xtra);
void unchanged(buf_T *buf, int ff, int always_inc_changedtick);
void save_file_ff(buf_T *buf);
diff --git a/src/textprop.c b/src/textprop.c
index b626193..f11e1a3 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -345,7 +345,8 @@
}
buf->b_has_textprop = TRUE; // this is never reset
- redraw_buf_later(buf, NOT_VALID);
+ changed_lines_buf(buf, start_lnum, end_lnum + 1, 0);
+ redraw_buf_later(buf, VALID);
}
/*
diff --git a/src/version.c b/src/version.c
index 6a37ad5..cd42c0a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2860,
+/**/
2859,
/**/
2858,