aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/charset.c7
-rw-r--r--src/nvim/option.c24
-rw-r--r--src/nvim/testdir/test_breakindent.in18
-rw-r--r--src/nvim/testdir/test_breakindent.ok3
-rw-r--r--src/nvim/version.c4
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