diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/change.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c index 067b48faee..084a8a1897 100644 --- a/src/nvim/change.c +++ b/src/nvim/change.c @@ -319,7 +319,12 @@ static void changed_common(buf_T *buf, linenr_T lnum, colnr_T col, linenr_T lnum if (wp->w_lines[i].wl_lnum >= lnum) { // Do not change wl_lnum at index zero, it is used to // compare with w_topline. Invalidate it instead. - if (wp->w_lines[i].wl_lnum < lnume || i == 0) { + // If the buffer has virt_lines, invalidate the line + // after the changed lines as the virt_lines for a + // changed line may become invalid. + if (i == 0 || wp->w_lines[i].wl_lnum < lnume + || (wp->w_lines[i].wl_lnum == lnume + && wp->w_buffer->b_virt_line_blocks > 0)) { // line included in change wp->w_lines[i].wl_valid = false; } else if (xtra != 0) { |