changeset 25967:46205b125fbd v8.2.3517

patch 8.2.3517: TextChanged does not trigger after TextChangedI Commit: https://github.com/vim/vim/commit/db3b44640d69ab27270691a3cab8d83cc93a0861 Author: Christian Brabandt <cb@256bit.org> Date: Sat Oct 16 11:58:55 2021 +0100 patch 8.2.3517: TextChanged does not trigger after TextChangedI Problem: TextChanged does not trigger after TextChangedI. Solution: Store the tick separately for TextChangedI. (Christian Brabandt, closes #8968, closes #8932)
author Bram Moolenaar <Bram@vim.org>
date Sat, 16 Oct 2021 13:00:04 +0200
parents 5c9d305e5f18
children c506b33fff84
files src/buffer.c src/bufwrite.c src/edit.c src/structs.h src/testdir/test_autocmd.vim src/version.c
diffstat 6 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -327,6 +327,7 @@ open_buffer(
     // Set last_changedtick to avoid triggering a TextChanged autocommand right
     // after it was added.
     curbuf->b_last_changedtick = CHANGEDTICK(curbuf);
+    curbuf->b_last_changedtick_i = CHANGEDTICK(curbuf);
     curbuf->b_last_changedtick_pum = CHANGEDTICK(curbuf);
 
     // require "!" to overwrite the file, because it wasn't read completely
--- a/src/bufwrite.c
+++ b/src/bufwrite.c
@@ -2422,8 +2422,8 @@ restore_backup:
 	    && (overwriting || vim_strchr(p_cpo, CPO_PLUS) != NULL))
     {
 	unchanged(buf, TRUE, FALSE);
-	// b:changedtick is may be incremented in unchanged() but that
-	// should not trigger a TextChanged event.
+	// b:changedtick may be incremented in unchanged() but that should not
+	// trigger a TextChanged event.
 	if (buf->b_last_changedtick + 1 == CHANGEDTICK(buf))
 	    buf->b_last_changedtick = CHANGEDTICK(buf);
 	u_unchanged(buf);
--- a/src/edit.c
+++ b/src/edit.c
@@ -1477,9 +1477,9 @@ ins_redraw(int ready)	    // not busy wi
 	last_cursormoved = curwin->w_cursor;
     }
 
-    // Trigger TextChangedI if b_changedtick differs.
+    // Trigger TextChangedI if b_changedtick_i differs.
     if (ready && has_textchangedI()
-	    && curbuf->b_last_changedtick != CHANGEDTICK(curbuf)
+	    && curbuf->b_last_changedtick_i != CHANGEDTICK(curbuf)
 	    && !pum_visible())
     {
 	aco_save_T	aco;
@@ -1489,15 +1489,15 @@ ins_redraw(int ready)	    // not busy wi
 	aucmd_prepbuf(&aco, curbuf);
 	apply_autocmds(EVENT_TEXTCHANGEDI, NULL, NULL, FALSE, curbuf);
 	aucmd_restbuf(&aco);
-	curbuf->b_last_changedtick = CHANGEDTICK(curbuf);
+	curbuf->b_last_changedtick_i = CHANGEDTICK(curbuf);
 	if (tick != CHANGEDTICK(curbuf))  // see ins_apply_autocmds()
 	    u_save(curwin->w_cursor.lnum,
 					(linenr_T)(curwin->w_cursor.lnum + 1));
     }
 
-    // Trigger TextChangedP if b_changedtick differs. When the popupmenu closes
-    // TextChangedI will need to trigger for backwards compatibility, thus use
-    // different b_last_changedtick* variables.
+    // Trigger TextChangedP if b_changedtick_pum differs. When the popupmenu
+    // closes TextChangedI will need to trigger for backwards compatibility,
+    // thus use different b_last_changedtick* variables.
     if (ready && has_textchangedP()
 	    && curbuf->b_last_changedtick_pum != CHANGEDTICK(curbuf)
 	    && pum_visible())
--- a/src/structs.h
+++ b/src/structs.h
@@ -2701,10 +2701,10 @@ struct file_buffer
 				// incremented for each change, also for undo
 #define CHANGEDTICK(buf) ((buf)->b_ct_di.di_tv.vval.v_number)
 
-    varnumber_T	b_last_changedtick; // b:changedtick when TextChanged or
-				    // TextChangedI was last triggered.
-    varnumber_T	b_last_changedtick_pum; // b:changedtick when TextChangedP was
+    varnumber_T	b_last_changedtick;	// b:changedtick when TextChanged was
 					// last triggered.
+    varnumber_T	b_last_changedtick_pum; // b:changedtick for TextChangedP
+    varnumber_T	b_last_changedtick_i;   // b:changedtick for TextChangedI
 
     int		b_saving;	// Set to TRUE if we are in the middle of
 				// saving the buffer.
index db1efba12db6f369d75e557d954da73747003ed7..7faa4551d17afe35cbf889618879b2b35d4f0326
GIT binary patch
literal 86033
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
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3517,
+/**/
     3516,
 /**/
     3515,