]> granicus.if.org Git - vim/commitdiff
patch 9.0.0358: 'breakindent' does not indent non-lists v9.0.0358
authorMaxim Kim <habamax@gmail.com>
Fri, 2 Sep 2022 13:08:53 +0000 (14:08 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 2 Sep 2022 13:08:53 +0000 (14:08 +0100)
Problem:    'breakindent' does not indent non-lists with
            "breakindentopt=list:-1".
Solution:   Adjust indent computation. (Maxim Kim, closes #11038)

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

index d7a2e550ad54d57a63a86537563002441b2c8c59..134336c12de559534b16d1a1b90b73ad80b72534 100644 (file)
@@ -998,7 +998,7 @@ get_breakindent_win(
                    if (wp->w_briopt_list > 0)
                        prev_list = wp->w_briopt_list;
                    else
-                       prev_list = (*regmatch.endp - *regmatch.startp);
+                       prev_indent = (*regmatch.endp - *regmatch.startp);
                }
                vim_regfree(regmatch.regprog);
            }
@@ -1017,13 +1017,8 @@ get_breakindent_win(
     bri += win_col_off2(wp);
 
     // add additional indent for numbered lists
-    if (wp->w_briopt_list != 0)
-    {
-       if (wp->w_briopt_list > 0)
-           bri += prev_list;
-       else
-           bri = prev_list;
-    }
+    if (wp->w_briopt_list > 0)
+       bri += prev_list;
 
     // indent minus the length of the showbreak string
     if (wp->w_briopt_sbr)
index 7163f25bd3da4cd866c57cd604ffd71b04e6c0e7..1c02294bc4299e6c8dc0ec516a243e3752114a97 100644 (file)
@@ -818,7 +818,7 @@ func Test_breakindent20_list()
 
   " check formatlistpat indent with different list level
   " showbreak and sbr
-  setl briopt=min:5,sbr,list:-1,shift:2
+  setl briopt=min:5,sbr,list:-1
   setl showbreak=>
   redraw!
   let expect = [
@@ -831,6 +831,44 @@ func Test_breakindent20_list()
        \ ]
   let lines = s:screen_lines2(1, 6, 20)
   call s:compare_lines(expect, lines)
+
+  " check formatlistpat indent with different list level
+  " showbreak sbr and shift
+  setl briopt=min:5,sbr,list:-1,shift:2
+  setl showbreak=>
+  redraw!
+  let expect = [
+       \ "* Congress shall    ",
+       \ ">   make no law     ",
+       \ "*** Congress shall  ",
+       \ ">     make no law   ",
+       \ "**** Congress shall ",
+       \ ">      make no law  ",
+       \ ]
+  let lines = s:screen_lines2(1, 6, 20)
+  call s:compare_lines(expect, lines)
+
+  " check breakindent works if breakindentopt=list:-1
+  " for a non list content
+  %delete _
+  call setline(1, ['  Congress shall make no law',
+        \ '    Congress shall make no law',
+        \ '     Congress shall make no law'])
+  norm! 1gg
+  setl briopt=min:5,list:-1
+  setl showbreak=
+  redraw!
+  let expect = [
+       \ "  Congress shall    ",
+       \ "  make no law       ",
+       \ "    Congress shall  ",
+       \ "    make no law     ",
+       \ "     Congress shall ",
+       \ "     make no law    ",
+       \ ]
+  let lines = s:screen_lines2(1, 6, 20)
+  call s:compare_lines(expect, lines)
+
   call s:close_windows('set breakindent& briopt& linebreak& list& listchars& showbreak&')
 endfunc
 
index 9d05dc30497c39182d80a3b8e42a43158025596f..202c46db80b01aaa56ad712454f1eb71b12ad646 100644 (file)
@@ -707,6 +707,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    358,
 /**/
     357,
 /**/