From a350fb2976d9b1e8b5753f557645a905f6da0d74 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sun, 15 Oct 2023 17:14:18 +0800 Subject: vim-patch:9.0.2031: TextChangedI may be triggered by non-insert mode change (#25656) Problem: `TextChangedI` can trigger on entering Insert mode if there was previously a change not in Insert mode. Solution: Make it trigger only when text is actually changed in Insert mode. closes: vim/vim#13265 closes: vim/vim#13338 https://github.com/vim/vim/commit/d7ae263af8f6a2da55ce3702d18c53ab1418bca7 Co-authored-by: Evgeni Chasnovski --- src/nvim/edit.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 4593748c25..a7a98b9557 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -143,6 +143,9 @@ static void insert_enter(InsertState *s) update_Insstart_orig = true; ins_compl_clear(); // clear stuff for CTRL-X mode + // Reset Changedtick_i, so that TextChangedI will only be triggered for stuff + // from insert mode + curbuf->b_last_changedtick_i = buf_get_changedtick(curbuf); // Trigger InsertEnter autocommands. Do not do this for "r" or "grx". if (s->cmdchar != 'r' && s->cmdchar != 'v') { @@ -356,6 +359,7 @@ static void insert_enter(InsertState *s) ins_apply_autocmds(EVENT_INSERTLEAVE); } did_cursorhold = false; + curbuf->b_last_changedtick = buf_get_changedtick(curbuf); } static int insert_check(VimState *state) -- cgit