Patch 8.1.2214
Problem:    Too much is redrawn when 'cursorline' is set.
Solution:   Don't do a complete redraw. (closes #5079)
Files:      src/main.c, src/change.c, src/drawscreen.c,
            src/testdir/dumps/Test_Xcursorline_13.dump,
            src/testdir/dumps/Test_Xcursorline_14.dump,
            src/testdir/dumps/Test_Xcursorline_15.dump,
            src/testdir/dumps/Test_Xcursorline_16.dump,
            src/testdir/dumps/Test_Xcursorline_17.dump,
            src/testdir/dumps/Test_Xcursorline_18.dump


*** ../vim-8.1.2213/src/main.c  2019-10-13 16:43:35.956359658 +0200
--- src/main.c  2019-10-24 21:31:40.373294129 +0200
***************
*** 1380,1406 ****
            validate_cursor();
  
  #ifdef FEAT_SYN_HL
!           if (curwin->w_p_cul && curwin->w_p_wrap
!                               && (curwin->w_p_culopt_flags & CULOPT_SCRLINE))
!               must_redraw = NOT_VALID;
  #endif
- 
            if (VIsual_active)
                update_curbuf(INVERTED); // update inverted part
            else if (must_redraw)
            {
                mch_disable_flush();    // Stop issuing gui_mch_flush().
! #ifdef FEAT_SYN_HL
!               // Might need some more update for the cursorscreen line.
!               // TODO: can we optimize this?
!               if (curwin->w_p_cul
!                       && curwin->w_p_wrap
!                       && (curwin->w_p_culopt_flags & CULOPT_SCRLINE)
!                       && !char_avail())
!                   update_screen(VALID);
!               else
! #endif
!                   update_screen(0);
                mch_enable_flush();
            }
            else if (redraw_cmdline || clear_cmdline)
--- 1380,1399 ----
            validate_cursor();
  
  #ifdef FEAT_SYN_HL
!           // Might need to update for 'cursorline'.
!           // When 'cursorlineopt' is "screenline" need to redraw always.
!           if (curwin->w_p_cul
!                   && (curwin->w_last_cursorline != curwin->w_cursor.lnum
!                       || (curwin->w_p_culopt_flags & CULOPT_SCRLINE))
!                   && !char_avail())
!               redraw_later(VALID);
  #endif
            if (VIsual_active)
                update_curbuf(INVERTED); // update inverted part
            else if (must_redraw)
            {
                mch_disable_flush();    // Stop issuing gui_mch_flush().
!               update_screen(0);
                mch_enable_flush();
            }
            else if (redraw_cmdline || clear_cmdline)
*** ../vim-8.1.2213/src/change.c        2019-10-24 20:07:04.419105304 +0200
--- src/change.c        2019-10-24 22:26:53.069615100 +0200
***************
*** 609,624 ****
            if (hasAnyFolding(wp))
                set_topline(wp, wp->w_topline);
  #endif
!           // Relative numbering may require updating more.  Cursor line
!           // highlighting probably needs to be updated if it's below the
!           // change (or is using screenline highlighting)
!           if (wp->w_p_rnu
  #ifdef FEAT_SYN_HL
!                   || ((wp->w_p_cul && lnum <= wp->w_last_cursorline)
!                           || (wp->w_p_culopt_flags & CULOPT_SCRLINE))
  #endif
-                   )
-               redraw_win_later(wp, SOME_VALID);
        }
      }
  
--- 609,629 ----
            if (hasAnyFolding(wp))
                set_topline(wp, wp->w_topline);
  #endif
!           // Relative numbering may require updating more.
!           if (wp->w_p_rnu)
!               redraw_win_later(wp, SOME_VALID);
  #ifdef FEAT_SYN_HL
!           // Cursor line highlighting probably need to be updated with
!           // "VALID" if it's below the change.
!           // If the cursor line is inside the change we need to redraw more.
!           if (wp->w_p_cul)
!           {
!               if (xtra == 0)
!                   redraw_win_later(wp, VALID);
!               else if (lnum <= wp->w_last_cursorline)
!                   redraw_win_later(wp, SOME_VALID);
!           }
  #endif
        }
      }
  
*** ../vim-8.1.2213/src/drawscreen.c    2019-09-19 23:05:56.471034946 +0200
--- src/drawscreen.c    2019-10-24 21:24:50.678976250 +0200
***************
*** 2124,2130 ****
                                || (wp->w_match_head != NULL
                                                    && buf->b_mod_xlines != 0)
  #endif
