From 7d171b1c48377aa5724d3bed0f497bf729b39b1c Mon Sep 17 00:00:00 2001 From: Anton Adamansky Date: Mon, 5 Jul 2021 23:30:07 +0700 Subject: fix(buffer_updates): make `lockmarks` not affect extmarks and buffer updates. fixes #12861 Now mark_adjust() will trigger appropriate buf_updates_send_splice() called by extmark_adjust() --- test/functional/lua/buffer_updates_spec.lua | 48 ++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'test/functional/lua/buffer_updates_spec.lua') diff --git a/test/functional/lua/buffer_updates_spec.lua b/test/functional/lua/buffer_updates_spec.lua index 42b3d86eb0..f2740feb10 100644 --- a/test/functional/lua/buffer_updates_spec.lua +++ b/test/functional/lua/buffer_updates_spec.lua @@ -349,7 +349,12 @@ describe('lua: nvim_buf_attach on_bytes', function() end local text = meths.buf_get_lines(0, 0, -1, true) - local bytes = table.concat(text, '\n') .. '\n' + local bytes = table.concat(text, '\n') + if #text ~= 1 or #bytes ~= 0 then + -- Not empty buffer. + -- Append '\n' only if buffer is not empty, see nvim_buf_get_lines(). + bytes = bytes .. '\n' + end eq(string.len(bytes), string.len(shadowbytes), '\non_bytes: total bytecount of buffer is wrong') for i = 1, string.len(shadowbytes) do @@ -1088,6 +1093,47 @@ describe('lua: nvim_buf_attach on_bytes', function() } end) + local function test_lockmarks(mode) + if not mode then mode = "" end + it("test_lockmarks " .. mode .. " %delete _", function() + local check_events = setup_eventcheck(verify, {"AAA", "BBB", "CCC"}) + + command(mode .. " %delete _") + check_events { + { "test1", "bytes", 1, 3, 0, 0, 0, 3, 0, 12, 0, 0, 0 }; + } + end) + + it("test_lockmarks " .. mode .. " append()", function() + local check_events = setup_eventcheck(verify) + + command(mode .. " call append(0, 'CCC')") + check_events { + { "test1", "bytes", 1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 4 }; + } + + command(mode .. " call append(1, 'BBBB')") + check_events { + { "test1", "bytes", 1, 3, 1, 0, 4, 0, 0, 0, 1, 0, 5 }; + } + + command(mode .. " call append(2, '')") + check_events { + { "test1", "bytes", 1, 4, 2, 0, 9, 0, 0, 0, 1, 0, 1 }; + } + + command(mode .. " $delete _") + check_events { + { "test1", "bytes", 1, 5, 3, 0, 10, 1, 0, 1, 0, 0, 0 }; + } + + eq("CCC|BBBB|", table.concat(meths.buf_get_lines(0, 0, -1, true), "|")) + end) + end + + test_lockmarks() + test_lockmarks "lockmarks" + teardown(function() os.remove "Xtest-reload" os.remove "Xtest-undofile" -- cgit