Mercurial > vim
changeset 11455:08e60ce4cbf3 v8.0.0611
patch 8.0.0611: the screen is not redrawn after sending t_u7
commit https://github.com/vim/vim/commit/976787d1f31451ca7a88e774a03e6c24ddc67876
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 4 15:45:50 2017 +0200
patch 8.0.0611: the screen is not redrawn after sending t_u7
Problem: When t_u7 is sent a few characters in the second screen line are
overwritten and not redrawn later. (Rastislav Barlik)
Solution: Move redrawing the screen to after overwriting the characters.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 04 Jun 2017 16:00:03 +0200 |
parents | 5e21f2c77442 |
children | 48ead0fc0368 |
files | src/main.c src/term.c src/version.c |
diffstat | 3 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main.c +++ b/src/main.c @@ -783,6 +783,11 @@ vim_main2(void) if (params.n_commands > 0) exe_commands(¶ms); +#if defined(FEAT_TERMRESPONSE) && defined(FEAT_MBYTE) + /* Must be done before redrawing, puts a few characters on the screen. */ + may_req_ambiguous_char_width(); +#endif + RedrawingDisabled = 0; redraw_all_later(NOT_VALID); no_wait_return = FALSE; @@ -796,9 +801,6 @@ vim_main2(void) * argument doesn't make it appear in the shell Vim was started from. */ may_req_termresponse(); -# if defined(FEAT_MBYTE) - may_req_ambiguous_char_width(); -# endif may_req_bg_color(); #endif
--- a/src/term.c +++ b/src/term.c @@ -3333,9 +3333,13 @@ may_req_ambiguous_char_width(void) out_str(T_U7); u7_status = U7_SENT; out_flush(); + + /* This overwrites a few characters on the screen, a redraw is needed + * after this. Clear them out for now. */ term_windgoto(1, 0); out_str((char_u *)" "); term_windgoto(0, 0); + /* check for the characters now, otherwise they might be eaten by * get_keystroke() */ out_flush();