Patch 8.2.3198

5 views
Skip to first unread message

Bram Moolenaar

unread,
Jul 22, 2021, 5:47:43 AM7/22/21
to vim...@googlegroups.com

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 -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages