diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-01-23 19:59:22 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-01-23 19:59:22 +0100 |
commit | dfede9a70b3136988a8f262742101ad5cb98f46d (patch) | |
tree | 7274266f12167dfe2ff671b2faa4be166abccda3 | |
parent | 2c02d3843a103826a3eb44357eaab09b7deb256b (diff) | |
download | vim-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.c | 5 | ||||
-rw-r--r-- | src/testdir/test_breakindent.vim | 26 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |