aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-03-17 21:19:34 +0800
committerGitHub <noreply@github.com>2023-03-17 21:19:34 +0800
commiteb3fcf652bbcab01cd6d55a0e2c120c09cbe69d3 (patch)
tree0179063d8bbcb2dd1ce928ee734853e50402b5ab /src
parent86c164d2a14382adfb388a66699828df6c623102 (diff)
downloadrneovim-eb3fcf652bbcab01cd6d55a0e2c120c09cbe69d3.tar.gz
rneovim-eb3fcf652bbcab01cd6d55a0e2c120c09cbe69d3.tar.bz2
rneovim-eb3fcf652bbcab01cd6d55a0e2c120c09cbe69d3.zip
vim-patch:9.0.0194: cursor displayed in wrong position after removing text prop (#22706)
Problem: Cursor displayed in wrong position after removing text prop. (Ben Jackson) Solution: Invalidate the cursor position. (closes vim/vim#10898) https://github.com/vim/vim/commit/326c5d36e7cb8526330565109c17b4a13ff790ae Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'src')
-rw-r--r--src/nvim/change.c1
-rw-r--r--src/nvim/decoration.c2
-rw-r--r--src/nvim/move.c13
3 files changed, 16 insertions, 0 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c
index 04eadfa269..1500aded0c 100644
--- a/src/nvim/change.c
+++ b/src/nvim/change.c
@@ -446,6 +446,7 @@ void deleted_lines_mark(linenr_T lnum, long count)
}
/// Marks the area to be redrawn after a change.
+/// Consider also calling changed_line_display_buf().
///
/// @param buf the buffer where lines were changed
/// @param lnum first line with change
diff --git a/src/nvim/decoration.c b/src/nvim/decoration.c
index 217544175d..f45e13b42a 100644
--- a/src/nvim/decoration.c
+++ b/src/nvim/decoration.c
@@ -11,6 +11,7 @@
#include "nvim/highlight.h"
#include "nvim/highlight_group.h"
#include "nvim/memory.h"
+#include "nvim/move.h"
#include "nvim/pos.h"
#include "nvim/sign_defs.h"
@@ -86,6 +87,7 @@ void decor_redraw(buf_T *buf, int row1, int row2, Decoration *decor)
if (decor && kv_size(decor->virt_lines)) {
redraw_buf_line_later(buf, row1 + 1 + (decor->virt_lines_above?0:1), true);
+ changed_line_display_buf(buf);
}
}
diff --git a/src/nvim/move.c b/src/nvim/move.c
index 1f55362354..a9f7ffaa76 100644
--- a/src/nvim/move.c
+++ b/src/nvim/move.c
@@ -471,6 +471,19 @@ void changed_line_abv_curs_win(win_T *wp)
|VALID_CHEIGHT|VALID_TOPLINE);
}
+/// Display of line has changed for "buf", invalidate cursor position and
+/// w_botline.
+void changed_line_display_buf(buf_T *buf)
+{
+ FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
+ if (wp->w_buffer == buf) {
+ wp->w_valid &= ~(VALID_WROW|VALID_WCOL|VALID_VIRTCOL
+ |VALID_CROW|VALID_CHEIGHT
+ |VALID_TOPLINE|VALID_BOTLINE|VALID_BOTLINE_AP);
+ }
+ }
+}
+
// Make sure the value of curwin->w_botline is valid.
void validate_botline(win_T *wp)
{