Patch 9.0.1019
Problem:    'smoothscroll' and virtual text above don't work together.
            (Yee Cheng Chin)
Solution:   Skip virtual text above when w_skipcol is non-zero.
            (closes #11665)
Files:      src/drawline.c, src/proto/drawline.pro, src/charset.c,
            src/testdir/test_textprop.vim,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_1.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_2.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_3.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_4.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_5.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_6.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_7.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_8.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_9.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_10.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_11.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_12.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_13.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_14.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_15.dump,
            src/testdir/dumps/Test_prop_above_below_smoothscroll_16.dump


*** ../vim-9.0.1018/src/drawline.c      2022-12-02 21:49:55.496222004 +0000
--- src/drawline.c      2022-12-06 14:14:50.390303838 +0000
***************
*** 637,643 ****
        int         *n_extra,       // nr of bytes for virtual text
        char_u      **p_extra,      // virtual text
        int         *n_attr,        // attribute cells, NULL if not used
!       int         *n_attr_skip)   // cells to skip attr, NULL if not used
  {
      int           right = (tp->tp_flags & TP_FLAG_ALIGN_RIGHT);
      int           above = (tp->tp_flags & TP_FLAG_ALIGN_ABOVE);
--- 637,644 ----
        int         *n_extra,       // nr of bytes for virtual text
        char_u      **p_extra,      // virtual text
        int         *n_attr,        // attribute cells, NULL if not used
!       int         *n_attr_skip,   // cells to skip attr, NULL if not used
!       int         do_skip)        // skip_cells is not zero
  {
      int           right = (tp->tp_flags & TP_FLAG_ALIGN_RIGHT);
      int           above = (tp->tp_flags & TP_FLAG_ALIGN_ABOVE);
***************
*** 690,695 ****
--- 691,698 ----
                    else
                        n_used = *n_extra;
                }
+               else if (below && before > vcol && do_skip)
+                   before -= vcol;
                else
                    before = 0;
            }
***************
*** 1500,1514 ****
        area_highlighting = TRUE;
      }
  
  #ifdef FEAT_PROP_POPUP
      if (WIN_IS_POPUP(wp))
        wlv.screen_line_flags |= SLF_POPUP;
  #endif
  
      // 'nowrap' or 'wrap' and a single line that doesn't fit: Advance to the
      // first character to be displayed.
      if (wp->w_p_wrap)
!       v = startrow == 0 ? wp->w_skipcol : 0;
      else
        v = wp->w_leftcol;
      if (v > 0 && !number_only)
--- 1503,1577 ----
        area_highlighting = TRUE;
      }
  
+     // When w_skipcol is non-zero and there is virtual text above the actual
+     // text, then this much of the virtual text is skipped.
+     int skipcol_in_text_prop_above = 0;
+ 
  #ifdef FEAT_PROP_POPUP
      if (WIN_IS_POPUP(wp))
        wlv.screen_line_flags |= SLF_POPUP;
+ 
+     char_u *prop_start;
+     text_prop_count = get_text_props(wp->w_buffer, lnum, &prop_start, FALSE);
+     if (text_prop_count > 0)
+     {
+       // Make a copy of the properties, so that they are properly
+       // aligned.
+       text_props = ALLOC_MULT(textprop_T, text_prop_count);
+       if (text_props != NULL)
+           mch_memmove(text_props, prop_start,
+                                    text_prop_count * sizeof(textprop_T));
+ 
+       // Allocate an array for the indexes.
+       text_prop_idxs = ALLOC_MULT(int, text_prop_count);
+       if (text_prop_idxs == NULL)
+           VIM_CLEAR(text_props);
+ 
+       if (text_props != NULL)
+       {
+           area_highlighting = TRUE;
+           extra_check = TRUE;
+ 
+           // When skipping virtual text the props need to be sorted.  The
+           // order is reversed!
+           if (lnum == wp->w_topline && wp->w_skipcol > 0)
+           {
+               for (int i = 0; i < text_prop_count; ++i)
+                   text_prop_idxs[i] = i;
+               sort_text_props(wp->w_buffer, text_props,
+                                             text_prop_idxs, text_prop_count);
+           }
+ 
+           // Text props "above" move the line number down to where the text
+           // is.  Only count the ones that are visible, not those that are
+           // skipped because of w_skipcol.
+           int text_width = wp->w_width - win_col_off(wp);
+           for (int i = text_prop_count - 1; i >= 0; --i)
+               if (text_props[i].tp_flags & TP_FLAG_ALIGN_ABOVE)
+               {
+                   if (lnum == wp->w_topline
+                           && wp->w_skipcol - skipcol_in_text_prop_above
+                                                                >= text_width)
+                   {
+                       // This virtual text above is skipped, remove it from
+                       // the array.
+                       skipcol_in_text_prop_above += text_width;
+                       for (int j = i + 1; j < text_prop_count; ++j)
+                           text_props[j - 1] = text_props[j];
+                       ++i;
+                       --text_prop_count;
+                   }
+                   else
+                       ++wlv.text_prop_above_count;
+               }
+       }
+     }
  #endif
  
      // 'nowrap' or 'wrap' and a single line that doesn't fit: Advance to the
      // first character to be displayed.
      if (wp->w_p_wrap)
