diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/nvim/testdir/test_normal.vim | 15 | ||||
| -rw-r--r-- | src/nvim/testdir/test_textformat.vim | 201 | 
2 files changed, 216 insertions, 0 deletions
| diff --git a/src/nvim/testdir/test_normal.vim b/src/nvim/testdir/test_normal.vim index ad6d325510..7a846e5ea0 100644 --- a/src/nvim/testdir/test_normal.vim +++ b/src/nvim/testdir/test_normal.vim @@ -222,6 +222,21 @@ func Test_normal05_formatexpr_setopt()    set formatexpr=  endfunc +" When 'formatexpr' returns non-zero, internal formatting is used. +func Test_normal_formatexpr_returns_nonzero() +  new +  call setline(1, ['one', 'two']) +  func! Format() +    return 1 +  endfunc +  setlocal formatexpr=Format() +  normal VGgq +  call assert_equal(['one two'], getline(1, '$')) +  setlocal formatexpr= +  delfunc Format +  close! +endfunc +  func Test_normal06_formatprg()    " basic test for formatprg    " only test on non windows platform diff --git a/src/nvim/testdir/test_textformat.vim b/src/nvim/testdir/test_textformat.vim index 74d6bfeb44..64b873c3c3 100644 --- a/src/nvim/testdir/test_textformat.vim +++ b/src/nvim/testdir/test_textformat.vim @@ -940,4 +940,205 @@ func Test_substitute()    call assert_equal('a1a2a3a', substitute('123', '\zs', 'a', 'g'))  endfunc +" Test for 'a' and 'w' flags in 'formatoptions' +func Test_fo_a_w() +  new +  setlocal fo+=aw tw=10 +  call feedkeys("iabc abc a abc\<Esc>k0weade", 'xt') +  call assert_equal(['abc abcde ', 'a abc'], getline(1, '$')) + +  " Test for 'a', 'w' and '1' options. +  setlocal textwidth=0 +  setlocal fo=1aw +  %d +  call setline(1, '. foo') +  normal 72ig +  call feedkeys('a uu uu uu', 'xt') +  call assert_equal('g uu uu ', getline(1)[-8:]) +  call assert_equal(['uu. foo'], getline(2, '$')) + +  %bw! +endfunc + +" Test for formatting lines using gq in visual mode +func Test_visual_gq_format() +  new +  call setline(1, ['one two three four', 'five six', 'one two']) +  setl textwidth=10 +  call feedkeys('ggv$jj', 'xt') +  redraw! +  normal gq +  %d +  call setline(1, ['one two three four', 'five six', 'one two']) +  normal G$ +  call feedkeys('v0kk', 'xt') +  redraw! +  normal gq +  setl textwidth& +  close! +endfunc + +" Test for 'n' flag in 'formatoptions' to format numbered lists +func Test_fo_n() +  new +  setlocal autoindent +  setlocal textwidth=12 +  setlocal fo=n +  call setline(1, ['  1) one two three four', '  2) two']) +  normal gggqG +  call assert_equal(['  1) one two', '     three', '     four', '  2) two'], +        \ getline(1, '$')) +  close! +endfunc + +" Test for 'formatlistpat' option +func Test_formatlistpat() +  new +  setlocal autoindent +  setlocal textwidth=10 +  setlocal fo=n +  setlocal formatlistpat=^\\s*-\\s* +  call setline(1, ['  - one two three', '  - two']) +  normal gggqG +  call assert_equal(['  - one', '    two', '    three', '  - two'], +        \ getline(1, '$')) +  close! +endfunc + +" Test for the 'b' and 'v' flags in 'formatoptions' +" Text should wrap only if a space character is inserted at or before +" 'textwidth' +func Test_fo_b() +  new +  setlocal textwidth=20 + +  setlocal formatoptions=t +  call setline(1, 'one two three four') +  call feedkeys('Amore', 'xt') +  call assert_equal(['one two three', 'fourmore'], getline(1, '$')) + +  setlocal formatoptions=bt +  %d +  call setline(1, 'one two three four') +  call feedkeys('Amore five', 'xt') +  call assert_equal(['one two three fourmore five'], getline(1, '$')) + +  setlocal formatoptions=bt +  %d +  call setline(1, 'one two three four') +  call feedkeys('A five', 'xt') +  call assert_equal(['one two three four', 'five'], getline(1, '$')) + +  setlocal formatoptions=vt +  %d +  call setline(1, 'one two three four') +  call feedkeys('Amore five', 'xt') +  call assert_equal(['one two three fourmore', 'five'], getline(1, '$')) + +  close! +endfunc + +" Test for the '1' flag in 'formatoptions'. Don't wrap text after a one letter +" word. +func Test_fo_1() +  new +  setlocal textwidth=20 + +  setlocal formatoptions=t +  call setline(1, 'one two three four') +  call feedkeys('A a bird', 'xt') +  call assert_equal(['one two three four a', 'bird'], getline(1, '$')) + +  %d +  setlocal formatoptions=t1 +  call setline(1, 'one two three four') +  call feedkeys('A a bird', 'xt') +  call assert_equal(['one two three four', 'a bird'], getline(1, '$')) + +  close! +endfunc + +" Test for 'l' flag in 'formatoptions'. When starting insert mode, if a line +" is longer than 'textwidth', then it is not broken. +func Test_fo_l() +  new +  setlocal textwidth=20 + +  setlocal formatoptions=t +  call setline(1, 'one two three four five') +  call feedkeys('A six', 'xt') +  call assert_equal(['one two three four', 'five six'], getline(1, '$')) + +  %d +  setlocal formatoptions=tl +  call setline(1, 'one two three four five') +  call feedkeys('A six', 'xt') +  call assert_equal(['one two three four five six'], getline(1, '$')) + +  close! +endfunc + +" Test for the '2' flag in 'formatoptions' +func Test_fo_2() +  new +  setlocal autoindent +  setlocal formatoptions=t2 +  setlocal textwidth=30 +  call setline(1, ["\tfirst line of a paragraph.", +        \ "second line of the same paragraph.", +        \ "third line."]) +  normal gggqG +  call assert_equal(["\tfirst line of a", +        \ "paragraph.  second line of the", +        \ "same paragraph.  third line."], getline(1, '$')) +  close! +endfunc + +" Test for formatting lines where only the first line has a comment. +func Test_fo_gq_with_firstline_comment() +  new +  setlocal formatoptions=tcq +  call setline(1, ['- one two', 'three']) +  normal gggqG +  call assert_equal(['- one two three'], getline(1, '$')) + +  %d +  call setline(1, ['- one', '- two']) +  normal gggqG +  call assert_equal(['- one', '- two'], getline(1, '$')) +  close! +endfunc + +" Test for trying to join a comment line with a non-comment line +func Test_join_comments() +  new +  call setline(1, ['one', '/* two */', 'three']) +  normal gggqG +  call assert_equal(['one', '/* two */', 'three'], getline(1, '$')) +  close! +endfunc + +" Test for using 'a' in 'formatoptions' with comments +func Test_autoformat_comments() +  new +  setlocal formatoptions+=a +  call feedkeys("a- one\n- two\n", 'xt') +  call assert_equal(['- one', '- two', ''], getline(1, '$')) + +  %d +  call feedkeys("a\none\n", 'xt') +  call assert_equal(['', 'one', ''], getline(1, '$')) + +  setlocal formatoptions+=aw +  %d +  call feedkeys("aone \ntwo\n", 'xt') +  call assert_equal(['one two', ''], getline(1, '$')) + +  %d +  call feedkeys("aone\ntwo\n", 'xt') +  call assert_equal(['one', 'two', ''], getline(1, '$')) + +  close! +endfunc +  " vim: shiftwidth=2 sts=2 expandtab | 
