diff --git a/src/autocmd.c b/src/autocmd.c
index a78e78b..8b8f109 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -179,6 +179,7 @@
     {"TerminalOpen",	EVENT_TERMINALOPEN},
     {"TerminalWinOpen", EVENT_TERMINALWINOPEN},
     {"TermResponse",	EVENT_TERMRESPONSE},
+    {"TermResponseAll",	EVENT_TERMRESPONSEALL},
     {"TextChanged",	EVENT_TEXTCHANGED},
     {"TextChangedI",	EVENT_TEXTCHANGEDI},
     {"TextChangedP",	EVENT_TEXTCHANGEDP},
@@ -2100,7 +2101,8 @@
     {
 	if (event == EVENT_COLORSCHEME || event == EVENT_COLORSCHEMEPRE
 						 || event == EVENT_OPTIONSET
-						 || event == EVENT_MODECHANGED)
+						 || event == EVENT_MODECHANGED
+						 || event == EVENT_TERMRESPONSEALL)
 	    autocmd_fname = NULL;
 	else if (fname != NULL && !ends_excmd(*fname))
 	    autocmd_fname = fname;
@@ -2180,7 +2182,8 @@
 		|| event == EVENT_USER
 		|| event == EVENT_WINCLOSED
 		|| event == EVENT_WINRESIZED