!       v = startrow == 0 ? wp->w_skipcol - skipcol_in_text_prop_above : 0;
      else
        v = wp->w_leftcol;
      if (v > 0 && !number_only)
***************
*** 1559,1565 ****
  #ifdef FEAT_PROP_POPUP
        // If there the text doesn't reach to the desired column, need to skip
        // "skip_cells" cells when virtual text follows.
!       if (!wp->w_p_wrap && v > wlv.vcol)
            skip_cells = v - wlv.vcol;
  #endif
  
--- 1622,1629 ----
  #ifdef FEAT_PROP_POPUP
        // If there the text doesn't reach to the desired column, need to skip
        // "skip_cells" cells when virtual text follows.
!       if ((!wp->w_p_wrap || (lnum == wp->w_topline && wp->w_skipcol > 0))
!                                                              && v > wlv.vcol)
            skip_cells = v - wlv.vcol;
  #endif
  
***************
*** 1703,1742 ****
      }
  #endif
  
- #ifdef FEAT_PROP_POPUP
-     {
-       char_u *prop_start;
- 
-       text_prop_count = get_text_props(wp->w_buffer, lnum,
-                                                          &prop_start, FALSE);
-       if (text_prop_count > 0)
-       {
-           // Make a copy of the properties, so that they are properly
-           // aligned.
-           text_props = ALLOC_MULT(textprop_T, text_prop_count);
-           if (text_props != NULL)
-               mch_memmove(text_props, prop_start,
-                                        text_prop_count * sizeof(textprop_T));
- 
-           // Allocate an array for the indexes.
-           text_prop_idxs = ALLOC_MULT(int, text_prop_count);
-           if (text_prop_idxs == NULL)
-               VIM_CLEAR(text_props);
- 
-           if (text_props != NULL)
-           {
-               area_highlighting = TRUE;
-               extra_check = TRUE;
-               // text props "above" move the line number down to where the
-               // text is.
-               for (int i = 0; i < text_prop_count; ++i)
-                   if (text_props[i].tp_flags & TP_FLAG_ALIGN_ABOVE)
-                       ++wlv.text_prop_above_count;
-           }
-       }
-     }
- #endif
- 
      win_line_start(wp, &wlv, FALSE);
  
      // Repeat for the whole displayed line.
--- 1767,1772 ----
***************
*** 2059,2065 ****
                                                    wlv.vcol,
                                                    wlv.col,
                                                    &wlv.n_extra, &wlv.p_extra,
!                                                   &n_attr, &wlv.n_attr_skip);
                                if (wlv.p_extra != prev_p_extra)
                                {
                                    // wlv.p_extra was allocated
--- 2089,2096 ----
                                                    wlv.vcol,
                                                    wlv.col,
                                                    &wlv.n_extra, &wlv.p_extra,
!                                                   &n_attr, &wlv.n_attr_skip,
!                                                   skip_cells > 0);
                                if (wlv.p_extra != prev_p_extra)
                                {
                                    // wlv.p_extra was allocated
*** ../vim-9.0.1018/src/proto/drawline.pro      2022-10-09 21:53:35.319363028 
+0100
--- src/proto/drawline.pro      2022-12-06 14:08:02.405400141 +0000
***************
*** 1,4 ****
  /* drawline.c */
! int text_prop_position(win_T *wp, textprop_T *tp, int vcol, int scr_col, int 
*n_extra, char_u **p_extra, int *n_attr, int *n_attr_skip);
  int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, int 
nochange, int number_only);
  /* vim: set ft=c : */
--- 1,4 ----
  /* drawline.c */
! int text_prop_position(win_T *wp, textprop_T *tp, int vcol, int scr_col, int 
*n_extra, char_u **p_extra, int *n_attr, int *n_attr_skip, int do_skip);
  int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, int 
nochange, int number_only);
  /* vim: set ft=c : */
*** ../vim-9.0.1018/src/charset.c       2022-12-02 20:46:01.936019457 +0000
--- src/charset.c       2022-12-06 14:08:32.089488913 +0000
***************
*** 1195,1201 ****
  
                        cells = text_prop_position(wp, tp, vcol,
                             (vcol + size) % (wp->w_width - col_off) + col_off,
!                                                    &n_extra, &p, NULL, NULL);
  #ifdef FEAT_LINEBREAK
                        no_sbr = TRUE;  // don't use 'showbreak' now
  #endif
--- 1195,1201 ----
  
                        cells = text_prop_position(wp, tp, vcol,
                             (vcol + size) % (wp->w_width - col_off) + col_off,
!                                             &n_extra, &p, NULL, NULL, FALSE);
  #ifdef FEAT_LINEBREAK
                        no_sbr = TRUE;  // don't use 'showbreak' now
  #endif
*** ../vim-9.0.1018/src/testdir/test_textprop.vim       2022-12-02 
21:49:55.496222004 +0000
--- src/testdir/test_textprop.vim       2022-12-06 14:11:19.317912594 +0000
***************
*** 3113,3118 ****
--- 3113,3146 ----
    call StopVimInTerminal(buf)
  endfunc
  
