diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-05-16 14:07:39 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-05-16 14:07:39 +0200 |
commit | e882f7a73c8fa48707de71035eb0a7ccc6ac8548 (patch) | |
tree | 13145a03679860e11cf224731d2d8ddbb93eac07 | |
parent | fd615a3c901f59abddca27c6a09940be552c0f4d (diff) |
patch 8.2.0766: display error when using 'number' and 'breakindent'v8.2.0766
Problem: Display error when using 'number' and 'breakindent'.
Solution: Adjust extra spaces in the first row. (Ken Takata, closes #6089,
closes #5986)
-rw-r--r-- | src/drawline.c | 6 | ||||
-rw-r--r-- | src/testdir/test_breakindent.vim | 47 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 55 insertions, 0 deletions
diff --git a/src/drawline.c b/src/drawline.c index 8de307aa6e..0a5a4bd502 100644 --- a/src/drawline.c +++ b/src/drawline.c @@ -1177,6 +1177,12 @@ win_line( c_final = NUL; n_extra = get_breakindent_win(wp, ml_get_buf(wp->w_buffer, lnum, FALSE)); + if (row == startrow) + { + n_extra -= win_col_off2(wp); + if (n_extra < 0) + n_extra = 0; + } if (wp->w_skipcol > 0 && wp->w_p_wrap && wp->w_briopt_sbr) need_showbreak = FALSE; // Correct end of highlighted area for 'breakindent', diff --git a/src/testdir/test_breakindent.vim b/src/testdir/test_breakindent.vim index aea0572c30..30c44f4dd6 100644 --- a/src/testdir/test_breakindent.vim +++ b/src/testdir/test_breakindent.vim @@ -696,4 +696,51 @@ func Test_breakindent19_sbr_nextpage() call s:close_windows('set breakindent& briopt& sbr&') endfunc +func Test_breakindent20_cpo_n_nextpage() + let s:input = "" + call s:test_windows('setl breakindent briopt=min:14 cpo+=n number') + call setline(1, repeat('a', 200)) + norm! 1gg + redraw! + let lines = s:screen_lines(1, 20) + let expect = [ + \ " 1 aaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaaaa", + \ ] + 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 = [ + \ "--1 aaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaaaa", + \ ] + call s:compare_lines(expect, lines) + + setl briopt+=shift:2 + norm! 1gg + let lines = s:screen_lines(1, 20) + let expect = [ + \ " 1 aaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaa", + \ ] + call s:compare_lines(expect, lines) + " Scroll down one screen line + norm! 5gj + let lines = s:screen_lines(1, 20) + let expect = [ + \ "--1 aaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaa", + \ ] + call s:compare_lines(expect, lines) + + call s:close_windows('set breakindent& briopt& cpo& number&') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index a65aaf2c6f..f0b0bec19c 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 766, +/**/ 765, /**/ 764, |