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:
parent
92917069b1
commit
86ef815959
@ -1312,4 +1312,28 @@ func Test_textwdith_overflow()
|
|||||||
bw!
|
bw!
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -59,9 +59,11 @@ internal_format(
|
|||||||
int safe_tw = trim_to_int(8 * (vimlong_T)textwidth);
|
int safe_tw = trim_to_int(8 * (vimlong_T)textwidth);
|
||||||
#ifdef FEAT_LINEBREAK
|
#ifdef FEAT_LINEBREAK
|
||||||
int has_lbr = curwin->w_p_lbr;
|
int has_lbr = curwin->w_p_lbr;
|
||||||
|
int has_bri = curwin->w_p_bri;
|
||||||
|
|
||||||
// make sure win_lbr_chartabsize() counts correctly
|
// make sure win_lbr_chartabsize() counts correctly
|
||||||
curwin->w_p_lbr = FALSE;
|
curwin->w_p_lbr = FALSE;
|
||||||
|
curwin->w_p_bri = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// When 'ai' is off we don't want a space under the cursor to be
|
// When 'ai' is off we don't want a space under the cursor to be
|
||||||
@ -475,6 +477,7 @@ internal_format(
|
|||||||
|
|
||||||
#ifdef FEAT_LINEBREAK
|
#ifdef FEAT_LINEBREAK
|
||||||
curwin->w_p_lbr = has_lbr;
|
curwin->w_p_lbr = has_lbr;
|
||||||
|
curwin->w_p_bri = has_bri;
|
||||||
#endif
|
#endif
|
||||||
if (!format_only && haveto_redraw)
|
if (!format_only && haveto_redraw)
|
||||||
{
|
{
|
||||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
377,
|
||||||
/**/
|
/**/
|
||||||
376,
|
376,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user