On Sat, Mar 29, 2014 at 06:50:47AM +1100, John Marriott wrote:
> On 27-Mar-2014 10:13 PM, Bram Moolenaar wrote:
> >
> >Patch 7.4.219
> >Problem:    When 'relativenumber' or 'cursorline' are set the window is
> >         redrawn much to often. (Patrick Hemmer, Dominique Pelle)
> >Solution:   Check the VALID_CROW flag instead of VALID_WROW.
> >Files:           src/move.c
> >
> >
> >*** ../vim-7.4.218/src/move.c        2014-03-23 15:12:29.927264336 +0100
> >--- src/move.c       2014-03-27 11:59:28.524382473 +0100
> >***************
> >*** 772,777 ****
> >--- 772,791 ----
> >     }
> >       }
> >
> >+     /* Redraw when w_cline_row changes and 'relativenumber' or 
> >'cursorline' is
> >+      * set. */
> >+     if ((curwin->w_p_rnu
> >+ #ifdef FEAT_SYN_HL
> >+            || curwin->w_p_cul
> >+ #endif
> >+            )
> >+        && (curwin->w_valid & VALID_CROW) == 0
> >+ # ifdef FEAT_INS_EXPAND
> >+        && !pum_visible()
> >+ # endif
> >+        )
> >+    redraw_later(SOME_VALID);
> >+
> >       wp->w_valid |= VALID_CROW|VALID_CHEIGHT;
> >
> >       /* validate botline too, if update_screen doesn't do it */
> >***************
> >*** 1172,1193 ****
> >       if (prev_skipcol != curwin->w_skipcol)
> >     redraw_later(NOT_VALID);
> >
> >-     /* Redraw when w_row changes and 'relativenumber' is set */
> >-     if (((curwin->w_valid & VALID_WROW) == 0 && (curwin->w_p_rnu
> >   #ifdef FEAT_SYN_HL
> >!    /* or when w_row changes and 'cursorline' is set. */
> >!                                            || curwin->w_p_cul
> >! #endif
> >!    ))
> >! #ifdef FEAT_SYN_HL
> >!    /* or when w_virtcol changes and 'cursorcolumn' is set */
> >!    || (curwin->w_p_cuc && (curwin->w_valid & VALID_VIRTCOL) == 0)
> >! #endif
> >!    )
> >   # ifdef FEAT_INS_EXPAND
> >!        if (!pum_visible())
> >   # endif
> >!            redraw_later(SOME_VALID);
> >
> >       curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL;
> >   }
> >--- 1186,1200 ----
> >       if (prev_skipcol != curwin->w_skipcol)
> >     redraw_later(NOT_VALID);
> >
> >   #ifdef FEAT_SYN_HL
> >!     /* Redraw when w_virtcol changes and 'cursorcolumn' is set */
> >!     if (curwin->w_p_cuc && (curwin->w_valid & VALID_VIRTCOL) == 0
> >   # ifdef FEAT_INS_EXPAND
> >!        && !pum_visible()
> >   # endif
> >!    )
> >!    redraw_later(SOME_VALID);
> >! #endif
> >
> >       curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL;
> >   }
> >*** ../vim-7.4.218/src/version.c     2014-03-25 18:23:27.062087691 +0100
> >--- src/version.c    2014-03-27 12:11:15.276393302 +0100
> >***************
> >*** 736,737 ****
> >--- 736,739 ----
> >   {   /* Add new patch number below this line */
> >+ /**/
> >+     219,
> >   /**/
> >

> Hi All,

> I see a problem with the cursorline highlight after applying this
> patch when scrolling upwards off the top of the view. The cursorline
> highlight separates from the cursor itself when the display scrolls
> after using the up arrow key.

> To repro:
> 1. Open a file such that the file is larger than the view.
> 2. Set cursorline if not already on.
> 3. Move someway down through the file so that the view has scrolled
> of the top of the file.
> 4. Scroll upwards using the up arrow key. The cursorline an cursor
> remain together, but when the cursor reaches the top of the view and
> the display scrolls downward the cursor continues to move upward but
> the cursorline remains where it was when the scrolling started.

> I see the same behaviour in gvim (Windows 8.1 64bit) and vim (HP-UX).

for me (oS linux 12.3, KDE 4.12.3) instead of the highlight moving down
with the data, the highlight expands as I scroll up as if I were
selecting lines -- looks as if that redraw was at least partly justified

-- 
_|_ _  __|_|_ ._ o|  
 |_(_)(_)|_| ||_)||< 
              |      

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