+ func Test_prop_above_below_smoothscroll()
+   CheckRunVimInTerminal
+ 
+   let lines =<< trim END
+       vim9script
+       setline(1, range(1, 10)->mapnew((_, v) => '" line ' .. v))
+ 
+       set smoothscroll wrap
+       call prop_type_add('mytype', {highlight: 'DiffChange'})
+       call prop_add(3, 0, {text: "insert above", type: "mytype", text_align: 
'above'})
+       call prop_add(5, 0, {text: "insert above 1", type: "mytype", 
text_align: 'above'})
+       call prop_add(5, 0, {text: "insert above 2", type: "mytype", 
text_align: 'above'})
+       call prop_add(7, 0, {text: "insert below", type: "mytype", text_align: 
'below'})
+       call prop_add(9, 0, {text: "insert below 1", type: "mytype", 
text_align: 'below'})
+       call prop_add(9, 0, {text: "insert below 2", type: "mytype", 
text_align: 'below'})
+   END
+   call writefile(lines, 'XscriptPropsSmoothscroll', 'D')
+   let buf = RunVimInTerminal('-S XscriptPropsSmoothscroll', #{rows: 8, cols: 
60})
+   call VerifyScreenDump(buf, 'Test_prop_above_below_smoothscroll_1', {})
+ 
+   for nr in range(2, 16)
+     call term_sendkeys(buf, "\<C-E>")
+     call VerifyScreenDump(buf, 'Test_prop_above_below_smoothscroll_' .. nr, 
{})
+   endfor
+ 
+   call StopVimInTerminal(buf)
+ endfunc
+ 
  func Test_props_with_text_override()
    CheckRunVimInTerminal
  
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_1.dump 
2022-12-06 14:16:31.522449873 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_1.dump 2022-12-06 
13:25:05.270391607 +0000
***************
*** 0 ****
--- 1,8 ----
+ >"+0&#ffffff0| |l|i|n|e| |1| @51
+ |"| |l|i|n|e| |2| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| +0&#ffffff0@47
+ |"| |l|i|n|e| |3| @51
+ |"| |l|i|n|e| |4| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45
+ |@+0#4040ff13&@2| @56
+ | +0#0000000&@41|1|,|1| @10|T|o|p| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_2.dump 
2022-12-06 14:16:31.522449873 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_2.dump 2022-12-06 
13:33:58.383082319 +0000
***************
*** 0 ****
--- 1,8 ----
+ |"+0&#ffffff0| |l|i|n|e| |2| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| +0&#ffffff0@47
+ |"| |l|i|n|e| |3| @51
+ >"| |l|i|n|e| |4| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45
+ |"| |l|i|n|e| |5| @51
+ @42|4|,|1| @10|1|6|%| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_3.dump 
2022-12-06 14:16:31.526449878 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_3.dump 2022-12-06 
13:33:59.535082839 +0000
***************
*** 0 ****
--- 1,8 ----
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| +0&#ffffff0@47
+ |"| |l|i|n|e| |3| @51
+ >"| |l|i|n|e| |4| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45
+ |"| |l|i|n|e| |5| @51
+ |"| |l|i|n|e| |6| @51
+ @42|4|,|1| @10|3@1|%| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_4.dump 
2022-12-06 14:16:31.530449883 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_4.dump 2022-12-06 
13:34:00.687083354 +0000
***************
*** 0 ****
--- 1,8 ----
+ |<+0#4040ff13#ffffff0@2|i+0#0000000&|n|e| |3| @51
+ >"| |l|i|n|e| |4| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45
+ |"| |l|i|n|e| |5| @51
+ |"| |l|i|n|e| |6| @51
+ |@+0#4040ff13&@2| @56
+ | +0#0000000&@41|4|,|1| @10|3@1|%| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_5.dump 
2022-12-06 14:16:31.534449889 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_5.dump 2022-12-06 
13:34:01.839083869 +0000
***************
*** 0 ****
--- 1,8 ----
+ |"+0&#ffffff0| |l|i|n|e| |4| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45
+ |"| |l|i|n|e| |5| @51
+ >"| |l|i|n|e| |6| @51
+ |"| |l|i|n|e| |7| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47
+ @42|6|,|1| @10|5|0|%| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_6.dump 
2022-12-06 14:16:31.542449899 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_6.dump 2022-12-06 
13:34:02.991084379 +0000
***************
*** 0 ****
--- 1,8 ----
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |a|b|o|v|e| |2| +0&#ffffff0@45
+ |"| |l|i|n|e| |5| @51
+ >"| |l|i|n|e| |6| @51
+ |"| |l|i|n|e| |7| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47
+ |"| |l|i|n|e| |8| @51
+ @42|6|,|1| @10|6@1|%| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_7.dump 
2022-12-06 14:16:31.546449905 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_7.dump 2022-12-06 
13:34:04.147084888 +0000
***************
*** 0 ****
--- 1,8 ----
+ |<+0#4040ff13#ffffff0@2|e+0#0000000#ffd7ff255|r|t| |a|b|o|v|e| |2| 
+0&#ffffff0@45
+ |"| |l|i|n|e| |5| @51
+ >"| |l|i|n|e| |6| @51
+ |"| |l|i|n|e| |7| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47
+ |"| |l|i|n|e| |8| @51
+ |@+0#4040ff13&@2| @56
+ | +0#0000000&@41|6|,|1| @10|6@1|%| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_8.dump 
2022-12-06 14:16:31.550449910 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_8.dump 2022-12-06 
13:34:05.299085392 +0000
***************
*** 0 ****
--- 1,8 ----
+ |<+0#4040ff13#ffffff0@2|i+0#0000000&|n|e| |5| @51
+ >"| |l|i|n|e| |6| @51
+ |"| |l|i|n|e| |7| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47
+ |"| |l|i|n|e| |8| @51
+ |"| |l|i|n|e| |9| @51
+ |@+0#4040ff13&@2| @56
+ | +0#0000000&@41|6|,|1| @10|6@1|%| 
*** ../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_9.dump 
2022-12-06 14:16:31.554449915 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_9.dump 2022-12-06 
13:34:06.451085894 +0000
***************
*** 0 ****
--- 1,8 ----
+ |"+0&#ffffff0| |l|i|n|e| |6| @51
+ |"| |l|i|n|e| |7| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47
+ >"| |l|i|n|e| |8| @51
+ |"| |l|i|n|e| |9| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45
+ @42|8|,|1| @10|8|3|%| 
*** 
../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_10.dump    
    2022-12-06 14:16:31.558449921 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_10.dump        
