Patch 7.4.1750
Problem:    When a buffer gets updated while in command line mode, the screen
            may be messed up.
Solution:   Postpone the redraw when the screen is scrolled.
Files:      src/channel.c


*** ../vim-7.4.1749/src/channel.c       2016-04-14 12:46:33.608678731 +0200
--- src/channel.c       2016-04-18 19:24:36.775860968 +0200
***************
*** 1431,1436 ****
--- 1431,1437 ----
  
  /*
   * Invoke the "callback" on channel "channel".
+  * This does not redraw but sets channel_need_redraw;
   */
      static void
  invoke_callback(channel_T *channel, char_u *callback, partial_T *partial,
***************
*** 1445,1452 ****
      call_func(callback, (int)STRLEN(callback),
                        &rettv, 2, argv, 0L, 0L, &dummy, TRUE, partial, NULL);
      clear_tv(&rettv);
! 
!     redraw_after_callback();
  }
  
  /*
--- 1446,1452 ----
      call_func(callback, (int)STRLEN(callback),
                        &rettv, 2, argv, 0L, 0L, &dummy, TRUE, partial, NULL);
      clear_tv(&rettv);
!     channel_need_redraw = TRUE;
  }
  
  /*
***************
*** 2009,2014 ****
--- 2009,2018 ----
      }
  }
  
+ /*
+  * Invoke the callback at "cbhead".
+  * Does not redraw but sets channel_need_redraw.
+  */
      static void
  invoke_one_time_callback(
        channel_T   *channel,
***************
*** 2099,2104 ****
--- 2103,2109 ----
  
  /*
   * Invoke a callback for "channel"/"part" if needed.
+  * This does not redraw but sets channel_need_redraw when redraw is needed.
   * Return TRUE when a message was handled, there might be another one.
   */
      static int
***************
*** 3468,3480 ****
        }
      }
  
!     if (channel_need_redraw && must_redraw)
      {
        channel_need_redraw = FALSE;
!       update_screen(0);
!       setcursor();
!       cursor_on();
!       out_flush();
      }
  
      return ret;
--- 3473,3482 ----
        }
      }
  
!     if (channel_need_redraw)
      {
        channel_need_redraw = FALSE;
!       redraw_after_callback();
      }
  
      return ret;
*** ../vim-7.4.1749/src/version.c       2016-04-17 20:49:46.133819400 +0200
--- src/version.c       2016-04-18 19:26:14.238849996 +0200
***************
*** 750,751 ****
--- 750,753 ----
  {   /* Add new patch number below this line */
+ /**/
+     1750,
  /**/

-- 
You were lucky. We lived for three months in a brown paper bag in a 
septic tank. We used to have to get up at six o'clock in the morning, 
clean the bag, eat a crust of stale bread, go to work down mill for 
fourteen hours a day week in-week out. When we got home, our Dad
would thrash us to sleep with his belt!

 /// 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