patch 8.0.0924: terminal window not updated after using term_sendkeys()
Problem: Terminal window not updated after using term_sendkeys().
Solution: Call redraw_after_callback().
diff --git a/src/terminal.c b/src/terminal.c
index 317615c..b98398b 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -47,7 +47,6 @@
* - do not store terminal window in viminfo. Or prefix term:// ?
* - add a character in :ls output
* - add 't' to mode()
- * - set 'filetype' to "terminal"?
* - use win_del_lines() to make scroll-up efficient.
* - Make StatusLineTerm adjust UserN highlighting like StatusLineNC does, see
* use of hightlight_stlnc[].
@@ -568,9 +567,9 @@
if (term->tl_normal_mode)
return;
setcursor();
- if (redraw && term->tl_buffer == curbuf)
+ if (redraw)
{
- if (term->tl_cursor_visible)
+ if (term->tl_buffer == curbuf && term->tl_cursor_visible)
cursor_on();
out_flush();
#ifdef FEAT_GUI
@@ -598,11 +597,19 @@
ch_log(channel, "writing %d bytes to terminal", (int)len);
term_write_job_output(term, msg, len);
+ /* In Terminal-Normal mode we are displaying the buffer, not the terminal
+ * contents, thus no screen update is needed. */
if (!term->tl_normal_mode)
{
/* TODO: only update once in a while. */
- update_screen(0);
- update_cursor(term, TRUE);
+ ch_log(term->tl_job->jv_channel, "updating screen");
+ if (buffer == curbuf)
+ {
+ update_screen(0);
+ update_cursor(term, TRUE);
+ }
+ else
+ redraw_after_callback();
}
}
@@ -2558,14 +2565,6 @@
send_keys_to_term(term, PTR2CHAR(msg), FALSE);
msg += MB_PTR2LEN(msg);
}
-
- if (!term->tl_normal_mode)
- {
- /* TODO: only update once in a while. */
- update_screen(0);
- if (buf == curbuf)
- update_cursor(term, TRUE);
- }
}
/*
diff --git a/src/version.c b/src/version.c
index 3833f58..ec75b71 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 924,
+/**/
923,
/**/
922,