-		|| event == EVENT_WINSCROLLED)
+		|| event == EVENT_WINSCROLLED
+		|| event == EVENT_TERMRESPONSEALL)
 	{
 	    fname = vim_strsave(fname);
 	    autocmd_fname_full = TRUE; // don't expand it later
@@ -2418,6 +2421,11 @@
 
 # ifdef FEAT_EVAL
 static char_u	*old_termresponse = NULL;
+static char_u	*old_termu7resp = NULL;
+static char_u	*old_termblinkresp = NULL;
+static char_u	*old_termrbgresp = NULL;
+static char_u	*old_termrfgresp = NULL;
+static char_u	*old_termstyleresp = NULL;
 # endif
 
 /*
@@ -2430,7 +2438,14 @@
 # ifdef FEAT_EVAL
     // Remember the value of v:termresponse.
     if (autocmd_blocked == 0)
+    {
 	old_termresponse = get_vim_var_str(VV_TERMRESPONSE);
+	old_termu7resp = get_vim_var_str(VV_TERMU7RESP);
+	old_termblinkresp = get_vim_var_str(VV_TERMBLINKRESP);
+	old_termrbgresp = get_vim_var_str(VV_TERMRBGRESP);
+	old_termrfgresp = get_vim_var_str(VV_TERMRFGRESP);
+	old_termstyleresp = get_vim_var_str(VV_TERMSTYLERESP);
+    }
 # endif
     ++autocmd_blocked;
 }
@@ -2441,12 +2456,37 @@
     --autocmd_blocked;
 
 # ifdef FEAT_EVAL
-    // When v:termresponse was set while autocommands were blocked, trigger
-    // the autocommands now.  Esp. useful when executing a shell command
-    // during startup (vimdiff).
-    if (autocmd_blocked == 0
-		      && get_vim_var_str(VV_TERMRESPONSE) != old_termresponse)
-	apply_autocmds(EVENT_TERMRESPONSE, NULL, NULL, FALSE, curbuf);
+    // When v:termresponse, etc, were set while autocommands were blocked,
+    // trigger the autocommands now.  Esp. useful when executing a shell
+    // command during startup (vimdiff).
+    if (autocmd_blocked == 0)
+    {
+	if (get_vim_var_str(VV_TERMRESPONSE) != old_termresponse)
+	{
+	    apply_autocmds(EVENT_TERMRESPONSE, NULL, NULL, FALSE, curbuf);
+	    apply_autocmds(EVENT_TERMRESPONSEALL, (char_u *)"version", NULL, FALSE, curbuf);
+	}
+	if (get_vim_var_str(VV_TERMU7RESP) != old_termu7resp)
+	{
+	    apply_autocmds(EVENT_TERMRESPONSEALL, (char_u *)"ambiguouswidth", NULL, FALSE, curbuf);
+	}
+	if (get_vim_var_str(VV_TERMBLINKRESP) != old_termblinkresp)
+	{
+	    apply_autocmds(EVENT_TERMRESPONSEALL, (char_u *)"cursorblink", NULL, FALSE, curbuf);
+	}
+	if (get_vim_var_str(VV_TERMRBGRESP) != old_termrbgresp)
+	{
+	    apply_autocmds(EVENT_TERMRESPONSEALL, (char_u *)"background", NULL, FALSE, curbuf);
+	}
+	if (get_vim_var_str(VV_TERMRFGRESP) != old_termrfgresp)
+	{
+	    apply_autocmds(EVENT_TERMRESPONSEALL, (char_u *)"foreground", NULL, FALSE, curbuf);
+	}
+	if (get_vim_var_str(VV_TERMSTYLERESP) != old_termstyleresp)
+	{
+	    apply_autocmds(EVENT_TERMRESPONSEALL, (char_u *)"cursorshape", NULL, FALSE, curbuf);
+	}
+    }
 # endif
 }
 
diff --git a/src/term.c b/src/term.c
index dd59fdf..734b759 100644
--- a/src/term.c
+++ b/src/term.c
@@ -4986,6 +4986,8 @@
 #ifdef FEAT_EVAL
 	    set_vim_var_string(VV_TERMU7RESP, tp, csi_len);
 #endif
+	    apply_autocmds(EVENT_TERMRESPONSEALL,
+					(char_u *)"ambiguouswidth", NULL, FALSE, curbuf);
 	}
     }
     else if (arg[0] == 3)
@@ -5595,6 +5597,8 @@
 #endif
 	apply_autocmds(EVENT_TERMRESPONSE,
 					NULL, NULL, FALSE, curbuf);
+	apply_autocmds(EVENT_TERMRESPONSEALL,
+					(char_u *)"version", NULL, FALSE, curbuf);
 	key_name[0] = (int)KS_EXTRA;
 	key_name[1] = (int)KE_IGNORE;
     }
@@ -5621,6 +5625,8 @@
 # ifdef FEAT_EVAL
 	set_vim_var_string(VV_TERMBLINKRESP, tp, *slen);
 # endif
+	apply_autocmds(EVENT_TERMRESPONSEALL,
+					(char_u *)"cursorblink", NULL, FALSE, curbuf);
     }
 #endif
 
@@ -5784,6 +5790,8 @@
 		set_vim_var_string(is_bg ? VV_TERMRBGRESP
 						  : VV_TERMRFGRESP, tp, *slen);
 #endif
+		apply_autocmds(EVENT_TERMRESPONSEALL,
+			    is_bg ? (char_u *)"background" : (char_u *)"foreground", NULL, FALSE, curbuf);
 		break;
 	    }
     if (i == len)
@@ -5882,6 +5890,8 @@
 #ifdef FEAT_EVAL
 		set_vim_var_string(VV_TERMSTYLERESP, tp, *slen);
 #endif
+		apply_autocmds(EVENT_TERMRESPONSEALL,
+					(char_u *)"cursorshape", NULL, FALSE, curbuf);
 		break;
 	    }
 	}
diff --git a/src/version.c b/src/version.c
index f01cac8..b44385a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    29,
+/**/
     28,
 /**/
     27,
diff --git a/src/vim.h b/src/vim.h
index e41dfef..0f52ba2 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1422,6 +1422,7 @@
     EVENT_TERMINALWINOPEN,	// after a terminal buffer was created and
 				// entering its window
     EVENT_TERMRESPONSE,		// after setting "v:termresponse"
+    EVENT_TERMRESPONSEALL,	// after setting terminal response vars
     EVENT_TEXTCHANGED,		// text was modified not in Insert mode
     EVENT_TEXTCHANGEDI,		// text was modified in Insert mode
     EVENT_TEXTCHANGEDP,		// TextChangedI with popup menu visible
