Patch 8.0.0390
Problem:    When the window scrolls horizontally when the popup menu is
            displayed part of it may not be cleared. (Neovim issue #6184)
Solution:   Remove the menu when the windows scrolled. (closes #1524)
Files:      src/edit.c


*** ../vim-8.0.0389/src/edit.c  2017-02-26 19:09:01.394217154 +0100
--- src/edit.c  2017-03-01 12:23:55.272834262 +0100
***************
*** 186,192 ****
  static int  ins_compl_key2count(int c);
  static int  ins_compl_use_match(int c);
  static int  ins_complete(int c, int enable_pum);
! static void show_pum(int save_w_wrow);
  static unsigned  quote_meta(char_u *dest, char_u *str, int len);
  #endif /* FEAT_INS_EXPAND */
  
--- 186,192 ----
  static int  ins_compl_key2count(int c);
  static int  ins_compl_use_match(int c);
  static int  ins_complete(int c, int enable_pum);
! static void show_pum(int prev_w_wrow, int prev_w_leftcol);
  static unsigned  quote_meta(char_u *dest, char_u *str, int len);
  #endif /* FEAT_INS_EXPAND */
  
***************
*** 2818,2823 ****
--- 2818,2824 ----
  set_completion(colnr_T startcol, list_T *list)
  {
      int save_w_wrow = curwin->w_wrow;
+     int save_w_leftcol = curwin->w_leftcol;
  
      /* If already doing completions stop it. */
      if (ctrl_x_mode != 0)
***************
*** 2858,2864 ****
  
      /* Lazily show the popup menu, unless we got interrupted. */
      if (!compl_interrupted)
!       show_pum(save_w_wrow);
      out_flush();
  }
  
--- 2859,2865 ----
  
      /* Lazily show the popup menu, unless we got interrupted. */
      if (!compl_interrupted)
!       show_pum(save_w_wrow, save_w_leftcol);
      out_flush();
  }
  
***************
*** 5096,5101 ****
--- 5097,5103 ----
      colnr_T   curs_col;           /* cursor column */
      int               n;
      int               save_w_wrow;
+     int               save_w_leftcol;
      int               insert_match;
      int               save_did_ai = did_ai;
  
***************
*** 5539,5544 ****
--- 5541,5547 ----
       * Find next match (and following matches).
       */
      save_w_wrow = curwin->w_wrow;
+     save_w_leftcol = curwin->w_leftcol;
      n = ins_compl_next(TRUE, ins_compl_key2count(c), insert_match, FALSE);
  
      /* may undisplay the popup menu */
***************
*** 5691,5699 ****
  
      /* Show the popup menu, unless we got interrupted. */
      if (enable_pum && !compl_interrupted)
!     {
!       show_pum(save_w_wrow);
!     }
      compl_was_interrupted = compl_interrupted;
      compl_interrupted = FALSE;
  
--- 5694,5701 ----
  
      /* Show the popup menu, unless we got interrupted. */
      if (enable_pum && !compl_interrupted)
!       show_pum(save_w_wrow, save_w_leftcol);
! 
      compl_was_interrupted = compl_interrupted;
      compl_interrupted = FALSE;
  
***************
*** 5701,5721 ****
  }
  
      static void
! show_pum(int save_w_wrow)
  {
!   /* RedrawingDisabled may be set when invoked through complete(). */
!   int n = RedrawingDisabled;
  
!   RedrawingDisabled = 0;
  
!   /* If the cursor moved we need to remove the pum first. */
!   setcursor();
!   if (save_w_wrow != curwin->w_wrow)
!       ins_compl_del_pum();
  
!   ins_compl_show_pum();
!   setcursor();
!   RedrawingDisabled = n;
  }
  
  /*
--- 5703,5724 ----
  }
  
      static void
! show_pum(int prev_w_wrow, int prev_w_leftcol)
  {
!     /* RedrawingDisabled may be set when invoked through complete(). */
!     int n = RedrawingDisabled;
  
!     RedrawingDisabled = 0;
  
!     /* If the cursor moved or the display scrolled we need to remove the pum
!      * first. */
!     setcursor();
!     if (prev_w_wrow != curwin->w_wrow || prev_w_leftcol != curwin->w_leftcol)
!       ins_compl_del_pum();
  
!     ins_compl_show_pum();
!     setcursor();
!     RedrawingDisabled = n;
  }
  
  /*
*** ../vim-8.0.0389/src/version.c       2017-02-28 22:51:08.468606327 +0100
--- src/version.c       2017-03-01 12:26:02.840006635 +0100
***************
*** 766,767 ****
--- 766,769 ----
  {   /* Add new patch number below this line */
+ /**/
+     390,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
30. Even though you died last week, you've managed to retain OPS on your
    favorite IRC channel.

 /// Bram Moolenaar -- b...@moolenaar.net -- 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 vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui