diff src/getchar.c @ 22361:00f2eebe74d9 v8.2.1729

patch 8.2.1729: endless loop when ":normal" feeds popup window filter Commit: https://github.com/vim/vim/commit/189832bf661168df7ebd428e4088737718775fbd Author: Bram Moolenaar <Bram@vim.org> Date: Wed Sep 23 12:29:11 2020 +0200 patch 8.2.1729: endless loop when ":normal" feeds popup window filter Problem: Endless loop when ":normal" feeds popup window filter. Solution: Add the ex_normal_busy_done flag.
author Bram Moolenaar <Bram@vim.org>
date Wed, 23 Sep 2020 12:30:04 +0200
parents 3ea773da9c4f
children 73be82f278c0
line wrap: on
line diff
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1888,7 +1888,7 @@ vgetc(void)
     }
 #endif
 #ifdef FEAT_PROP_POPUP
-    if (popup_do_filter(c))
+    if (!ex_normal_busy_done && popup_do_filter(c))
     {
 	if (c == Ctrl_C)
 	    got_int = FALSE;  // avoid looping
@@ -3168,6 +3168,10 @@ vgetorpeek(int advance)
 			timedout = TRUE;
 			continue;
 		    }
+#ifdef FEAT_PROP_POPUP
+		    ex_normal_busy_done = TRUE;
+#endif
+
 		    // When 'insertmode' is set, ESC just beeps in Insert
 		    // mode.  Use CTRL-L to make edit() return.
 		    // For the command line only CTRL-C always breaks it.