Mercurial > vim
changeset 35065:6cb7e7ee8477 v9.1.0377
patch 9.1.0377: Formatting text wrong when 'breakindent' is set
Commit: https://github.com/vim/vim/commit/86ef815959d18961a3d21cee07ab724e618d3a7b
Author: Christian Brabandt <cb@256bit.org>
Date: Sat Apr 27 11:55:08 2024 +0200
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 27 Apr 2024 12:00:06 +0200 |
parents | deb9cd1f5e3f |
children | 440452ed0dc3 |
files | src/testdir/test_textformat.vim src/textformat.c src/version.c |
diffstat | 3 files changed, 29 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_textformat.vim +++ b/src/testdir/test_textformat.vim @@ -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
--- a/src/textformat.c +++ b/src/textformat.c @@ -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) {