Ramel Eshed wrote:

> On Monday, June 5, 2017 at 8:32:57 PM UTC+3, Bram Moolenaar wrote:
> > Patch 8.0.0626
> > Problem:    In the GUI the cursor may flicker.
> > Solution:   Check the cmd_silent flag before updating the cursor shape.
> >             (Hirohito Higashi, closes #1637)
> > Files:      src/getchar.c
> > 
> > 
> > *** ../vim-8.0.0625/src/getchar.c   2017-04-08 18:41:07.339941299 +0200
> > --- src/getchar.c   2017-06-05 19:28:16.696484466 +0200
> > ***************
> > *** 2913,2920 ****
> >       }
> >   #ifdef FEAT_GUI
> >       /* may unshow different cursor shape */
> > !     if (gui.in_use && shape_changed)
> > !   gui_update_cursor(TRUE, FALSE);
> >   #endif
> >   
> >       --vgetc_busy;
> > --- 2913,2928 ----
> >       }
> >   #ifdef FEAT_GUI
> >       /* may unshow different cursor shape */
> > !     if (gui.in_use)
> > !     {
> > !   if (cmd_silent)
> > !       gui_dont_update_cursor(TRUE);
> > !   else
> > !       gui_can_update_cursor();
> > ! 
> > !   if (shape_changed)
> > !       gui_update_cursor(TRUE, FALSE);
> > !     }
> >   #endif
> >   
> >       --vgetc_busy;
> > *** ../vim-8.0.0625/src/version.c   2017-06-05 18:46:20.497845949 +0200
> > --- src/version.c   2017-06-05 19:06:06.449739127 +0200
> > ***************
> > *** 766,767 ****
> > --- 766,769 ----
> >   {   /* Add new patch number below this line */
> > + /**/
> > +     626,
> >   /**/
> > 
> > -- 
> > "How is your new girlfriend?"
> > "90-60-90 man!"
> > "What, pale purple?"
> > 
> >  /// 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    ///
> 
> Hi Bram,
> 
> This match makes the cursor disappear using the following mapping (tested on 
> linux):
> 
> gvim -u NONE -N
> :noremap <silent> <CR> <CR>
> 
> now hit <CR> -> no cursor

Yes, that is wrong.  I was wondering about the conditions anyway.  I
would think that if shape_changed isn't set then nothing should happen.
How about this:

#ifdef FEAT_GUI
    /* may unshow different cursor shape */
    if (gui.in_use && shape_changed && !cmd_silent)
        gui_update_cursor(TRUE, FALSE);
#endif

But then we perhaps get the flicker again?  An alternative is to not
call gui_update_cursor() for NORMAL mode:

#ifdef FEAT_GUI
                    /* may show different cursor shape */
                    if (gui.in_use && State != NORMAL && !cmd_silent)
                    {
                        int         save_State;

                        save_State = State;
                        State = NORMAL;
                        gui_update_cursor(TRUE, FALSE);
                        State = save_State;
                        shape_changed = TRUE;
                    }
#endif

-- 
hundred-and-one symptoms of being an internet addict:
13. You refer to going to the bathroom as downloading.

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