diff options
| -rw-r--r-- | src/nvim/move.c | 2 | ||||
| -rw-r--r-- | src/nvim/screen.c | 6 | ||||
| -rw-r--r-- | src/nvim/testdir/test_breakindent.vim | 49 | ||||
| -rw-r--r-- | src/nvim/testdir/test_cursor_func.vim | 15 | ||||
| -rw-r--r-- | src/nvim/testdir/test_match.vim | 31 | ||||
| -rw-r--r-- | src/nvim/testdir/test_options.vim | 7 | 
6 files changed, 109 insertions, 1 deletions
diff --git a/src/nvim/move.c b/src/nvim/move.c index d4f82bc601..8a8a639a52 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -996,7 +996,7 @@ void textpos2screenpos(win_T *wp, pos_T *pos, int *rowp, int *scolp,      col -= wp->w_leftcol; -    if (col >= 0 && col < width) { +    if (col >= 0 && col < wp->w_width) {        coloff = col - scol + (local ? 0 : wp->w_wincol) + 1;      } else {        scol = ccol = ecol = 0; diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 9e958663aa..ba52f5b489 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2994,6 +2994,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;            } diff --git a/src/nvim/testdir/test_breakindent.vim b/src/nvim/testdir/test_breakindent.vim index 5675bf74dd..a4c1f62a43 100644 --- a/src/nvim/testdir/test_breakindent.vim +++ b/src/nvim/testdir/test_breakindent.vim @@ -373,3 +373,52 @@ func Test_breakindent19_sbr_nextpage()    call s:compare_lines(expect, lines)    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/nvim/testdir/test_cursor_func.vim b/src/nvim/testdir/test_cursor_func.vim index e8e561dfd8..2e190911b2 100644 --- a/src/nvim/testdir/test_cursor_func.vim +++ b/src/nvim/testdir/test_cursor_func.vim @@ -93,3 +93,18 @@ func Test_screenpos()    close    bwipe!  endfunc + +func Test_screenpos_number() +  rightbelow new +  rightbelow 73vsplit +  call setline (1, repeat('x', 66)) +  setlocal number +  redraw +  let winid = win_getid() +  let [winrow, wincol] = win_screenpos(winid) +  let pos = screenpos(winid, 1, 66) +  call assert_equal(winrow, pos.row) +  call assert_equal(wincol + 66 + 3, pos.col) +  close +  bwipe! +endfunc diff --git a/src/nvim/testdir/test_match.vim b/src/nvim/testdir/test_match.vim index 7a1894bc16..09448ca71b 100644 --- a/src/nvim/testdir/test_match.vim +++ b/src/nvim/testdir/test_match.vim @@ -149,6 +149,21 @@ function Test_match()    highlight MyGroup3 NONE  endfunc +func Test_match_error() +  call assert_fails('match Error', 'E475:') +  call assert_fails('match Error /', 'E475:') +  call assert_fails('4match Error /x/', 'E476:') +  call assert_fails('match Error /x/ x', 'E488:') +endfunc + +func Test_matchadd_error() +  call assert_fails("call matchadd('GroupDoesNotExist', 'X')", 'E28:') +  call assert_fails("call matchadd('Search', '\\(')", 'E475:') +  call assert_fails("call matchadd('Search', 'XXX', 1, 123, 1)", 'E715:') +  call assert_fails("call matchadd('Error', 'XXX', 1, 3)", 'E798:') +  call assert_fails("call matchadd('Error', 'XXX', 1, 0)", 'E799:') +endfunc +  func Test_matchaddpos()    syntax on    set hlsearch @@ -263,6 +278,17 @@ func Test_matchaddpos_using_negative_priority()    set hlsearch&  endfunc +func Test_matchaddpos_error() +  call assert_fails("call matchaddpos('Error', 1)", 'E686:') +  call assert_fails("call matchaddpos('Error', [1], 1, 1)", 'E798:') +  call assert_fails("call matchaddpos('Error', [1], 1, 2)", 'E798:') +  call assert_fails("call matchaddpos('Error', [1], 1, 0)", 'E799:') +  call assert_fails("call matchaddpos('Error', [1], 1, 123, 1)", 'E715:') +  call assert_fails("call matchaddpos('Error', [1], 1, 5, {'window':12345})", 'E957:') +  " Why doesn't the following error have an error code E...? +  call assert_fails("call matchaddpos('Error', [{}])", 'E5031:') +endfunc +  func OtherWindowCommon()    let lines =<< trim END      call setline(1, 'Hello Vim world') @@ -288,6 +314,11 @@ func Test_matchdelete_other_window()    call delete('XscriptMatchCommon')  endfunc +func Test_matchdelete_error() +  call assert_fails("call matchdelete(0)", 'E802:') +  call assert_fails("call matchdelete(1, -1)", 'E957:') +endfunc +  func Test_matchclear_other_window()    if !CanRunVimInTerminal()      throw 'Skipped: cannot make screendumps' diff --git a/src/nvim/testdir/test_options.vim b/src/nvim/testdir/test_options.vim index 41f1710faf..400af33c58 100644 --- a/src/nvim/testdir/test_options.vim +++ b/src/nvim/testdir/test_options.vim @@ -42,6 +42,13 @@ function Test_wildchar()    set wildchar&  endfunction +func Test_wildoptions() +  set wildoptions= +  set wildoptions+=tagfile +  set wildoptions+=tagfile +  call assert_equal('tagfile', &wildoptions) +endfunc +  function! Test_options()    let caught = 'ok'    try  | 
