changeset 12088:ca1e425a5fbf v8.0.0924

patch 8.0.0924: terminal window not updated after using term_sendkeys() commit https://github.com/vim/vim/commit/5cc1f2c47796f2f544ace9283d293af3b036a63f Author: Bram Moolenaar <Bram@vim.org> Date: Sun Aug 13 15:16:53 2017 +0200 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().
author Christian Brabandt <cb@256bit.org>
date Sun, 13 Aug 2017 15:30:03 +0200
parents 76c7a8c1ce69
children d61607f10e9f
files src/terminal.c src/version.c
diffstat 2 files changed, 14 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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 @@ update_cursor(term_T *term, int redraw)
     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 @@ write_to_term(buf_T *buffer, char_u *msg
     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 @@ f_term_sendkeys(typval_T *argvars, typva
 	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);
-    }
 }
 
 /*
--- 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 */
 /**/
+    924,
+/**/
     923,
 /**/
     922,