summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-05-16 14:07:39 +0200
committerBram Moolenaar <Bram@vim.org>2020-05-16 14:07:39 +0200
commite882f7a73c8fa48707de71035eb0a7ccc6ac8548 (patch)
tree13145a03679860e11cf224731d2d8ddbb93eac07
parentfd615a3c901f59abddca27c6a09940be552c0f4d (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.c6
-rw-r--r--src/testdir/test_breakindent.vim47
-rw-r--r--src/version.c2
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,