From 743f7c8f72ef72e5348d0513a263cb4fe068f1f4 Mon Sep 17 00:00:00 2001 From: Rom Grk Date: Mon, 9 Nov 2020 04:05:25 -0500 Subject: fix: address issues for BufModifiedSet --- src/nvim/buffer_defs.h | 5 +++-- src/nvim/change.c | 4 ++-- src/nvim/edit.c | 6 +++--- src/nvim/normal.c | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h index a72fe69425..93fe37b585 100644 --- a/src/nvim/buffer_defs.h +++ b/src/nvim/buffer_defs.h @@ -541,8 +541,9 @@ struct file_buffer { int b_changed; // 'modified': Set to true if something in the // file has been changed and not written out. - bool b_changed_notified; // if the BufModified autocmd has been triggered - // since the last time b_changed was modified + bool b_changed_invalid; // Set if BufModified autocmd has not been + // triggered since the last time b_changed was + // modified. /// Change-identifier incremented for each change, including undo. /// diff --git a/src/nvim/change.c b/src/nvim/change.c index 3c1af1f46a..271d350967 100644 --- a/src/nvim/change.c +++ b/src/nvim/change.c @@ -129,7 +129,7 @@ void changed(void) void changed_internal(void) { curbuf->b_changed = true; - curbuf->b_changed_notified = false; + curbuf->b_changed_invalid = true; ml_setflags(curbuf); check_status(curbuf); redraw_tabline = true; @@ -503,7 +503,7 @@ void unchanged(buf_T *buf, int ff, bool always_inc_changedtick) { if (buf->b_changed || (ff && file_ff_differs(buf, false))) { buf->b_changed = false; - buf->b_changed_notified = false; + buf->b_changed_invalid = true; ml_setflags(buf); if (ff) { save_file_ff(buf); diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 9ce587a8c6..9c8d64a6b2 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -1488,12 +1488,12 @@ static void ins_redraw( do_autocmd_winscrolled(curwin); } - // Trigger BufModified if b_changed_notified is false. + // Trigger BufModified if b_changed_invalid is set. if (ready && has_event(EVENT_BUFMODIFIEDSET) - && curbuf->b_changed_notified == false + && curbuf->b_changed_invalid == true && !pum_visible()) { apply_autocmds(EVENT_BUFMODIFIEDSET, NULL, NULL, false, curbuf); - curbuf->b_changed_notified = true; + curbuf->b_changed_invalid = false; } if (curwin->w_p_cole > 0 && conceal_cursor_line(curwin) diff --git a/src/nvim/normal.c b/src/nvim/normal.c index f78f5a1d1f..2805a7d74e 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -1233,9 +1233,9 @@ static void normal_check_buffer_modified(NormalState *s) { // Trigger BufModified if b_modified changed if (!finish_op && has_event(EVENT_BUFMODIFIEDSET) - && curbuf->b_changed_notified == false) { + && curbuf->b_changed_invalid == true) { apply_autocmds(EVENT_BUFMODIFIEDSET, NULL, NULL, false, curbuf); - curbuf->b_changed_notified = true; + curbuf->b_changed_invalid = false; } } -- cgit