From 620c8fdfe91a382982fafaa376acd722fe0df051 Mon Sep 17 00:00:00 2001 From: erw7 Date: Wed, 23 Sep 2020 10:33:18 +0900 Subject: extmark: fix decoration ploblems with extmark 54ce101 changed the way undo entries are created when adding decorations. This creates all sorts of problems.This change fixes the problem by reverting to the previous behavior. --- src/nvim/api/buffer.c | 4 ++-- src/nvim/extmark.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index e77870dcf3..2eeaeae522 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -1534,7 +1534,7 @@ Integer nvim_buf_add_highlight(Buffer buffer, ns_id = extmark_set(buf, ns_id, 0, (int)line, (colnr_T)col_start, end_line, (colnr_T)col_end, - decoration_hl(hl_id), kExtmarkUndo); + decoration_hl(hl_id), kExtmarkNoUndo); return src_id; } @@ -1664,7 +1664,7 @@ Integer nvim_buf_set_virtual_text(Buffer buffer, Decoration *decor = xcalloc(1, sizeof(*decor)); decor->virt_text = virt_text; - extmark_set(buf, ns_id, 0, (int)line, 0, -1, -1, decor, kExtmarkUndo); + extmark_set(buf, ns_id, 0, (int)line, 0, -1, -1, decor, kExtmarkNoUndo); return src_id; } diff --git a/src/nvim/extmark.c b/src/nvim/extmark.c index 17141f12fd..0de396fd1f 100644 --- a/src/nvim/extmark.c +++ b/src/nvim/extmark.c @@ -783,7 +783,7 @@ void bufhl_add_hl_pos_offset(buf_T *buf, } (void)extmark_set(buf, (uint64_t)src_id, 0, (int)lnum-1, hl_start, (int)lnum-1+end_off, hl_end, - decor, kExtmarkUndo); + decor, kExtmarkNoUndo); } } -- cgit From b2f9c2b6c19ce9b66bf278b487d3fe59bf26304f Mon Sep 17 00:00:00 2001 From: erw7 Date: Wed, 23 Sep 2020 10:55:13 +0900 Subject: undo: fix possibility of aborting --- src/nvim/undo.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/undo.c b/src/nvim/undo.c index 97018f6c02..903e57732f 100644 --- a/src/nvim/undo.c +++ b/src/nvim/undo.c @@ -3029,8 +3029,6 @@ u_header_T *u_force_get_undo_header(buf_T *buf) curbuf = buf; // Args are tricky: this means replace empty range by empty range.. u_savecommon(0, 1, 1, true); - curbuf = save_curbuf; - uhp = buf->b_u_curhead; if (!uhp) { uhp = buf->b_u_newhead; @@ -3038,6 +3036,7 @@ u_header_T *u_force_get_undo_header(buf_T *buf) abort(); } } + curbuf = save_curbuf; } return uhp; } -- cgit From f1b39f91a5be7f3bf61b0e0d129dce49d51ff360 Mon Sep 17 00:00:00 2001 From: erw7 Date: Fri, 25 Sep 2020 09:26:44 +0900 Subject: extmark: Change nvim_buf_set_extmark to not create undo data --- src/nvim/api/buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index 2eeaeae522..174f6e94a9 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -1420,7 +1420,7 @@ Integer nvim_buf_set_extmark(Buffer buffer, Integer ns_id, } id = extmark_set(buf, (uint64_t)ns_id, id, - (int)line, (colnr_T)col, line2, col2, decor, kExtmarkUndo); + (int)line, (colnr_T)col, line2, col2, decor, kExtmarkNoUndo); return (Integer)id; -- cgit