0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.1.0377: Formatting text wrong when 'breakindent' is set

Problem:  formatting text wrong when 'breakindent' is set
          (Gary Johnson)
Solution: temporarily disable 'breakindent' option when formatting text,
          so that the breakindent is not wrongly taken into account for
          the line length

fixes: #14630
closes: #14637

Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Christian Brabandt 2024-04-27 11:55:08 +02:00
parent 92917069b1
commit 86ef815959
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
3 changed files with 29 additions and 0 deletions

View File

@ -1312,4 +1312,28 @@ func Test_textwdith_overflow()
bw!
endfunc
func Test_breakindent_reformat()
" Make sure textformatting uses the full width
" of the textwidth and does not consider the indent
" from breakindent into account when calculating the
" line length. Should break at tw 78 and not at 70
CheckOption breakindent
new
80vnew
39vnew
setl ai breakindent tw=78
let lorem = [
\ ' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam luctus',
\ ' lectus sodales, dictum augue vel, molestie augue. Duis sit amet',
\ ' rhoncus justo. Nullam posuere risus semper magna commodo scelerisque.',
\ ' Duis et venenatis sem. In rhoncus augue sed tempor mattis. Mauris id',
\ ' aliquet odio.']
call setline(1, lorem)
norm! gqap
call assert_equal(lorem, getline(1, '$'))
bw!
bw!
bw!
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -59,9 +59,11 @@ internal_format(
int safe_tw = trim_to_int(8 * (vimlong_T)textwidth);
#ifdef FEAT_LINEBREAK
int has_lbr = curwin->w_p_lbr;
int has_bri = curwin->w_p_bri;
// make sure win_lbr_chartabsize() counts correctly
curwin->w_p_lbr = FALSE;
curwin->w_p_bri = FALSE;
#endif
// When 'ai' is off we don't want a space under the cursor to be
@ -475,6 +477,7 @@ internal_format(
#ifdef FEAT_LINEBREAK
curwin->w_p_lbr = has_lbr;
curwin->w_p_bri = has_bri;
#endif
if (!format_only && haveto_redraw)
{

View File

@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
377,
/**/
376,
/**/