2022-12-06 13:34:07.599086392 +0000
***************
*** 0 ****
--- 1,8 ----
+ |"+0&#ffffff0| |l|i|n|e| |7| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| +0&#ffffff0@47
+ |"| |l|i|n|e| |8| @51
+ >"| |l|i|n|e| |9| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45
+ |"| |l|i|n|e| |1|0| @50
+ @42|9|,|1| @10|B|o|t| 
*** 
../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_11.dump    
    2022-12-06 14:16:31.562449926 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_11.dump        
2022-12-06 14:08:52.893548485 +0000
***************
*** 0 ****
--- 1,8 ----
+ |<+0#4040ff13#ffffff0@2|e+0#0000000#ffd7ff255|r|t| |b|e|l|o|w| +0&#ffffff0@47
+ |"| |l|i|n|e| |8| @51
+ >"| |l|i|n|e| |9| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45
+ |"| |l|i|n|e| |1|0| @50
+ |~+0#4040ff13&| @58
+ | +0#0000000&@41|9|,|1| @10|B|o|t| 
*** 
../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_12.dump    
    2022-12-06 14:16:31.566449931 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_12.dump        
2022-12-06 13:41:53.787113328 +0000
***************
*** 0 ****
--- 1,8 ----
+ |"+0&#ffffff0| |l|i|n|e| |8| @51
+ |"| |l|i|n|e| |9| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45
+ >"| |l|i|n|e| |1|0| @50
+ |~+0#4040ff13&| @58
+ |~| @58
+ | +0#0000000&@41|1|0|,|1| @9|B|o|t| 
*** 
../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_13.dump    
    2022-12-06 14:16:31.570449937 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_13.dump        
2022-12-06 13:41:54.935113074 +0000
***************
*** 0 ****
--- 1,8 ----
+ |"+0&#ffffff0| |l|i|n|e| |9| @51
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |1| +0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45
+ >"| |l|i|n|e| |1|0| @50
+ |~+0#4040ff13&| @58
+ |~| @58
+ |~| @58
+ | +0#0000000&@41|1|0|,|1| @9|B|o|t| 
*** 
../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_14.dump    
    2022-12-06 14:16:31.574449942 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_14.dump        
2022-12-06 14:08:54.265552341 +0000
***************
*** 0 ****
--- 1,8 ----
+ |<+0#4040ff13#ffffff0@2|e+0#0000000#ffd7ff255|r|t| |b|e|l|o|w| |1| 
+0&#ffffff0@45
+ |i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| |2| +0&#ffffff0@45
+ >"| |l|i|n|e| |1|0| @50
+ |~+0#4040ff13&| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ | +0#0000000&@41|1|0|,|1| @9|B|o|t| 
*** 
../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_15.dump    
    2022-12-06 14:16:31.578449947 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_15.dump        
2022-12-06 14:11:27.621930666 +0000
***************
*** 0 ****
--- 1,8 ----
+ |<+0#4040ff13#ffffff0@2| +0#0000000&@2|i+0&#ffd7ff255|n|s|e|r|t| |b|e|l|o|w| 
|2| +0&#ffffff0@39
+ >"| |l|i|n|e| |1|0| @50
+ |~+0#4040ff13&| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ | +0#0000000&@41|1|0|,|1| @9|B|o|t| 
*** 
../vim-9.0.1018/src/testdir/dumps/Test_prop_above_below_smoothscroll_16.dump    
    2022-12-06 14:16:31.582449953 +0000
--- src/testdir/dumps/Test_prop_above_below_smoothscroll_16.dump        
2022-12-06 14:11:28.777933164 +0000
***************
*** 0 ****
--- 1,8 ----
+ >"+0&#ffffff0| |l|i|n|e| |1|0| @50
+ |~+0#4040ff13&| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ |~| @58
+ | +0#0000000&@41|1|0|,|1| @9|B|o|t| 
*** ../vim-9.0.1018/src/version.c       2022-12-06 09:11:34.338527750 +0000
--- src/version.c       2022-12-06 10:54:27.180195040 +0000
***************
*** 697,698 ****
--- 697,700 ----
  {   /* Add new patch number below this line */
+ /**/
+     1019,
  /**/

-- 
"Marriage is the process of finding out what kind of man your wife
would have preferred"

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            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/20221206141825.D42031C07A0%40moolenaar.net.

Raspunde prin e-mail lui