]> granicus.if.org Git - vim/commitdiff
patch 8.2.0766: display error when using 'number' and 'breakindent' v8.2.0766
authorBram Moolenaar <Bram@vim.org>
Sat, 16 May 2020 12:07:39 +0000 (14:07 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 16 May 2020 12:07:39 +0000 (14:07 +0200)
Problem:    Display error when using 'number' and 'breakindent'.
Solution:   Adjust extra spaces in the first row. (Ken Takata, closes #6089,
            closes #5986)

src/drawline.c
src/testdir/test_breakindent.vim
src/version.c

index 8de307aa6e5f32e58b2214b0c4c9266ed11599b2..0a5a4bd502365dbdd50d8c68b09733eb655f8670 100644 (file)
@@ -1177,6 +1177,12 @@ win_line(
                    c_final = NUL;
                    n_extra = get_breakindent_win(wp,
                                       ml_get_buf(wp->w_buffer, lnum, FALSE));
+                   if (row == startrow)
+                   {
+                       n_extra -= win_col_off2(wp);
+                       if (n_extra < 0)
+                           n_extra = 0;
+                   }
                    if (wp->w_skipcol > 0 && wp->w_p_wrap && wp->w_briopt_sbr)
                        need_showbreak = FALSE;
                    // Correct end of highlighted area for 'breakindent',
index aea0572c305469716834048a004c263fe7a984c4..30c44f4dd660e482b8e1937040cf23bb4743c14a 100644 (file)
@@ -696,4 +696,51 @@ func Test_breakindent19_sbr_nextpage()
   call s:close_windows('set breakindent& briopt& sbr&')
 endfunc
 
+func Test_breakindent20_cpo_n_nextpage()
+  let s:input = ""
+  call s:test_windows('setl breakindent briopt=min:14 cpo+=n number')
+  call setline(1, repeat('a', 200))
+  norm! 1gg
+  redraw!
+  let lines = s:screen_lines(1, 20)
+  let expect = [
+       \ "  1 aaaaaaaaaaaaaaaa",
+       \ "    aaaaaaaaaaaaaaaa",
+       \ "    aaaaaaaaaaaaaaaa",
+       \ ]
+  call s:compare_lines(expect, lines)
+  " Scroll down one screen line
+  setl scrolloff=5
+  norm! 5gj
+  redraw!
+  let lines = s:screen_lines(1, 20)
+  let expect = [
+       \ "--1 aaaaaaaaaaaaaaaa",
+       \ "    aaaaaaaaaaaaaaaa",
+       \ "    aaaaaaaaaaaaaaaa",
+       \ ]
+  call s:compare_lines(expect, lines)
+
+  setl briopt+=shift:2
+  norm! 1gg
+  let lines = s:screen_lines(1, 20)
+  let expect = [
+       \ "  1 aaaaaaaaaaaaaaaa",
+       \ "      aaaaaaaaaaaaaa",
+       \ "      aaaaaaaaaaaaaa",
+       \ ]
+  call s:compare_lines(expect, lines)
+  " Scroll down one screen line
+  norm! 5gj
+  let lines = s:screen_lines(1, 20)
+  let expect = [
+       \ "--1   aaaaaaaaaaaaaa",
+       \ "      aaaaaaaaaaaaaa",
+       \ "      aaaaaaaaaaaaaa",
+       \ ]
+  call s:compare_lines(expect, lines)
+
+  call s:close_windows('set breakindent& briopt& cpo& number&')
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index a65aaf2c6fe69aaf547a46c892f081e6fbb6c137..f0b0bec19c3c5e0a7e40a884bd9aba6b3d53401b 100644 (file)
@@ -746,6 +746,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    766,
 /**/
     765,
 /**/