Patch 8.2.3198
Problem:    Cannot use 'formatlistpat' for breakindent.
Solution:   Use a negative list indent. (Maxim Kim, closes #8594)
Files:      runtime/doc/options.txt, src/indent.c,
            src/testdir/test_breakindent.vim


*** ../vim-8.2.3197/runtime/doc/options.txt     2021-07-14 20:00:24.545690127 
+0200
--- runtime/doc/options.txt     2021-07-22 11:29:26.372988449 +0200
***************
*** 1326,1334 ****
                            continuation (positive).
                sbr         Display the 'showbreak' value before applying the
                            additional indent.
!               list:{n}    Adds an additional indent for lines that match a 
                            numbered or bulleted list (using the
                            'formatlistpat' setting).
        The default value for min is 20, shift and list is 0.
  
                                                *'browsedir'* *'bsdir'*
--- 1326,1336 ----
                            continuation (positive).
                sbr         Display the 'showbreak' value before applying the
                            additional indent.
!               list:{n}    Adds an additional indent for lines that match a
                            numbered or bulleted list (using the
                            'formatlistpat' setting).
+               list:-1     Uses the length of a match with 'formatlistpat'
+                           for indentation.
        The default value for min is 20, shift and list is 0.
  
                                                *'browsedir'* *'bsdir'*
*** ../vim-8.2.3197/src/indent.c        2021-07-14 20:00:24.545690127 +0200
--- src/indent.c        2021-07-22 11:25:46.613519880 +0200
***************
*** 941,955 ****
      }
      bri = prev_indent + wp->w_briopt_shift;
  
-     // indent minus the length of the showbreak string
-     if (wp->w_briopt_sbr)
-       bri -= vim_strsize(get_showbreak_value(wp));
- 
      // Add offset for number column, if 'n' is in 'cpoptions'
      bri += win_col_off2(wp);
  
      // add additional indent for numbered lists
!     if (wp->w_briopt_list > 0)
      {
        regmatch_T          regmatch;
  
--- 941,951 ----
      }
      bri = prev_indent + wp->w_briopt_shift;
  
      // Add offset for number column, if 'n' is in 'cpoptions'
      bri += win_col_off2(wp);
  
      // add additional indent for numbered lists
!     if (wp->w_briopt_list != 0)
      {
        regmatch_T          regmatch;
  
***************
*** 958,968 ****
        if (regmatch.regprog != NULL)
        {
            if (vim_regexec(&regmatch, line, 0))
!               bri += wp->w_briopt_list;
            vim_regfree(regmatch.regprog);
        }
      }
  
      // never indent past left window margin
      if (bri < 0)
        bri = 0;
--- 954,974 ----
        if (regmatch.regprog != NULL)
        {
            if (vim_regexec(&regmatch, line, 0))
!           {
!               if (wp->w_briopt_list > 0)
!                   bri += wp->w_briopt_list;
!               else
!                   bri = (*regmatch.endp - *regmatch.startp);
!           }
            vim_regfree(regmatch.regprog);
        }
      }
  
+     // indent minus the length of the showbreak string
+     if (wp->w_briopt_sbr)
+       bri -= vim_strsize(get_showbreak_value(wp));
+ 
+ 
      // never indent past left window margin
      if (bri < 0)
        bri = 0;
*** ../vim-8.2.3197/src/testdir/test_breakindent.vim    2021-07-14 
20:00:24.545690127 +0200
--- src/testdir/test_breakindent.vim    2021-07-22 11:25:46.613519880 +0200
***************
*** 759,764 ****
--- 759,765 ----
        \ ]
    let lines = s:screen_lines2(1, 9, 20)
    call s:compare_lines(expect, lines)
+ 
    " reset linebreak option
    " Note: it indents by one additional
    " space, because of the leading space.
***************
*** 775,781 ****
    let lines = s:screen_lines2(1, 6, 20)
    call s:compare_lines(expect, lines)
  
!   call s:close_windows('set breakindent& briopt& linebreak& list& listchars&')
  endfunc
  
  " vim: shiftwidth=2 sts=2 expandtab
--- 776,834 ----
    let lines = s:screen_lines2(1, 6, 20)
    call s:compare_lines(expect, lines)
  
!   " check formatlistpat indent
!   setl briopt=min:5,list:-1
!   setl linebreak list&vim listchars&vim
!   let &l:flp = '^\s*\d\+\.\?[\]:)}\t ]\s*'
!   redraw!
!   let expect = [
!       \ "  1.  Congress      ",
!       \ "      shall make no ",
!       \ "      law           ",
!       \ "  2.) Congress      ",
!       \ "      shall make no ",
!       \ "      law           ",
!       \ "  3.] Congress      ",
!       \ "      shall make no ",
!       \ "      law           ",
!       \ ]
!   let lines = s:screen_lines2(1, 9, 20)
!   call s:compare_lines(expect, lines)
!   " check formatlistpat indent with different list levels
!   let &l:flp = '^\s*\*\+\s\+'
!   redraw!
!   %delete _
!   call setline(1, ['* Congress shall make no law',
!         \ '*** Congress shall make no law',
!         \ '**** Congress shall make no law'])
!   norm! 1gg
!   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 formatlistpat indent with different list level
!   " showbreak and sbr
!   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)
!   call s:close_windows('set breakindent& briopt& linebreak& list& listchars& 
showbreak&')
  endfunc
  
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3197/src/version.c       2021-07-21 22:20:30.066401728 +0200
--- src/version.c       2021-07-22 11:27:43.409237984 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3198,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
200. You really believe in the concept of a "paperless" office.

 /// 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/202107220947.16M9lbhH227398%40masaka.moolenaar.net.

Raspunde prin e-mail lui