Mercurial > vim
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); - } } /*