aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/api/buffer.c3
-rw-r--r--test/functional/api/buffer_spec.lua22
2 files changed, 24 insertions, 1 deletions
diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c
index 67f4f92bf6..e2c0ebe5e0 100644
--- a/src/nvim/api/buffer.c
+++ b/src/nvim/api/buffer.c
@@ -722,7 +722,8 @@ void nvim_buf_set_text(uint64_t channel_id, Buffer buffer,
kExtmarkUndo);
- changed_lines((linenr_T)start_row, 0, (linenr_T)end_row, (long)extra, true);
+ changed_lines((linenr_T)start_row, 0, (linenr_T)end_row + 1,
+ (long)extra, true);
// adjust cursor like an extmark ( i e it was inside last_part_len)
if (curwin->w_cursor.lnum == end_row && curwin->w_cursor.col > end_col) {
diff --git a/test/functional/api/buffer_spec.lua b/test/functional/api/buffer_spec.lua
index fb8ed6a9d7..81fad206da 100644
--- a/test/functional/api/buffer_spec.lua
+++ b/test/functional/api/buffer_spec.lua
@@ -513,6 +513,28 @@ describe('api/buf', function()
eq({0, 8}, curbufmeths.get_extmark_by_id(ns, id2, {}))
eq({0, 8}, curbufmeths.get_extmark_by_id(ns, id3, {}))
end)
+
+ it("correctly marks changed region for redraw #13890", function()
+ local screen = Screen.new(20, 5)
+ screen:attach()
+
+ insert([[
+ AAA
+ BBB
+ ]])
+
+ curbufmeths.set_text(0, 0, 1, 3, {'XXX', 'YYY'})
+
+ screen:expect([[
+ XXX |
+ YYY |
+ ^ |
+ ~ |
+ |
+
+ ]])
+
+ end)
end)
describe('nvim_buf_get_offset', function()