diff options
-rw-r--r-- | src/nvim/charset.c | 7 | ||||
-rw-r--r-- | src/nvim/option.c | 24 | ||||
-rw-r--r-- | src/nvim/testdir/test_breakindent.in | 18 | ||||
-rw-r--r-- | src/nvim/testdir/test_breakindent.ok | 3 | ||||
-rw-r--r-- | src/nvim/version.c | 4 |
5 files changed, 36 insertions, 20 deletions
diff --git a/src/nvim/charset.c b/src/nvim/charset.c index 57c4aec395..e7ecf05880 100644 --- a/src/nvim/charset.c +++ b/src/nvim/charset.c @@ -1072,12 +1072,7 @@ int win_lbr_chartabsize(win_T *wp, char_u *line, char_u *s, colnr_T col, int *he if (wp->w_p_bri) added += get_breakindent_win(wp, line); - if (tab_corr) { - size += (added / wp->w_buffer->b_p_ts) * wp->w_buffer->b_p_ts; - } else { - size += added; - } - + size += added; if (col != 0) { added = 0; } diff --git a/src/nvim/option.c b/src/nvim/option.c index 5a389f37bf..14b26fbc34 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -3481,7 +3481,7 @@ static void didset_options(void) (void)compile_cap_prog(curwin->w_s); /* set cedit_key */ (void)check_cedit(); - briopt_check(); + briopt_check(curwin); } /* @@ -3818,7 +3818,7 @@ did_set_string_option ( } /* 'breakindentopt' */ else if (varp == &curwin->w_p_briopt) { - if (briopt_check() == FAIL) + if (briopt_check(curwin) == FAIL) errmsg = e_invarg; } /* @@ -6771,6 +6771,7 @@ void win_copy_options(win_T *wp_from, win_T *wp_to) copy_winopt(&wp_from->w_allbuf_opt, &wp_to->w_allbuf_opt); /* Is this right? */ wp_to->w_farsi = wp_from->w_farsi; + briopt_check(wp_to); } /* @@ -8143,16 +8144,15 @@ void find_mps_values(int *initc, int *findc, int *backwards, int switchit) } } -/* This is called when 'breakindentopt' is changed and when a window is - initialized */ -int briopt_check(void) +/// This is called when 'breakindentopt' is changed and when a window is +/// initialized +static bool briopt_check(win_T *wp) { - char_u *p; int bri_shift = 0; long bri_min = 20; bool bri_sbr = false; - p = curwin->w_p_briopt; + char_u *p = wp->w_p_briopt; while (*p != NUL) { if (STRNCMP(p, "shift:", 6) == 0 @@ -8172,15 +8172,15 @@ int briopt_check(void) bri_sbr = true; } if (*p != ',' && *p != NUL) - return FAIL; + return false; if (*p == ',') ++p; } - curwin->w_p_brishift = bri_shift; - curwin->w_p_brimin = bri_min; - curwin->w_p_brisbr = bri_sbr; + wp->w_p_brishift = bri_shift; + wp->w_p_brimin = bri_min; + wp->w_p_brisbr = bri_sbr; - return OK; + return true; } diff --git a/src/nvim/testdir/test_breakindent.in b/src/nvim/testdir/test_breakindent.in index 8f40e4f7e5..150c9430db 100644 --- a/src/nvim/testdir/test_breakindent.in +++ b/src/nvim/testdir/test_breakindent.in @@ -27,6 +27,7 @@ STARTTEST : $put =g:line1 : wincmd p :endfu +:set briopt=min:0 :let g:test="Test 1: Simple breakindent" :let line1=ScreenChar(8) :call DoRecordScreen() @@ -73,6 +74,23 @@ STARTTEST :let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times :$put =g:test :$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text), width) +:" +:" Test, that the string " a\tb\tc\td\te" is correctly +:" displayed in a 20 column wide window (see bug report +:" https://groups.google.com/d/msg/vim_dev/ZOdg2mc9c9Y/TT8EhFjEy0IJ +:only +:vert 20new +:set all& nocp breakindent briopt=min:10 +:call setline(1, [" a\tb\tc\td\te", " z y x w v"]) +:/^\s*a +fbgjyl:let line1 = @0 +:?^\s*z +fygjyl:let line2 = @0 +:quit! +:$put ='Test 12: breakindent with wrapping Tab' +:$put =line1 +:$put =line2 +:" :%w! test.out :qa! ENDTEST diff --git a/src/nvim/testdir/test_breakindent.ok b/src/nvim/testdir/test_breakindent.ok index 723cb25012..d89d424fb3 100644 --- a/src/nvim/testdir/test_breakindent.ok +++ b/src/nvim/testdir/test_breakindent.ok @@ -53,3 +53,6 @@ Test 4: Simple breakindent + min width: 18 Test 11: strdisplaywidth when breakindent is on strdisplaywidth: 46 == calculated: 64 +Test 12: breakindent with wrapping Tab +d +w diff --git a/src/nvim/version.c b/src/nvim/version.c index 5b30dd3de7..9943e2945f 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -248,8 +248,8 @@ static int included_patches[] = { //420 NA 419, 418, - //417, - //416, + 417, + 416, 415, 414, //413 NA |