patch 8.1.0992: a :normal command resets the reg_executing() result

Problem:    A :normal command while executing a register resets the
            reg_executing() result.
Solution:   Save and restore reg_executing. (closes #4066)
diff --git a/src/structs.h b/src/structs.h
index ab84eae..6aeed89 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -2625,19 +2625,19 @@
  */
 struct frame_S
 {
-    char	fr_layout;	/* FR_LEAF, FR_COL or FR_ROW */
+    char	fr_layout;	// FR_LEAF, FR_COL or FR_ROW
     int		fr_width;
-    int		fr_newwidth;	/* new width used in win_equal_rec() */
+    int		fr_newwidth;	// new width used in win_equal_rec()
     int		fr_height;
-    int		fr_newheight;	/* new height used in win_equal_rec() */
-    frame_T	*fr_parent;	/* containing frame or NULL */
-    frame_T	*fr_next;	/* frame right or below in same parent, NULL
-				   for first */
-    frame_T	*fr_prev;	/* frame left or above in same parent, NULL
-				   for last */
-    /* fr_child and fr_win are mutually exclusive */
-    frame_T	*fr_child;	/* first contained frame */
-    win_T	*fr_win;	/* window that fills this frame */
+    int		fr_newheight;	// new height used in win_equal_rec()
+    frame_T	*fr_parent;	// containing frame or NULL
+    frame_T	*fr_next;	// frame right or below in same parent, NULL
+				// for last
+    frame_T	*fr_prev;	// frame left or above in same parent, NULL
+				// for first
+    // fr_child and fr_win are mutually exclusive
+    frame_T	*fr_child;	// first contained frame
+    win_T	*fr_win;	// window that fills this frame
 };
 
 #define FR_LEAF	0	/* frame is a leaf */
@@ -3527,6 +3527,7 @@
     int		save_insertmode;
     int		save_finish_op;
     int		save_opcount;
+    int		save_reg_executing;
     tasave_T	tabuf;
 } save_state_T;