Patch 7.4.1603
Problem:    Timer with an ":echo" command messes up display.
Solution:   Redraw depending on the mode. (Hirohito Higashi)  Avoid the more
            prompt being used recursively.
Files:      src/screen.c, src/message.c


*** ../vim-7.4.1602/src/screen.c        2016-03-15 23:10:26.408712137 +0100
--- src/screen.c        2016-03-19 16:37:33.451331728 +0100
***************
*** 418,425 ****
      void
  redraw_after_callback()
  {
!     update_screen(0);
!     setcursor();
      cursor_on();
      out_flush();
  #ifdef FEAT_GUI
--- 418,432 ----
      void
  redraw_after_callback()
  {
!     if (State == HITRETURN || State == ASKMORE)
!       ; /* do nothing */
!     else if (State & CMDLINE)
!       redrawcmdline();
!     else if ((State & NORMAL) || (State & INSERT))
!     {
!       update_screen(0);
!       setcursor();
!     }
      cursor_on();
      out_flush();
  #ifdef FEAT_GUI
*** ../vim-7.4.1602/src/message.c       2016-02-27 20:14:09.920546700 +0100
--- src/message.c       2016-03-19 17:00:33.752918078 +0100
***************
*** 870,875 ****
--- 870,877 ----
  #ifdef USE_ON_FLY_SCROLL
        dont_scroll = TRUE;             /* disallow scrolling here */
  #endif
+       cmdline_row = msg_row;
+ 
        /* Avoid the sequence that the user types ":" at the hit-return prompt
         * to start an Ex command, but the file-changed dialog gets in the
         * way. */
***************
*** 2426,2431 ****
--- 2428,2434 ----
      static int
  do_more_prompt(int typed_char)
  {
+     static int        entered = FALSE;
      int               used_typed_char = typed_char;
      int               oldState = State;
      int               c;
***************
*** 2437,2442 ****
--- 2440,2452 ----
      msgchunk_T        *mp;
      int               i;
  
+     /* We get called recursively when a timer callback outputs a message. In
+      * that case don't show another prompt. Also when at the hit-Enter prompt.
+      */
+     if (entered || State == HITRETURN)
+       return FALSE;
+     entered = TRUE;
+ 
      if (typed_char == 'G')
      {
        /* "g<": Find first line on the last page. */
***************
*** 2675,2680 ****
--- 2685,2691 ----
        msg_col = Columns - 1;
  #endif
  
+     entered = FALSE;
  #ifdef FEAT_CON_DIALOG
      return retval;
  #else
*** ../vim-7.4.1602/src/version.c       2016-03-19 16:23:06.164391238 +0100
--- src/version.c       2016-03-19 16:29:14.732541070 +0100
***************
*** 750,751 ****
--- 750,753 ----
  {   /* Add new patch number below this line */
+ /**/
+     1603,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
91. It's Saturday afternoon in the middle of May and you
    are on computer.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui