]> granicus.if.org Git - vim/commitdiff
patch 8.2.0420: Vim9: cannot interrupt a loop with CTRL-C v8.2.0420
authorBram Moolenaar <Bram@vim.org>
Fri, 20 Mar 2020 18:37:47 +0000 (19:37 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 20 Mar 2020 18:37:47 +0000 (19:37 +0100)
Problem:    Vim9: cannot interrupt a loop with CTRL-C.
Solution:   Check for CTRL-C once in a while.  Doesn't fully work yet.

src/misc1.c
src/proto/misc1.pro
src/testdir/test_vim9_script.vim
src/version.c

index 80aefd81267cbda0122f2dec0925c735a3744382..b4b74f7ef5a35802a0e6bebea4843cacceeb91dd 100644 (file)
@@ -2223,6 +2223,19 @@ fast_breakcheck(void)
     }
 }
 
+/*
+ * Like line_breakcheck() but check 100 times less often.
+ */
+    void
+veryfast_breakcheck(void)
+{
+    if (++breakcheck_count >= BREAKCHECK_SKIP * 100)
+    {
+       breakcheck_count = 0;
+       ui_breakcheck();
+    }
+}
+
 #if defined(VIM_BACKTICK) || defined(FEAT_EVAL) \
        || (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
        || defined(PROTO)
index 1327701e0ac2aa2267ceb863f82979922334f05f..d5fa1fad82e47543a9401182b39224441788d061 100644 (file)
@@ -40,6 +40,7 @@ char_u *concat_str(char_u *str1, char_u *str2);
 void preserve_exit(void);
 void line_breakcheck(void);
 void fast_breakcheck(void);
+void veryfast_breakcheck(void);
 char_u *get_cmd_output(char_u *cmd, char_u *infile, int flags, int *ret_len);
 void f_system(typval_T *argvars, typval_T *rettv);
 void f_systemlist(typval_T *argvars, typval_T *rettv);
index a02855d1e9398a9749ecc9c78821e30170a35dda..2f87ba7c7c96a1a305f801dae8f54a91516986e5 100644 (file)
@@ -942,15 +942,15 @@ def Test_while_loop()
   assert_equal('1_3_', result)
 enddef
 
-def Test_interrupt_loop()
-  let x = 0
-  while 1
-    x += 1
-    if x == 100
-      feedkeys("\<C-C>", 'L')
-    endif
-  endwhile
-enddef
+def Test_interrupt_loop()
+  let x = 0
+  while 1
+    x += 1
+    if x == 100
+      feedkeys("\<C-C>", 'L')
+    endif
+  endwhile
+enddef
 
 def Test_substitute_cmd()
   new
index 26939bb1366f161250b8757bafcc508439522bcc..1ad99cfd1336946fb31d2b86880e036d4d1bb179 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    420,
 /**/
     419,
 /**/