fix(extmarks): splice extmarks on nv_Undo #15920

This commit is contained in:
Tony Chen 2021-10-06 12:35:44 -04:00 committed by GitHub
parent d0c0878b3e
commit e06936125a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 0 deletions

View File

@ -3085,6 +3085,8 @@ void u_undoline(void)
oldp = u_save_line(curbuf->b_u_line_lnum); oldp = u_save_line(curbuf->b_u_line_lnum);
ml_replace(curbuf->b_u_line_lnum, curbuf->b_u_line_ptr, true); ml_replace(curbuf->b_u_line_lnum, curbuf->b_u_line_ptr, true);
changed_bytes(curbuf->b_u_line_lnum, 0); changed_bytes(curbuf->b_u_line_lnum, 0);
extmark_splice_cols(curbuf, (int)curbuf->b_u_line_lnum-1, 0, (colnr_T)STRLEN(oldp),
(colnr_T)STRLEN(curbuf->b_u_line_ptr), kExtmarkUndo);
xfree(curbuf->b_u_line_ptr); xfree(curbuf->b_u_line_ptr);
curbuf->b_u_line_ptr = oldp; curbuf->b_u_line_ptr = oldp;

View File

@ -1050,6 +1050,19 @@ describe('lua: nvim_buf_attach on_bytes', function()
} }
end) end)
it("sends updates on U", function()
feed("ggiAAA<cr>BBB")
feed("<esc>gg$a CCC")
local check_events = setup_eventcheck(verify, nil)
feed("ggU")
check_events {
{ "test1", "bytes", 1, 6, 0, 7, 7, 0, 0, 0, 0, 3, 3 };
}
end)
teardown(function() teardown(function()
os.remove "Xtest-reload" os.remove "Xtest-reload"
os.remove "Xtest-undofile" os.remove "Xtest-undofile"