On Monday, July 14, 2014 1:25:32 PM UTC-7, Jacob Niehus wrote:
> On Sunday, July 13, 2014 2:20:04 PM UTC-7, Bram Moolenaar wrote:
> > Jacob Niehus wrote:
> > 
> > 
> > 
> > > On Sunday, July 6, 2014 5:23:39 PM UTC-7, Jacob Niehus wrote:
> > 
> > > > After patch 7.4.314, I've had characters that I hadn't typed stay on 
> > > > screen even though they aren't really there and they go away after 
> > > > exiting insert mode. I am using NeoComplete in Vim 7.4 with patches 
> > > > 1-347. The attached patch fixes the problem without affecting the 
> > > > feature introduced in patch 7.4.314. See also attached screenshots 
> > > > showing the current line in insert mode and then the same line after 
> > > > pressing escape. That problem happens in the current version of Vim but 
> > > > not after my change.
> > 
> > > > 
> > 
> > > > I am seeing this problem in Cygwin (Windows 7) in both mintty and 
> > > > XTerm. My Cygwin version is:
> > 
> > > > CYGWIN_NT-6.1-WOW64 1.7.30(0.272/5/3) 2014-05-23 10:36
> > 
> > > > 
> > 
> > > > Here is my Vim version information:
> > 
> > [...]
> > 
> > 
> > 
> > > Bram,
> > 
> > > 
> > 
> > > On further thought I don't think this patch should be included. It's a
> > 
> > > bad workaround and I have seen the completion messages pop up
> > 
> > > occasionally since using it. I'll try and find a better solution.
> > 
> > 
> > 
> > It was already included as patch 7.4.357.  I suppose it's not necessary
> > 
> > to roll it back.  But if you have a better solution that is welcome.
> > 
> > 
> > 
> > -- 
> > 
> > Close your shells, or I'll kill -9 you
> > 
> > Tomorrow I'll quota you
> > 
> > Remember the disks'll always be full
> > 
> > And then while I'm away
> > 
> > I'll write ~ everyday
> > 
> > And I'll send-pr all my buggings to you.
> > 
> >     [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]
> > 
> > 
> > 
> >  /// 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    ///
> 
> Bram,
> 
> I've come up with two ways to fix it, but I'm not sure either is acceptable. 
> When I submit this patch, I will roll back the change because Shougo wrote 
> that the way he did to prevent "-- INSERT --" from flickering during 
> completion, which my change broken.
> 
> I think the problem is that the ins_compl_delete() function calls 
> changed_cline_bef_curs(), but the line is also changed after the cursor 
> because that's where the completion candidate was, so it's getting left 
> there. Actually even exiting insert mode does not clear the remaining 
> characters - that only worked because I had 'set cursorline' on InsertLeave. 
> I can redraw the line using update_screen(CLEAR) or screen_fill(), and the 
> latter is probably faster, but is there a more straightforward way of 
> redrawing the portion of the line after the cursor that I haven't found? If 
> not, I'll submit a patch using screen_fill.
> 
> Thanks,
> Jake

Bram,

Resetting the cursor after deleting the completion candidate does the trick. 
Tested in Cygwin and OS X.

-Jake

diff --git a/src/edit.c b/src/edit.c
--- a/src/edit.c
+++ b/src/edit.c
@@ -3854,7 +3854,8 @@
            ins_compl_free();
            compl_started = FALSE;
            compl_matches = 0;
-           msg_clr_cmdline();  /* necessary for "noshowmode" */
+           if (!shortmess(SHM_COMPLETIONMENU))
+               msg_clr_cmdline();      /* necessary for "noshowmode" */
            ctrl_x_mode = 0;
            compl_enter_selects = FALSE;
            if (edit_submode != NULL)
@@ -4592,6 +4593,8 @@
     i = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0);
     backspace_until_column(i);
     changed_cline_bef_curs();
+    /* Clean up deleted characters */
+    screen_start();
 }
 
 /* Insert the new text being completed. */

-- 
-- 
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.
diff --git a/src/edit.c b/src/edit.c
--- a/src/edit.c
+++ b/src/edit.c
@@ -3854,7 +3854,8 @@
 	    ins_compl_free();
 	    compl_started = FALSE;
 	    compl_matches = 0;
-	    msg_clr_cmdline();	/* necessary for "noshowmode" */
+	    if (!shortmess(SHM_COMPLETIONMENU))
+		msg_clr_cmdline();	/* necessary for "noshowmode" */
 	    ctrl_x_mode = 0;
 	    compl_enter_selects = FALSE;
 	    if (edit_submode != NULL)
@@ -4592,6 +4593,8 @@
     i = compl_col + (compl_cont_status & CONT_ADDING ? compl_length : 0);
     backspace_until_column(i);
     changed_cline_bef_curs();
+    /* Clean up deleted characters */
+    screen_start();
 }
 
 /* Insert the new text being completed. */

Raspunde prin e-mail lui