changeset 11870:c29e498aa77d v8.0.0815

patch 8.0.0815: terminal window not correctly updated commit https://github.com/vim/vim/commit/43c007ff225bf5522e07f23f41bfaced573b0e98 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 30 17:45:37 2017 +0200 patch 8.0.0815: terminal window not correctly updated Problem: Terminal window not correctly updated when 'statusline' invokes ":sleep". (NIkolay Pavlov) Solution: Clear got_int. Repeat redrawing when needed.
author Christian Brabandt <cb@256bit.org>
date Sun, 30 Jul 2017 18:00:04 +0200
parents b4bbc9f3ef4d
children d70c8377904e
files src/terminal.c src/version.c
diffstat 2 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -54,6 +54,7 @@
  * - To set BS correctly, check get_stty(); Pass the fd of the pty.
  * - do not store terminal window in viminfo.  Or prefix term:// ?
  * - add a character in :ls output
+ * - add 't' to mode()
  * - when closing window and job has not ended, make terminal hidden?
  * - when closing window and job has ended, make buffer hidden?
  * - don't allow exiting Vim when a terminal is still running a job
@@ -780,6 +781,7 @@ term_vgetc()
     ++allow_keys;
     got_int = FALSE;
     c = vgetc();
+    got_int = FALSE;
     --no_mapping;
     --allow_keys;
     return c;
@@ -889,7 +891,9 @@ terminal_loop(void)
     for (;;)
     {
 	/* TODO: skip screen update when handling a sequence of keys. */
-	update_screen(0);
+	/* Repeat redrawing in case a message is received while redrawing. */
+	while (curwin->w_redr_type != 0)
+	    update_screen(0);
 	update_cursor(curbuf->b_term, FALSE);
 
 	c = term_vgetc();
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    815,
+/**/
     814,
 /**/
     813,