diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2021-02-08 19:08:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-08 19:08:43 +0100 |
commit | b2b47e46187c59c9fcbfe31bdb2071af4c09a1a5 (patch) | |
tree | 2f611ae5a4e3b42779eb680b5bc8b43bb2cd1e3d | |
parent | 00423730b5eddc628a4b996b9e226fe23d7ce1f2 (diff) | |
parent | 05605bfc05054fa7bbeb5ed2412e5ef58721cfa4 (diff) | |
download | rneovim-b2b47e46187c59c9fcbfe31bdb2071af4c09a1a5.tar.gz rneovim-b2b47e46187c59c9fcbfe31bdb2071af4c09a1a5.tar.bz2 rneovim-b2b47e46187c59c9fcbfe31bdb2071af4c09a1a5.zip |
Merge pull request #13899 from chentau/set_text_fix
correctly mark changed regions for set_text
-rw-r--r-- | src/nvim/api/buffer.c | 3 | ||||
-rw-r--r-- | test/functional/api/buffer_spec.lua | 22 |
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() |