]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.2.0146: wrong indent when 'showbreak' and 'breakindent' are set v8.2.0146
authorBram Moolenaar <Bram@vim.org>
Thu, 23 Jan 2020 18:59:22 +0000 (19:59 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 23 Jan 2020 18:59:22 +0000 (19:59 +0100)
Problem:    Wrong indent when 'showbreak' and 'breakindent' are set and
            'briopt' includes "sbr".
Solution:   Reset "need_showbreak" where needed. (Ken Takata, closes #5523)

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

index 3e8b8b9500e2a3b8bae6a7c8ec619b1d7d6bb94a..4723915830df1145e6892a8d7cbc6e17db0faa8a 100644 (file)
@@ -1176,6 +1176,8 @@ win_line(
                    c_final = NUL;
                    n_extra = get_breakindent_win(wp,
                                       ml_get_buf(wp->w_buffer, lnum, FALSE));
+                   if (wp->w_skipcol > 0 && wp->w_p_wrap)
+                       need_showbreak = FALSE;
                    // Correct end of highlighted area for 'breakindent',
                    // required when 'linebreak' is also set.
                    if (tocol == vcol)
@@ -1222,7 +1224,8 @@ win_line(
                    c_extra = NUL;
                    c_final = NUL;
                    n_extra = (int)STRLEN(sbr);
-                   need_showbreak = FALSE;
+                   if (wp->w_skipcol == 0 || !wp->w_p_wrap)
+                       need_showbreak = FALSE;
                    vcol_sbr = vcol + MB_CHARLEN(sbr);
                    // Correct end of highlighted area for 'showbreak',
                    // required when 'linebreak' is also set.
index ee61cbc9db9ddf42ae5aeee6869ae9bf6cf0e68c..f7cfb4e90b4a19e9ac3d96867a808ee8f30c0418 100644 (file)
@@ -658,3 +658,29 @@ func Test_breakindent18_vartabs()
   call s:close_windows('set breakindent& list& listchars&')
 endfunc
 
+func Test_breakindent19_sbr_nextpage()
+  let s:input = ""
+  call s:test_windows('setl breakindent briopt=shift:2,sbr,min:18 sbr=>')
+  call setline(1, repeat('a', 200))
+  norm! 1gg
+  redraw!
+  let lines = s:screen_lines(1, 20)
+  let expect = [
+       \ "aaaaaaaaaaaaaaaaaaaa",
+       \ "> aaaaaaaaaaaaaaaaaa",
+       \ "> aaaaaaaaaaaaaaaaaa",
+       \ ]
+  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 = [
+       \ "> aaaaaaaaaaaaaaaaaa",
+       \ "> aaaaaaaaaaaaaaaaaa",
+       \ "> aaaaaaaaaaaaaaaaaa",
+       \ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows('set breakindent& briopt& sbr&')
+endfunc
index fda985ff3248c2362410aa242ee226eb4fe1278c..21f394eba0c04ef14d3809e17d4341e6a8c2d3a2 100644 (file)
@@ -742,6 +742,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    146,
 /**/
     145,
 /**/