!                               )))))
        {
  #ifdef FEAT_SEARCH_EXTRA
            if (lnum == mod_top)
--- 2124,2135 ----
                                || (wp->w_match_head != NULL
                                                    && buf->b_mod_xlines != 0)
  #endif
!                               ))))
! #ifdef FEAT_SYN_HL
!               || (wp->w_p_cul && (lnum == wp->w_cursor.lnum
!                                            || lnum == wp->w_last_cursorline))
! #endif
!                               )
        {
  #ifdef FEAT_SEARCH_EXTRA
            if (lnum == mod_top)
*** ../vim-8.1.2213/src/testdir/dumps/Test_Xcursorline_13.dump  2019-09-14 
21:00:01.387100866 +0200
--- src/testdir/dumps/Test_Xcursorline_13.dump  2019-10-24 21:32:24.501256291 
+0200
***************
*** 17,20 ****
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! |:+0&&|s|e|t| |b|r|e|a|k|i|n|d|e|n|t| |f|o|l|d|c|o|l|u|m|n|=|2| 
|s|i|g|n|c|o|l|u|m|n|=|y|e|s| @30
--- 17,20 ----
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! | +0&&@74
*** ../vim-8.1.2213/src/testdir/dumps/Test_Xcursorline_14.dump  2019-09-14 
21:00:01.387100866 +0200
--- src/testdir/dumps/Test_Xcursorline_14.dump  2019-10-24 21:35:43.576967109 
+0200
***************
*** 17,20 ****
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|2|6|-|3|0| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! |:+0&&|s|e|t| |b|r|e|a|k|i|n|d|e|n|t| |f|o|l|d|c|o|l|u|m|n|=|2| 
|s|i|g|n|c|o|l|u|m|n|=|y|e|s| @30
--- 17,20 ----
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|2|6|-|3|0| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! | +0&&@74
*** ../vim-8.1.2213/src/testdir/dumps/Test_Xcursorline_15.dump  2019-09-14 
21:00:01.387100866 +0200
--- src/testdir/dumps/Test_Xcursorline_15.dump  2019-10-24 21:35:44.660965081 
+0200
***************
*** 17,20 ****
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|4|3|-|4|7| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! |:+0&&|s|e|t| |b|r|e|a|k|i|n|d|e|n|t| |f|o|l|d|c|o|l|u|m|n|=|2| 
|s|i|g|n|c|o|l|u|m|n|=|y|e|s| @30
--- 17,20 ----
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|4|3|-|4|7| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! | +0&&@74
*** ../vim-8.1.2213/src/testdir/dumps/Test_Xcursorline_16.dump  2019-09-14 
21:00:01.387100866 +0200
--- src/testdir/dumps/Test_Xcursorline_16.dump  2019-10-24 21:37:29.016751178 
+0200
***************
*** 17,20 ****
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|5|9|-|6|4| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! |:+0&&|s|e|t| |b|r|e|a|k|i|n|d|e|n|t| |f|o|l|d|c|o|l|u|m|n|=|2| 
|s|i|g|n|c|o|l|u|m|n|=|y|e|s| @30
--- 17,20 ----
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|5|9|-|6|4| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! | +0&&@74
*** ../vim-8.1.2213/src/testdir/dumps/Test_Xcursorline_17.dump  2019-09-14 
21:00:01.387100866 +0200
--- src/testdir/dumps/Test_Xcursorline_17.dump  2019-10-24 21:37:30.100748775 
+0200
***************
*** 17,20 ****
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|7|5|-|8|1| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! |:+0&&|s|e|t| |b|r|e|a|k|i|n|d|e|n|t| |f|o|l|d|c|o|l|u|m|n|=|2| 
|s|i|g|n|c|o|l|u|m|n|=|y|e|s| @30
--- 17,20 ----
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|7|5|-|8|1| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! | +0&&@74
*** ../vim-8.1.2213/src/testdir/dumps/Test_Xcursorline_18.dump  2019-09-14 
21:00:01.387100866 +0200
--- src/testdir/dumps/Test_Xcursorline_18.dump  2019-10-24 21:37:31.184746368 
+0200
***************
*** 17,20 ****
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|9|1|-|9|8| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! |:+0&&|s|e|t| |b|r|e|a|k|i|n|d|e|n|t| |f|o|l|d|c|o|l|u|m|n|=|2| 
|s|i|g|n|c|o|l|u|m|n|=|y|e|s| @30
--- 17,20 ----
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|i+0#0000000&|n|s|-+0#0000e05&|z+0#0000000&|w|e|i|-+0#0000e05&|d+0#0000000&|r|e|i|-+0#0000e05&|v+0#0000000&|i||+1&&|~+0#4040ff13&|
 @47
  | +0#0000e05#a8a8a8255@3| 
+0#af5f00255#ffffff0@3|>+0#4040ff13&|e+0#0000000&|r|-+0#0000e05&|f+0#0000000&|ü|n|f|-+0#0000e05&|s+0#0000000&|e|c|h|s|@+0#4040ff13&@2||+1#0000000&|~+0#4040ff13&|
 @47
  |<+3#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|9|1|-|9|8| @1|T|o|p| |[+1&&|N|o| 
|N|a|m|e|]| |[|+|]| @17|5|,|0|-|1| @9|B|o|t
! | +0&&@74
*** ../vim-8.1.2213/src/version.c       2019-10-24 22:12:51.569124167 +0200
--- src/version.c       2019-10-24 22:31:25.872529334 +0200
***************
*** 743,744 ****
--- 743,746 ----
  {   /* Add new patch number below this line */
+ /**/
+     2214,
  /**/

-- 
Managers are like cats in a litter box.  They instinctively shuffle things
around to conceal what they've done.
                                (Scott Adams - The Dilbert principle)

 /// 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/201910242033.x9OKX3VG003571%40masaka.moolenaar.net.

Raspunde prin e-mail lui