summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-01-23 19:59:22 +0100
committerBram Moolenaar <Bram@vim.org>2020-01-23 19:59:22 +0100
commitdfede9a70b3136988a8f262742101ad5cb98f46d (patch)
tree7274266f12167dfe2ff671b2faa4be166abccda3
parent2c02d3843a103826a3eb44357eaab09b7deb256b (diff)
downloadvim-git-dfede9a70b3136988a8f262742101ad5cb98f46d.tar.gz
patch 8.2.0146: wrong indent when 'showbreak' and 'breakindent' are setv8.2.0146
Problem: Wrong indent when 'showbreak' and 'breakindent' are set and 'briopt' includes "sbr". Solution: Reset "need_showbreak" where needed. (Ken Takata, closes #5523)
-rw-r--r--src/drawline.c5
-rw-r--r--src/testdir/test_breakindent.vim26
-rw-r--r--src/version.c2
3 files changed, 32 insertions, 1 deletions
diff --git a/src/drawline.c b/src/drawline.c
index 3e8b8b950..472391583 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1176,6 +1176,8 @@ win_line(
c_final = NUL;
n_extra = get_breakindent_win(wp,
ml_get_buf(wp->w_buffer, lnum, FALSE));
+ if (wp->w_skipcol > 0 && wp->w_p_wrap)
+ need_showbreak = FALSE;
// Correct end of highlighted area for 'breakindent',
// required when 'linebreak' is also set.
if (tocol == vcol)
@@ -1222,7 +1224,8 @@ win_line(
c_extra = NUL;
c_final = NUL;
n_extra = (int)STRLEN(sbr);
- need_showbreak = FALSE;
+ if (wp->w_skipcol == 0 || !wp->w_p_wrap)
+ need_showbreak = FALSE;
vcol_sbr = vcol + MB_CHARLEN(sbr);
// Correct end of highlighted area for 'showbreak',
// required when 'linebreak' is also set.
diff --git a/src/testdir/test_breakindent.vim b/src/testdir/test_breakindent.vim
index ee61cbc9d..f7cfb4e90 100644
--- a/src/testdir/test_breakindent.vim
+++ b/src/testdir/test_breakindent.vim
@@ -658,3 +658,29 @@ func Test_breakindent18_vartabs()
call s:close_windows('set breakindent& list& listchars&')
endfunc
+func Test_breakindent19_sbr_nextpage()
+ let s:input = ""
+ call s:test_windows('setl breakindent briopt=shift:2,sbr,min:18 sbr=>')
+ call setline(1, repeat('a', 200))
+ norm! 1gg
+ redraw!
+ let lines = s:screen_lines(1, 20)
+ let expect = [
+ \ "aaaaaaaaaaaaaaaaaaaa",
+ \ "> aaaaaaaaaaaaaaaaaa",
+ \ "> aaaaaaaaaaaaaaaaaa",
+ \ ]
+ call s:compare_lines(expect, lines)
+ " Scroll down one screen line
+ setl scrolloff=5
+ norm! 5gj
+ redraw!
+ let lines = s:screen_lines(1, 20)
+ let expect = [
+ \ "> aaaaaaaaaaaaaaaaaa",
+ \ "> aaaaaaaaaaaaaaaaaa",
+ \ "> aaaaaaaaaaaaaaaaaa",
+ \ ]
+ call s:compare_lines(expect, lines)
+ call s:close_windows('set breakindent& briopt& sbr&')
+endfunc
diff --git a/src/version.c b/src/version.c
index fda985ff3..21f394eba 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 146,
+/**/
145,
/**/
144,