]> granicus.if.org Git - vim/commitdiff
patch 8.0.0714: when a timer causes a command line redraw " goes missing v8.0.0714
authorBram Moolenaar <Bram@vim.org>
Sat, 15 Jul 2017 13:21:38 +0000 (15:21 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 15 Jul 2017 13:21:38 +0000 (15:21 +0200)
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.

src/ex_getln.c
src/version.c

index 369d6c31e279feca2449f44c4aba92afeb53aafc..afdf0b4c95b1c0b1de0c596b079cd7903643f6c2 100644 (file)
@@ -52,6 +52,8 @@ static int    cmd_showtail;           /* Only show path tail in lists ? */
 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 <char> */
                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 <char> */
+               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,
index 3640592c11a9694389b6276c79c8a8b5942f4e0e..c8322cd1fc70829ed77dd27b34f254b8306b4c52 100644 (file)
@@ -764,6 +764,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    714,
 /**/
     713,
 /**/