summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-07-30 17:45:37 +0200
committerBram Moolenaar <Bram@vim.org>2017-07-30 17:45:37 +0200
commit43c007ff225bf5522e07f23f41bfaced573b0e98 (patch)
tree047a90df11d24e4dda07467c94e45011d85f8293
parent0e7885e67d7d798812e23dd8d32e75106f06cb76 (diff)
patch 8.0.0815: terminal window not correctly updatedv8.0.0815
Problem: Terminal window not correctly updated when 'statusline' invokes ":sleep". (NIkolay Pavlov) Solution: Clear got_int. Repeat redrawing when needed.
-rw-r--r--src/terminal.c6
-rw-r--r--src/version.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/terminal.c b/src/terminal.c
index b0ba8c1902..303566576e 100644
--- 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();
diff --git a/src/version.c b/src/version.c
index 54ee61fe9c..33e7e3d77b 100644
--- 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,