# HG changeset patch # User Christian Brabandt # Date 1500125404 -7200 # Node ID e3bfe624ba0aecbb2a0330d5d50e9ddc26b17ac9 # Parent 792badfededb11f9c2606ec0b5fe5769642b4c81 patch 8.0.0714: when a timer causes a command line redraw " goes missing commit https://github.com/vim/vim/commit/a92522fbf3a49d06e08caf010f7d7b0f58d2e131 Author: Bram Moolenaar Date: Sat Jul 15 15:21:38 2017 +0200 patch 8.0.0714: when a timer causes a command line redraw " goes missing Problem: When a timer causes a command line redraw the " that is displayed for CTRL-R goes missing. Solution: Remember an extra character to display. diff --git a/src/ex_getln.c b/src/ex_getln.c --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -52,6 +52,8 @@ static int cmd_showtail; /* Only show p static int new_cmdpos; /* position set by set_cmdline_pos() */ #endif +static int extra_char = NUL; /* extra character to display when redrawing + * the command line */ #ifdef FEAT_CMDHIST typedef struct hist_entry { @@ -1173,12 +1175,14 @@ getcmdline( dont_scroll = TRUE; /* disallow scrolling here */ #endif putcmdline('"', TRUE); + extra_char = '"'; ++no_mapping; i = c = plain_vgetc(); /* CTRL-R */ if (i == Ctrl_O) i = Ctrl_R; /* CTRL-R CTRL-O == CTRL-R CTRL-R */ if (i == Ctrl_R) c = plain_vgetc(); /* CTRL-R CTRL-R */ + extra_char = NUL; --no_mapping; #ifdef FEAT_EVAL /* @@ -1755,8 +1759,10 @@ getcmdline( ignore_drag_release = TRUE; #endif putcmdline('^', TRUE); + extra_char = '^'; c = get_literal(); /* get next (two) character(s) */ do_abbr = FALSE; /* don't do abbreviation now */ + extra_char = NUL; #ifdef FEAT_MBYTE /* may need to remove ^ when composing char was typed */ if (enc_utf8 && utf_iscomposing(c) && !cmd_silent) @@ -1774,10 +1780,12 @@ getcmdline( ignore_drag_release = TRUE; #endif putcmdline('?', TRUE); + extra_char = '?'; #ifdef USE_ON_FLY_SCROLL dont_scroll = TRUE; /* disallow scrolling here */ #endif c = get_digraph(TRUE); + extra_char = NUL; if (c != NUL) break; @@ -3409,6 +3417,8 @@ redrawcmd(void) msg_no_more = FALSE; set_cmdspos_cursor(); + if (extra_char != NUL) + putcmdline(extra_char, TRUE); /* * An emsg() before may have set msg_scroll. This is used in normal mode, diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -765,6 +765,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 714, +/**/ 713, /**/ 712,