Mercurial > vim
view src/testdir/test_textformat.vim @ 20215:ca9c2be2334a v8.2.0663
patch 8.2.0663: not all systemd temp files are recognized
Commit: https://github.com/vim/vim/commit/512fe833c3988bfe0de22135aef67faf51927a0e
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Apr 29 23:02:40 2020 +0200
patch 8.2.0663: not all systemd temp files are recognized
Problem: Not all systemd temp files are recognized.
Solution: Add two more patterns. (Jamie Macdonald, closes https://github.com/vim/vim/issues/6003)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 29 Apr 2020 23:15:03 +0200 |
parents | a4bd28e2cf1d |
children | aafedd368f40 |
line wrap: on
line source
" Tests for the various 'formatoptions' settings source check.vim func Test_text_format() enew! setl noai tw=2 fo=t call append('$', [ \ '{', \ ' ', \ '', \ '}']) exe "normal /^{/+1\n0" normal gRa b let lnum = line('.') call assert_equal([ \ 'a', \ 'b'], getline(lnum - 1, lnum)) normal ggdG setl ai tw=2 fo=tw call append('$', [ \ '{', \ 'a b ', \ '', \ 'a ', \ '}']) exe "normal /^{/+1\n0" normal gqgqjjllab let lnum = line('.') call assert_equal([ \ 'a ', \ 'b ', \ '', \ 'a ', \ 'b'], getline(lnum - 4, lnum)) normal ggdG setl tw=3 fo=t call append('$', [ \ '{', \ "a \<C-A>", \ '}']) exe "normal /^{/+1\n0" exe "normal gqgqo\na \<C-V>\<C-A>" let lnum = line('.') call assert_equal([ \ 'a', \ "\<C-A>", \ '', \ 'a', \ "\<C-A>"], getline(lnum - 4, lnum)) normal ggdG setl tw=2 fo=tcq1 comments=:# call append('$', [ \ '{', \ 'a b', \ '#a b', \ '}']) exe "normal /^{/+1\n0" exe "normal gqgqjgqgqo\na b\n#a b" let lnum = line('.') call assert_equal([ \ 'a b', \ '#a b', \ '', \ 'a b', \ '#a b'], getline(lnum - 4, lnum)) normal ggdG setl tw=5 fo=tcn comments=:# call append('$', [ \ '{', \ ' 1 a', \ '# 1 a', \ '}']) exe "normal /^{/+1\n0" exe "normal A b\<Esc>jA b" let lnum = line('.') call assert_equal([ \ ' 1 a', \ ' b', \ '# 1 a', \ '# b'], getline(lnum - 3, lnum)) normal ggdG setl tw=5 fo=t2a si call append('$', [ \ '{', \ '', \ ' x a', \ ' b', \ ' c', \ '', \ '}']) exe "normal /^{/+3\n0" exe "normal i \<Esc>A_" let lnum = line('.') call assert_equal([ \ '', \ ' x a', \ ' b_', \ ' c', \ ''], getline(lnum - 2, lnum + 2)) normal ggdG setl tw=5 fo=qn comments=:# call append('$', [ \ '{', \ '# 1 a b', \ '}']) exe "normal /^{/+1\n5|" normal gwap call assert_equal(5, col('.')) let lnum = line('.') call assert_equal([ \ '# 1 a', \ '# b'], getline(lnum, lnum + 1)) normal ggdG setl tw=5 fo=q2 comments=:# call append('$', [ \ '{', \ '# x', \ '# a b', \ '}']) exe "normal /^{/+1\n0" normal gwap let lnum = line('.') call assert_equal([ \ '# x a', \ '# b'], getline(lnum, lnum + 1)) normal ggdG setl tw& fo=a call append('$', [ \ '{', \ ' 1aa', \ ' 2bb', \ '}']) exe "normal /^{/+2\n0" normal I^^ call assert_equal('{ 1aa ^^2bb }', getline('.')) normal ggdG setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/ call append('$', [ \ '/* abc def ghi jkl ', \ ' * mno pqr stu', \ ' */']) exe "normal /mno pqr/\n" normal A vwx yz let lnum = line('.') call assert_equal([ \ ' * mno pqr stu ', \ ' * vwx yz', \ ' */'], getline(lnum - 1, lnum + 1)) normal ggdG setl tw=12 fo=tqnc comments=:# call setline('.', '# 1 xxxxx') normal A foobar call assert_equal([ \ '# 1 xxxxx', \ '# foobar'], getline(1, 2)) " Test the 'p' flag for 'formatoptions' " First test without the flag: that it will break "Mr. Feynman" at the space normal ggdG setl tw=28 fo=tcq call setline('.', 'Surely you''re joking, Mr. Feynman!') normal gqq call assert_equal([ \ 'Surely you''re joking, Mr.', \ 'Feynman!'], getline(1, 2)) " Now test with the flag: that it will push the name with the title onto the " next line normal ggdG setl fo+=p call setline('.', 'Surely you''re joking, Mr. Feynman!') normal gqq call assert_equal([ \ 'Surely you''re joking,', \ 'Mr. Feynman!'], getline(1, 2)) " Ensure that it will still break if two spaces are entered normal ggdG call setline('.', 'Surely you''re joking, Mr. Feynman!') normal gqq call assert_equal([ \ 'Surely you''re joking, Mr.', \ 'Feynman!'], getline(1, 2)) setl ai& tw& fo& si& comments& enew! endfunc " Tests for :right, :center and :left on text with embedded TAB. func Test_format_align() enew! set tw=65 " :left alignment call append(0, [ \ " test for :left", \ " a a", \ " fa a", \ " dfa a", \ " sdfa a", \ " asdfa a", \ " xasdfa a", \ "asxxdfa a", \ ]) %left call assert_equal([ \ "test for :left", \ "a a", \ "fa a", \ "dfa a", \ "sdfa a", \ "asdfa a", \ "xasdfa a", \ "asxxdfa a", \ "" \ ], getline(1, '$')) enew! " :center alignment call append(0, [ \ " test for :center", \ " a a", \ " fa afd asdf", \ " dfa a", \ " sdfa afd asdf", \ " asdfa a", \ " xasdfa asdfasdfasdfasdfasdf", \ "asxxdfa a" \ ]) %center call assert_equal([ \ " test for :center", \ " a a", \ " fa afd asdf", \ " dfa a", \ " sdfa afd asdf", \ " asdfa a", \ " xasdfa asdfasdfasdfasdfasdf", \ " asxxdfa a", \ "" \ ], getline(1, '$')) enew! " :right alignment call append(0, [ \ " test for :right", \ " a a", \ " fa a", \ " dfa a", \ " sdfa a", \ " asdfa a", \ " xasdfa a", \ " asxxdfa a", \ " asxa;ofa a", \ " asdfaqwer a", \ " a ax", \ " fa ax", \ " dfa ax", \ " sdfa ax", \ " asdfa ax", \ " xasdfa ax", \ " asxxdfa ax", \ " asxa;ofa ax", \ " asdfaqwer ax", \ " a axx", \ " fa axx", \ " dfa axx", \ " sdfa axx", \ " asdfa axx", \ " xasdfa axx", \ " asxxdfa axx", \ " asxa;ofa axx", \ " asdfaqwer axx", \ " a axxx", \ " fa axxx", \ " dfa axxx", \ " sdfa axxx", \ " asdfa axxx", \ " xasdfa axxx", \ " asxxdfa axxx", \ " asxa;ofa axxx", \ " asdfaqwer axxx", \ " a axxxo", \ " fa axxxo", \ " dfa axxxo", \ " sdfa axxxo", \ " asdfa axxxo", \ " xasdfa axxxo", \ " asxxdfa axxxo", \ " asxa;ofa axxxo", \ " asdfaqwer axxxo", \ " a axxxoi", \ " fa axxxoi", \ " dfa axxxoi", \ " sdfa axxxoi", \ " asdfa axxxoi", \ " xasdfa axxxoi", \ " asxxdfa axxxoi", \ " asxa;ofa axxxoi", \ " asdfaqwer axxxoi", \ " a axxxoik", \ " fa axxxoik", \ " dfa axxxoik", \ " sdfa axxxoik", \ " asdfa axxxoik", \ " xasdfa axxxoik", \ " asxxdfa axxxoik", \ " asxa;ofa axxxoik", \ " asdfaqwer axxxoik", \ " a axxxoike", \ " fa axxxoike", \ " dfa axxxoike", \ " sdfa axxxoike", \ " asdfa axxxoike", \ " xasdfa axxxoike", \ " asxxdfa axxxoike", \ " asxa;ofa axxxoike", \ " asdfaqwer axxxoike", \ " a axxxoikey", \ " fa axxxoikey", \ " dfa axxxoikey", \ " sdfa axxxoikey", \ " asdfa axxxoikey", \ " xasdfa axxxoikey", \ " asxxdfa axxxoikey", \ " asxa;ofa axxxoikey", \ " asdfaqwer axxxoikey", \ ]) %right call assert_equal([ \ "\t\t\t\t test for :right", \ "\t\t\t\t a a", \ "\t\t\t\t fa a", \ "\t\t\t\t dfa a", \ "\t\t\t\t sdfa a", \ "\t\t\t\t asdfa a", \ "\t\t\t\t xasdfa a", \ "\t\t\t\t asxxdfa a", \ "\t\t\t\t asxa;ofa a", \ "\t\t\t\t asdfaqwer a", \ "\t\t\t\t a ax", \ "\t\t\t\t fa ax", \ "\t\t\t\t dfa ax", \ "\t\t\t\t sdfa ax", \ "\t\t\t\t asdfa ax", \ "\t\t\t\t xasdfa ax", \ "\t\t\t\t asxxdfa ax", \ "\t\t\t\t asxa;ofa ax", \ "\t\t\t\t asdfaqwer ax", \ "\t\t\t\t a axx", \ "\t\t\t\t fa axx", \ "\t\t\t\t dfa axx", \ "\t\t\t\t sdfa axx", \ "\t\t\t\t asdfa axx", \ "\t\t\t\t xasdfa axx", \ "\t\t\t\t asxxdfa axx", \ "\t\t\t\t asxa;ofa axx", \ "\t\t\t\t asdfaqwer axx", \ "\t\t\t\t a axxx", \ "\t\t\t\t fa axxx", \ "\t\t\t\t dfa axxx", \ "\t\t\t\t sdfa axxx", \ "\t\t\t\t asdfa axxx", \ "\t\t\t\t xasdfa axxx", \ "\t\t\t\t asxxdfa axxx", \ "\t\t\t\t asxa;ofa axxx", \ "\t\t\t\t asdfaqwer axxx", \ "\t\t\t\t a axxxo", \ "\t\t\t\t fa axxxo", \ "\t\t\t\t dfa axxxo", \ "\t\t\t\t sdfa axxxo", \ "\t\t\t\t asdfa axxxo", \ "\t\t\t\t xasdfa axxxo", \ "\t\t\t\t asxxdfa axxxo", \ "\t\t\t\t asxa;ofa axxxo", \ "\t\t\t\t asdfaqwer axxxo", \ "\t\t\t\t a axxxoi", \ "\t\t\t\t fa axxxoi", \ "\t\t\t\t dfa axxxoi", \ "\t\t\t\t sdfa axxxoi", \ "\t\t\t\t asdfa axxxoi", \ "\t\t\t\t xasdfa axxxoi", \ "\t\t\t\t asxxdfa axxxoi", \ "\t\t\t\t asxa;ofa axxxoi", \ "\t\t\t\t asdfaqwer axxxoi", \ "\t\t\t\t a axxxoik", \ "\t\t\t\t fa axxxoik", \ "\t\t\t\t dfa axxxoik", \ "\t\t\t\t sdfa axxxoik", \ "\t\t\t\t asdfa axxxoik", \ "\t\t\t\t xasdfa axxxoik", \ "\t\t\t\t asxxdfa axxxoik", \ "\t\t\t\t asxa;ofa axxxoik", \ "\t\t\t\t asdfaqwer axxxoik", \ "\t\t\t\t a axxxoike", \ "\t\t\t\t fa axxxoike", \ "\t\t\t\t dfa axxxoike", \ "\t\t\t\t sdfa axxxoike", \ "\t\t\t\t asdfa axxxoike", \ "\t\t\t\t xasdfa axxxoike", \ "\t\t\t\t asxxdfa axxxoike", \ "\t\t\t\t asxa;ofa axxxoike", \ "\t\t\t\t asdfaqwer axxxoike", \ "\t\t\t\t a axxxoikey", \ "\t\t\t\t fa axxxoikey", \ "\t\t\t\t dfa axxxoikey", \ "\t\t\t\t sdfa axxxoikey", \ "\t\t\t\t asdfa axxxoikey", \ "\t\t\t\t xasdfa axxxoikey", \ "\t\t\t\t asxxdfa axxxoikey", \ "\t\t\t\t asxa;ofa axxxoikey", \ "\t\t\t\t asdfaqwer axxxoikey", \ "" \ ], getline(1, '$')) enew! " align text with 'wrapmargin' 50vnew call setline(1, ['Vim']) setl textwidth=0 setl wrapmargin=30 right call assert_equal("\t\t Vim", getline(1)) q! " align text with 'rightleft' if has('rightleft') new call setline(1, 'Vim') setlocal rightleft left 20 setlocal norightleft call assert_equal("\t\t Vim", getline(1)) setlocal rightleft right setlocal norightleft call assert_equal("Vim", getline(1)) close! endif set tw& endfunc " Test formatting a paragraph. func Test_format_para() enew! set fo+=tcroql tw=72 call append(0, [ \ "xxxxx xx xxxxxx ", \ "xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx", \ "xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx", \ "xx xxxxxxx. xxxx xxxx.", \ "", \ "> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx", \ "> xxxxxx xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx" \ ]) exe "normal /xxxxxxxx$\<CR>" normal 0gq6kk call assert_equal([ \ "xxxxx xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx", \ "xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xx xxxxxxx.", \ "xxxx xxxx.", \ "", \ "> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx xxxxxx", \ "> xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx", \ "" \ ], getline(1, '$')) set fo& tw& enew! endfunc " Test undo after ":%s" and formatting. func Test_format_undo() enew! map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq call append(0, [ \ "aa aa aa aa", \ "bb bb bb bb", \ "cc cc cc cc" \ ]) " undo/redo here to make the next undo only work on the following changes exe "normal i\<C-G>u" call cursor(1,1) normal ggu call assert_equal([ \ "aa aa aa aa", \ "bb bb bb bb", \ "cc cc cc cc", \ "" \ ], getline(1, '$')) unmap gg set tw& enew! endfunc func Test_format_list_auto() new call setline(1, ['1. abc', '2. def', '3. ghi']) set fo=tan ai bs=2 call feedkeys("3G0lli\<BS>\<BS>x\<Esc>", 'tx') call assert_equal('2. defx ghi', getline(2)) bwipe! set fo& ai& bs& endfunc func Test_crash_github_issue_5095() CheckFeature autocmd " This used to segfault, see https://github.com/vim/vim/issues/5095 augroup testing au BufNew x center augroup END next! x bw augroup testing au! augroup END augroup! testing endfunc " Test for formatting multi-byte text with 'fo=t' func Test_tw_2_fo_t() new let t =<< trim END { XYZ abc XYZ } END call setline(1, t) call cursor(2, 1) set tw=2 fo=t let t =<< trim END XYZ abc XYZ END exe "normal gqgqjgqgq" exe "normal o\n" . join(t, "\n") let expected =<< trim END { XYZ abc XYZ XYZ abc XYZ } END call assert_equal(expected, getline(1, '$')) set tw& fo& bwipe! endfunc " Test for formatting multi-byte text with 'fo=tm' and 'tw=1' func Test_tw_1_fo_tm() new let t =<< trim END { X Xa X a XY X Y } END call setline(1, t) call cursor(2, 1) set tw=1 fo=tm let t =<< trim END X Xa X a XY X Y END exe "normal gqgqjgqgqjgqgqjgqgqjgqgq" exe "normal o\n" . join(t, "\n") let expected =<< trim END { X X a X a X Y X Y X X a X a X Y X Y } END call assert_equal(expected, getline(1, '$')) set tw& fo& bwipe! endfunc " Test for formatting multi-byte text with 'fo=tm' and 'tw=2' func Test_tw_2_fo_tm() new let t =<< trim END { X Xa X a XY X Y aX abX abcX abX c abXY } END call setline(1, t) call cursor(2, 1) set tw=2 fo=tm let t =<< trim END X Xa X a XY X Y aX abX abcX abX c abXY END exe "normal gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgq" exe "normal o\n" . join(t, "\n") let expected =<< trim END { X X a X a X Y X Y a X ab X abc X ab X c ab X Y X X a X a X Y X Y a X ab X abc X ab X c ab X Y } END call assert_equal(expected, getline(1, '$')) set tw& fo& bwipe! endfunc " Test for formatting multi-byte text with 'fo=tm', 'tw=2' and 'autoindent'. func Test_tw_2_fo_tm_ai() new let t =<< trim END { X Xa } END call setline(1, t) call cursor(2, 1) set ai tw=2 fo=tm let t =<< trim END X Xa END exe "normal gqgqjgqgq" exe "normal o\n" . join(t, "\n") let expected =<< trim END { X X a X X a } END call assert_equal(expected, getline(1, '$')) set tw& fo& ai& bwipe! endfunc " Test for formatting multi-byte text with 'fo=tm', 'tw=2' and 'noai'. func Test_tw_2_fo_tm_noai() new let t =<< trim END { X Xa } END call setline(1, t) call cursor(2, 1) set noai tw=2 fo=tm exe "normal gqgqjgqgqo\n X\n Xa" let expected =<< trim END { X X a X X a } END call assert_equal(expected, getline(1, '$')) set tw& fo& ai& bwipe! endfunc func Test_tw_2_fo_cqm_com() new let t =<< trim END { X Xa XaY XY XYZ X Y X YZ XX XXa XXY } END call setline(1, t) call cursor(2, 1) set tw=2 fo=cqm comments=n:X exe "normal gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgq" let t =<< trim END X Xa XaY XY XYZ X Y X YZ XX XXa XXY END exe "normal o\n" . join(t, "\n") let expected =<< trim END { X Xa Xa XY XY XY XZ X Y X Y X Z XX XXa XXY X Xa Xa XY XY XY XZ X Y X Y X Z XX XXa XXY } END call assert_equal(expected, getline(1, '$')) set tw& fo& comments& bwipe! endfunc func Test_tw_2_fo_tm_replace() new let t =<< trim END { } END call setline(1, t) call cursor(2, 1) set tw=2 fo=tm exe "normal RXa" let expected =<< trim END { X a } END call assert_equal(expected, getline(1, '$')) set tw& fo& bwipe! endfunc " Test for 'matchpairs' with multibyte chars func Test_mps_multibyte() new let t =<< trim END { ‘ two three ’ four } END call setline(1, t) call cursor(2, 1) exe "set mps+=\u2018:\u2019" normal d% let expected =<< trim END { four } END call assert_equal(expected, getline(1, '$')) set mps& bwipe! endfunc " Test for 'matchpairs' in latin1 encoding func Test_mps_latin1() new let save_enc = &encoding set encoding=latin1 call setline(1, 'abc(def)ghi') normal % call assert_equal(8, col('.')) normal % call assert_equal(4, col('.')) call cursor(1, 6) normal [( call assert_equal(4, col('.')) normal % call assert_equal(8, col('.')) call cursor(1, 6) normal ]) call assert_equal(8, col('.')) normal % call assert_equal(4, col('.')) let &encoding = save_enc close! endfunc " Test for ra on multi-byte characters func Test_ra_multibyte() new let t =<< trim END ra test abba aab END call setline(1, t) call cursor(1, 1) normal jVjra let expected =<< trim END ra test aaaa aaa END call assert_equal(expected, getline(1, '$')) bwipe! endfunc " Test for 'whichwrap' with multi-byte character func Test_whichwrap_multi_byte() new let t =<< trim END á x END call setline(1, t) call cursor(2, 1) set whichwrap+=h normal dh set whichwrap& let expected =<< trim END áx END call assert_equal(expected, getline(1, '$')) bwipe! endfunc " Test for the 'f' flag in 'comments' (only the first line has the comment " string) func Test_firstline_comment() new setlocal comments=f:- fo+=ro exe "normal i- B\nD\<C-C>ggoC\<C-C>ggOA\<C-C>" call assert_equal(['A', '- B', ' C', ' D'], getline(1, '$')) %d setlocal comments=:- exe "normal i- B\nD\<C-C>ggoC\<C-C>ggOA\<C-C>" call assert_equal(['- A', '- B', '- C', '- D'], getline(1, '$')) %bw! endfunc " Test for the 'r' flag in 'comments' (right align comment) func Test_comment_rightalign() new setlocal comments=sr:/***,m:**,ex-2:******/ fo+=ro exe "normal i=\<C-C>o\t /***\nD\n/" exe "normal 2GOA\<C-C>joB\<C-C>jOC\<C-C>joE\<C-C>GOF\<C-C>joG" let expected =<< trim END = A /*** ** B ** C ** D ** E ** F ******/ G END call assert_equal(expected, getline(1, '$')) %bw! endfunc " Test for the 'b' flag in 'comments' func Test_comment_blank() new setlocal comments=b:* fo+=ro exe "normal i* E\nF\n\<BS>G\nH\<C-C>ggOC\<C-C>O\<BS>B\<C-C>OA\<C-C>2joD" let expected =<< trim END A *B * C * D * E * F *G H END call assert_equal(expected, getline(1, '$')) %bw! endfunc " Test for the 'n' flag in comments func Test_comment_nested() new setlocal comments=n:> fo+=ro exe "normal i> B\nD\<C-C>ggOA\<C-C>joC\<C-C>Go\<BS>>>> F\nH" exe "normal 5GOE\<C-C>6GoG" let expected =<< trim END > A > B > C > D >>>> E >>>> F >>>> G >>>> H END call assert_equal(expected, getline(1, '$')) %bw! endfunc " Test for a space character in 'comments' setting func Test_comment_space() new setlocal comments=b:\ > fo+=ro exe "normal i> B\nD\<C-C>ggOA\<C-C>joC" exe "normal Go > F\nH\<C-C>kOE\<C-C>joG" let expected =<< trim END A > B C D > E > F > G > H END call assert_equal(expected, getline(1, '$')) %bw! endfunc " Test for the 'O' flag in 'comments' func Test_comment_O() new setlocal comments=Ob:* fo+=ro exe "normal i* B\nD\<C-C>kOA\<C-C>joC" let expected =<< trim END A * B * C * D END call assert_equal(expected, getline(1, '$')) %bw! 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, '$')) %bw! endfunc " Test for 'j' flag in 'formatoptions' func Test_fo_j() new setlocal fo+=j comments=:// call setline(1, ['i++; // comment1', ' // comment2']) normal J call assert_equal('i++; // comment1 comment2', getline(1)) setlocal fo-=j call setline(1, ['i++; // comment1', ' // comment2']) normal J call assert_equal('i++; // comment1 // comment2', getline(1)) " Test with nested comments setlocal fo+=j comments=n:>,n:) call setline(1, ['i++; > ) > ) comment1', ' > ) comment2']) normal J call assert_equal('i++; > ) > ) comment1 comment2', getline(1)) %bw! endfunc " vim: shiftwidth=2 sts=2 expandtab