16b64394fSBram Moolenaar" Test for cinoptions and cindent 26b64394fSBram Moolenaar 36b64394fSBram Moolenaarfunc Test_cino_hash() 46b64394fSBram Moolenaar " Test that curbuf->b_ind_hash_comment is correctly reset 56b64394fSBram Moolenaar new 66b64394fSBram Moolenaar setlocal cindent cinoptions=#1 76b64394fSBram Moolenaar setlocal cinoptions= 86b64394fSBram Moolenaar call setline(1, ["#include <iostream>"]) 96b64394fSBram Moolenaar call cursor(1, 1) 106b64394fSBram Moolenaar norm! o#include 116b64394fSBram Moolenaar "call feedkeys("o#include\<esc>", 't') 126b64394fSBram Moolenaar call assert_equal(["#include <iostream>", "#include"], getline(1,2)) 136b64394fSBram Moolenaar bwipe! 146b64394fSBram Moolenaarendfunc 157720ba85SBram Moolenaar 167720ba85SBram Moolenaarfunc Test_cino_extern_c() 177720ba85SBram Moolenaar " Test for cino-E 187720ba85SBram Moolenaar 19c79745a8SBram Moolenaar let without_ind =<< trim [CODE] 20c79745a8SBram Moolenaar #ifdef __cplusplus 21c79745a8SBram Moolenaar extern "C" { 22c79745a8SBram Moolenaar #endif 23c79745a8SBram Moolenaar int func_a(void); 24c79745a8SBram Moolenaar #ifdef __cplusplus 25c79745a8SBram Moolenaar } 26c79745a8SBram Moolenaar #endif 27c79745a8SBram Moolenaar [CODE] 287720ba85SBram Moolenaar 29c79745a8SBram Moolenaar let with_ind =<< trim [CODE] 30c79745a8SBram Moolenaar #ifdef __cplusplus 31c79745a8SBram Moolenaar extern "C" { 32c79745a8SBram Moolenaar #endif 33c79745a8SBram Moolenaar int func_a(void); 34c79745a8SBram Moolenaar #ifdef __cplusplus 35c79745a8SBram Moolenaar } 36c79745a8SBram Moolenaar #endif 37c79745a8SBram Moolenaar [CODE] 387720ba85SBram Moolenaar new 397720ba85SBram Moolenaar setlocal cindent cinoptions=E0 407720ba85SBram Moolenaar call setline(1, without_ind) 417720ba85SBram Moolenaar call feedkeys("gg=G", 'tx') 427720ba85SBram Moolenaar call assert_equal(with_ind, getline(1, '$')) 437720ba85SBram Moolenaar 447720ba85SBram Moolenaar setlocal cinoptions=E-s 457720ba85SBram Moolenaar call setline(1, with_ind) 467720ba85SBram Moolenaar call feedkeys("gg=G", 'tx') 477720ba85SBram Moolenaar call assert_equal(without_ind, getline(1, '$')) 487720ba85SBram Moolenaar 497720ba85SBram Moolenaar setlocal cinoptions=Es 507720ba85SBram Moolenaar let tests = [ 517720ba85SBram Moolenaar \ ['recognized', ['extern "C" {'], "\t\t;"], 527720ba85SBram Moolenaar \ ['recognized', ['extern "C++" {'], "\t\t;"], 537720ba85SBram Moolenaar \ ['recognized', ['extern /* com */ "C"{'], "\t\t;"], 547720ba85SBram Moolenaar \ ['recognized', ['extern"C"{'], "\t\t;"], 557720ba85SBram Moolenaar \ ['recognized', ['extern "C"', '{'], "\t\t;"], 567720ba85SBram Moolenaar \ ['not recognized', ['extern {'], "\t;"], 577720ba85SBram Moolenaar \ ['not recognized', ['extern /*"C"*/{'], "\t;"], 587720ba85SBram Moolenaar \ ['not recognized', ['extern "C" //{'], ";"], 597720ba85SBram Moolenaar \ ['not recognized', ['extern "C" /*{*/'], ";"], 607720ba85SBram Moolenaar \ ] 617720ba85SBram Moolenaar 627720ba85SBram Moolenaar for pair in tests 637720ba85SBram Moolenaar let lines = pair[1] 647720ba85SBram Moolenaar call setline(1, lines) 657720ba85SBram Moolenaar call feedkeys(len(lines) . "Go;", 'tx') 667720ba85SBram Moolenaar call assert_equal(pair[2], getline(len(lines) + 1), 'Failed for "' . string(lines) . '"') 677720ba85SBram Moolenaar endfor 687720ba85SBram Moolenaar 697720ba85SBram Moolenaar bwipe! 707720ba85SBram Moolenaarendfunc 717720ba85SBram Moolenaar 72e2e69e48SBram Moolenaarfunc Test_cindent_rawstring() 73dde81312SBram Moolenaar new 74dde81312SBram Moolenaar setl cindent 75dde81312SBram Moolenaar call feedkeys("i" . 76dde81312SBram Moolenaar \ "int main() {\<CR>" . 77dde81312SBram Moolenaar \ "R\"(\<CR>" . 78dde81312SBram Moolenaar \ ")\";\<CR>" . 79dde81312SBram Moolenaar \ "statement;\<Esc>", "x") 80dde81312SBram Moolenaar call assert_equal("\tstatement;", getline(line('.'))) 81dde81312SBram Moolenaar bw! 82e2e69e48SBram Moolenaarendfunc 83e2e69e48SBram Moolenaar 84e2e69e48SBram Moolenaarfunc Test_cindent_expr() 85e2e69e48SBram Moolenaar new 86e2e69e48SBram Moolenaar func! MyIndentFunction() 87e2e69e48SBram Moolenaar return v:lnum == 1 ? shiftwidth() : 0 88e2e69e48SBram Moolenaar endfunc 89e2e69e48SBram Moolenaar setl expandtab sw=8 indentkeys+=; indentexpr=MyIndentFunction() 90c79745a8SBram Moolenaar let testinput =<< trim [CODE] 91c79745a8SBram Moolenaar var_a = something() 92c79745a8SBram Moolenaar b = something() 93c79745a8SBram Moolenaar [CODE] 94c79745a8SBram Moolenaar call setline(1, testinput) 95e2e69e48SBram Moolenaar call cursor(1, 1) 96e2e69e48SBram Moolenaar call feedkeys("^\<c-v>j$A;\<esc>", 'tnix') 97e7eb9270SBram Moolenaar let expected =<< [CODE] 98c79745a8SBram Moolenaar var_a = something(); 99c79745a8SBram Moolenaarb = something(); 100c79745a8SBram Moolenaar[CODE] 101c79745a8SBram Moolenaar call assert_equal(expected, getline(1, '$')) 102e2e69e48SBram Moolenaar 103e2e69e48SBram Moolenaar %d 104e7eb9270SBram Moolenaar let testinput =<< [CODE] 105c79745a8SBram Moolenaar var_a = something() 106c79745a8SBram Moolenaar b = something() 107c79745a8SBram Moolenaar[CODE] 108c79745a8SBram Moolenaar call setline(1, testinput) 109e2e69e48SBram Moolenaar call cursor(1, 1) 110e2e69e48SBram Moolenaar call feedkeys("^\<c-v>j$A;\<esc>", 'tnix') 111e7eb9270SBram Moolenaar let expected =<< [CODE] 112c79745a8SBram Moolenaar var_a = something(); 113c79745a8SBram Moolenaar b = something() 114c79745a8SBram Moolenaar[CODE] 115c79745a8SBram Moolenaar call assert_equal(expected, getline(1, '$')) 116e2e69e48SBram Moolenaar bw! 117e2e69e48SBram Moolenaarendfunc 118e2e69e48SBram Moolenaar 11917aca707SBram Moolenaarfunc Test_cindent_func() 12017aca707SBram Moolenaar new 12117aca707SBram Moolenaar setlocal cindent 12217aca707SBram Moolenaar call setline(1, ['int main(void)', '{', 'return 0;', '}']) 1231a3a8916SBram Moolenaar call assert_equal(-1, cindent(0)) 1241a3a8916SBram Moolenaar call assert_equal(&sw, 3->cindent()) 1251a3a8916SBram Moolenaar call assert_equal(-1, cindent(line('$')+1)) 12617aca707SBram Moolenaar bwipe! 12717aca707SBram Moolenaarendfunc 12817aca707SBram Moolenaar 1291ab74a5aSBram Moolenaarfunc Test_cindent_1() 1301ab74a5aSBram Moolenaar new 1311ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 1321ab74a5aSBram Moolenaar setl cino& sts& 1331ab74a5aSBram Moolenaar 1341ab74a5aSBram Moolenaar let code =<< trim [CODE] 1351ab74a5aSBram Moolenaar /* start of AUTO matically checked vim: set ts=4 : */ 1361ab74a5aSBram Moolenaar { 1371ab74a5aSBram Moolenaar if (test) 1381ab74a5aSBram Moolenaar cmd1; 1391ab74a5aSBram Moolenaar cmd2; 1401ab74a5aSBram Moolenaar } 1411ab74a5aSBram Moolenaar 1421ab74a5aSBram Moolenaar { 1431ab74a5aSBram Moolenaar if (test) 1441ab74a5aSBram Moolenaar cmd1; 1451ab74a5aSBram Moolenaar else 1461ab74a5aSBram Moolenaar cmd2; 1471ab74a5aSBram Moolenaar } 1481ab74a5aSBram Moolenaar 1491ab74a5aSBram Moolenaar { 1501ab74a5aSBram Moolenaar if (test) 1511ab74a5aSBram Moolenaar { 1521ab74a5aSBram Moolenaar cmd1; 1531ab74a5aSBram Moolenaar cmd2; 1541ab74a5aSBram Moolenaar } 1551ab74a5aSBram Moolenaar } 1561ab74a5aSBram Moolenaar 1571ab74a5aSBram Moolenaar { 1581ab74a5aSBram Moolenaar if (test) 1591ab74a5aSBram Moolenaar { 1601ab74a5aSBram Moolenaar cmd1; 1611ab74a5aSBram Moolenaar else 1621ab74a5aSBram Moolenaar } 1631ab74a5aSBram Moolenaar } 1641ab74a5aSBram Moolenaar 1651ab74a5aSBram Moolenaar { 1661ab74a5aSBram Moolenaar while (this) 1671ab74a5aSBram Moolenaar if (test) 1681ab74a5aSBram Moolenaar cmd1; 1691ab74a5aSBram Moolenaar cmd2; 1701ab74a5aSBram Moolenaar } 1711ab74a5aSBram Moolenaar 1721ab74a5aSBram Moolenaar { 1731ab74a5aSBram Moolenaar while (this) 1741ab74a5aSBram Moolenaar if (test) 1751ab74a5aSBram Moolenaar cmd1; 1761ab74a5aSBram Moolenaar else 1771ab74a5aSBram Moolenaar cmd2; 1781ab74a5aSBram Moolenaar } 1791ab74a5aSBram Moolenaar 1801ab74a5aSBram Moolenaar { 1811ab74a5aSBram Moolenaar if (test) 1821ab74a5aSBram Moolenaar { 1831ab74a5aSBram Moolenaar cmd; 1841ab74a5aSBram Moolenaar } 1851ab74a5aSBram Moolenaar 1861ab74a5aSBram Moolenaar if (test) 1871ab74a5aSBram Moolenaar cmd; 1881ab74a5aSBram Moolenaar } 1891ab74a5aSBram Moolenaar 1901ab74a5aSBram Moolenaar { 1911ab74a5aSBram Moolenaar if (test) { 1921ab74a5aSBram Moolenaar cmd; 1931ab74a5aSBram Moolenaar } 1941ab74a5aSBram Moolenaar 1951ab74a5aSBram Moolenaar if (test) cmd; 1961ab74a5aSBram Moolenaar } 1971ab74a5aSBram Moolenaar 1981ab74a5aSBram Moolenaar { 1991ab74a5aSBram Moolenaar cmd1; 2001ab74a5aSBram Moolenaar for (blah) 2011ab74a5aSBram Moolenaar while (this) 2021ab74a5aSBram Moolenaar if (test) 2031ab74a5aSBram Moolenaar cmd2; 2041ab74a5aSBram Moolenaar cmd3; 2051ab74a5aSBram Moolenaar } 2061ab74a5aSBram Moolenaar 2071ab74a5aSBram Moolenaar { 2081ab74a5aSBram Moolenaar cmd1; 2091ab74a5aSBram Moolenaar for (blah) 2101ab74a5aSBram Moolenaar while (this) 2111ab74a5aSBram Moolenaar if (test) 2121ab74a5aSBram Moolenaar cmd2; 2131ab74a5aSBram Moolenaar cmd3; 2141ab74a5aSBram Moolenaar 2151ab74a5aSBram Moolenaar if (test) 2161ab74a5aSBram Moolenaar { 2171ab74a5aSBram Moolenaar cmd1; 2181ab74a5aSBram Moolenaar cmd2; 2191ab74a5aSBram Moolenaar cmd3; 2201ab74a5aSBram Moolenaar } 2211ab74a5aSBram Moolenaar } 2221ab74a5aSBram Moolenaar 2231ab74a5aSBram Moolenaar 2241ab74a5aSBram Moolenaar /* Test for 'cindent' do/while mixed with if/else: */ 2251ab74a5aSBram Moolenaar 2261ab74a5aSBram Moolenaar { 2271ab74a5aSBram Moolenaar do 2281ab74a5aSBram Moolenaar if (asdf) 2291ab74a5aSBram Moolenaar asdfasd; 2301ab74a5aSBram Moolenaar while (cond); 2311ab74a5aSBram Moolenaar 2321ab74a5aSBram Moolenaar do 2331ab74a5aSBram Moolenaar if (asdf) 2341ab74a5aSBram Moolenaar while (asdf) 2351ab74a5aSBram Moolenaar asdf; 2361ab74a5aSBram Moolenaar while (asdf); 2371ab74a5aSBram Moolenaar } 2381ab74a5aSBram Moolenaar 2391ab74a5aSBram Moolenaar /* Test for 'cindent' with two ) on a continuation line */ 2401ab74a5aSBram Moolenaar { 2411ab74a5aSBram Moolenaar if (asdfasdf;asldkfj asdlkfj as;ldkfj sal;d 2421ab74a5aSBram Moolenaar aal;sdkjf ( ;asldfkja;sldfk 2431ab74a5aSBram Moolenaar al;sdjfka ;slkdf ) sa;ldkjfsa dlk;) 2441ab74a5aSBram Moolenaar line up here; 2451ab74a5aSBram Moolenaar } 2461ab74a5aSBram Moolenaar 2471ab74a5aSBram Moolenaar 2481ab74a5aSBram Moolenaar /* C++ tests: */ 2491ab74a5aSBram Moolenaar 2501ab74a5aSBram Moolenaar // foo() these three lines should remain in column 0 2511ab74a5aSBram Moolenaar // { 2521ab74a5aSBram Moolenaar // } 2531ab74a5aSBram Moolenaar 2541ab74a5aSBram Moolenaar /* Test for continuation and unterminated lines: */ 2551ab74a5aSBram Moolenaar { 2561ab74a5aSBram Moolenaar i = 99 + 14325 + 2571ab74a5aSBram Moolenaar 21345 + 2581ab74a5aSBram Moolenaar 21345 + 2591ab74a5aSBram Moolenaar 21345 + ( 21345 + 2601ab74a5aSBram Moolenaar 21345) + 2611ab74a5aSBram Moolenaar 2345 + 2621ab74a5aSBram Moolenaar 1234; 2631ab74a5aSBram Moolenaar c = 1; 2641ab74a5aSBram Moolenaar } 2651ab74a5aSBram Moolenaar 2661ab74a5aSBram Moolenaar /* 2671ab74a5aSBram Moolenaar testje for indent with empty line 2681ab74a5aSBram Moolenaar 2691ab74a5aSBram Moolenaar here */ 2701ab74a5aSBram Moolenaar 2711ab74a5aSBram Moolenaar { 2721ab74a5aSBram Moolenaar if (testing && 2731ab74a5aSBram Moolenaar not a joke || 2741ab74a5aSBram Moolenaar line up here) 2751ab74a5aSBram Moolenaar hay; 2761ab74a5aSBram Moolenaar if (testing && 2771ab74a5aSBram Moolenaar (not a joke || testing 2781ab74a5aSBram Moolenaar )line up here) 2791ab74a5aSBram Moolenaar hay; 2801ab74a5aSBram Moolenaar if (testing && 2811ab74a5aSBram Moolenaar (not a joke || testing 2821ab74a5aSBram Moolenaar line up here)) 2831ab74a5aSBram Moolenaar hay; 2841ab74a5aSBram Moolenaar } 2851ab74a5aSBram Moolenaar 2861ab74a5aSBram Moolenaar 2871ab74a5aSBram Moolenaar { 2881ab74a5aSBram Moolenaar switch (c) 2891ab74a5aSBram Moolenaar { 2901ab74a5aSBram Moolenaar case xx: 2911ab74a5aSBram Moolenaar do 2921ab74a5aSBram Moolenaar if (asdf) 2931ab74a5aSBram Moolenaar do 2941ab74a5aSBram Moolenaar asdfasdf; 2951ab74a5aSBram Moolenaar while (asdf); 2961ab74a5aSBram Moolenaar else 2971ab74a5aSBram Moolenaar asdfasdf; 2981ab74a5aSBram Moolenaar while (cond); 2991ab74a5aSBram Moolenaar case yy: 3001ab74a5aSBram Moolenaar case xx: 3011ab74a5aSBram Moolenaar case zz: 3021ab74a5aSBram Moolenaar testing; 3031ab74a5aSBram Moolenaar } 3041ab74a5aSBram Moolenaar } 3051ab74a5aSBram Moolenaar 3061ab74a5aSBram Moolenaar { 3071ab74a5aSBram Moolenaar if (cond) { 3081ab74a5aSBram Moolenaar foo; 3091ab74a5aSBram Moolenaar } 3101ab74a5aSBram Moolenaar else 3111ab74a5aSBram Moolenaar { 3121ab74a5aSBram Moolenaar bar; 3131ab74a5aSBram Moolenaar } 3141ab74a5aSBram Moolenaar } 3151ab74a5aSBram Moolenaar 3161ab74a5aSBram Moolenaar { 3171ab74a5aSBram Moolenaar if (alskdfj ;alsdkfjal;skdjf (;sadlkfsa ;dlkf j;alksdfj ;alskdjf 3181ab74a5aSBram Moolenaar alsdkfj (asldk;fj 3191ab74a5aSBram Moolenaar awith cino=(0 ;lf this one goes to below the paren with == 3201ab74a5aSBram Moolenaar ;laksjfd ;lsakdjf ;alskdf asd) 3211ab74a5aSBram Moolenaar asdfasdf;))) 3221ab74a5aSBram Moolenaar asdfasdf; 3231ab74a5aSBram Moolenaar } 3241ab74a5aSBram Moolenaar 3251ab74a5aSBram Moolenaar int 3261ab74a5aSBram Moolenaar func(a, b) 3271ab74a5aSBram Moolenaar int a; 3281ab74a5aSBram Moolenaar int c; 3291ab74a5aSBram Moolenaar { 3301ab74a5aSBram Moolenaar if (c1 && (c2 || 3311ab74a5aSBram Moolenaar c3)) 3321ab74a5aSBram Moolenaar foo; 3331ab74a5aSBram Moolenaar if (c1 && 3341ab74a5aSBram Moolenaar (c2 || c3) 3351ab74a5aSBram Moolenaar ) 3361ab74a5aSBram Moolenaar } 3371ab74a5aSBram Moolenaar 3381ab74a5aSBram Moolenaar { 3391ab74a5aSBram Moolenaar while (asd) 3401ab74a5aSBram Moolenaar { 3411ab74a5aSBram Moolenaar if (asdf) 3421ab74a5aSBram Moolenaar if (test) 3431ab74a5aSBram Moolenaar if (that) 3441ab74a5aSBram Moolenaar { 3451ab74a5aSBram Moolenaar if (asdf) 3461ab74a5aSBram Moolenaar do 3471ab74a5aSBram Moolenaar cdasd; 3481ab74a5aSBram Moolenaar while (as 3491ab74a5aSBram Moolenaar df); 3501ab74a5aSBram Moolenaar } 3511ab74a5aSBram Moolenaar else 3521ab74a5aSBram Moolenaar if (asdf) 3531ab74a5aSBram Moolenaar asdf; 3541ab74a5aSBram Moolenaar else 3551ab74a5aSBram Moolenaar asdf; 3561ab74a5aSBram Moolenaar asdf; 3571ab74a5aSBram Moolenaar } 3581ab74a5aSBram Moolenaar } 3591ab74a5aSBram Moolenaar 3601ab74a5aSBram Moolenaar { 3611ab74a5aSBram Moolenaar s = "/*"; b = ';' 3621ab74a5aSBram Moolenaar s = "/*"; b = ';'; 3631ab74a5aSBram Moolenaar a = b; 3641ab74a5aSBram Moolenaar } 3651ab74a5aSBram Moolenaar 3661ab74a5aSBram Moolenaar { 3671ab74a5aSBram Moolenaar switch (a) 3681ab74a5aSBram Moolenaar { 3691ab74a5aSBram Moolenaar case a: 3701ab74a5aSBram Moolenaar switch (t) 3711ab74a5aSBram Moolenaar { 3721ab74a5aSBram Moolenaar case 1: 3731ab74a5aSBram Moolenaar cmd; 3741ab74a5aSBram Moolenaar break; 3751ab74a5aSBram Moolenaar case 2: 3761ab74a5aSBram Moolenaar cmd; 3771ab74a5aSBram Moolenaar break; 3781ab74a5aSBram Moolenaar } 3791ab74a5aSBram Moolenaar cmd; 3801ab74a5aSBram Moolenaar break; 3811ab74a5aSBram Moolenaar case b: 3821ab74a5aSBram Moolenaar { 3831ab74a5aSBram Moolenaar int i; 3841ab74a5aSBram Moolenaar cmd; 3851ab74a5aSBram Moolenaar } 3861ab74a5aSBram Moolenaar break; 3871ab74a5aSBram Moolenaar case c: { 3881ab74a5aSBram Moolenaar int i; 3891ab74a5aSBram Moolenaar cmd; 3901ab74a5aSBram Moolenaar } 3911ab74a5aSBram Moolenaar case d: if (cond && 3921ab74a5aSBram Moolenaar test) { /* this line doesn't work right */ 3931ab74a5aSBram Moolenaar int i; 3941ab74a5aSBram Moolenaar cmd; 3951ab74a5aSBram Moolenaar } 3961ab74a5aSBram Moolenaar break; 3971ab74a5aSBram Moolenaar } 3981ab74a5aSBram Moolenaar } 3991ab74a5aSBram Moolenaar 4001ab74a5aSBram Moolenaar { 4011ab74a5aSBram Moolenaar if (!(vim_strchr(p_cpo, CPO_BUFOPTGLOB) != NULL && entering) && 4021ab74a5aSBram Moolenaar (bp_to->b_p_initialized || 4031ab74a5aSBram Moolenaar (!entering && vim_strchr(p_cpo, CPO_BUFOPT) != NULL))) 4041ab74a5aSBram Moolenaar return; 4051ab74a5aSBram Moolenaar label : 4061ab74a5aSBram Moolenaar asdf = asdf ? 4071ab74a5aSBram Moolenaar asdf : asdf; 4081ab74a5aSBram Moolenaar asdf = asdf ? 4091ab74a5aSBram Moolenaar asdf: asdf; 4101ab74a5aSBram Moolenaar } 4111ab74a5aSBram Moolenaar 4121ab74a5aSBram Moolenaar /* Special Comments : This function has the added complexity (compared */ 4131ab74a5aSBram Moolenaar /* : to addtolist) of having to check for a detail */ 4141ab74a5aSBram Moolenaar /* : texture and add that to the list first. */ 4151ab74a5aSBram Moolenaar 4161ab74a5aSBram Moolenaar char *(array[100]) = { 4171ab74a5aSBram Moolenaar "testje", 4181ab74a5aSBram Moolenaar "foo", 4191ab74a5aSBram Moolenaar "bar", 4201ab74a5aSBram Moolenaar } 4211ab74a5aSBram Moolenaar 4221ab74a5aSBram Moolenaar enum soppie 4231ab74a5aSBram Moolenaar { 4241ab74a5aSBram Moolenaar yes = 0, 4251ab74a5aSBram Moolenaar no, 4261ab74a5aSBram Moolenaar maybe 4271ab74a5aSBram Moolenaar }; 4281ab74a5aSBram Moolenaar 4291ab74a5aSBram Moolenaar typedef enum soppie 4301ab74a5aSBram Moolenaar { 4311ab74a5aSBram Moolenaar yes = 0, 4321ab74a5aSBram Moolenaar no, 4331ab74a5aSBram Moolenaar maybe 4341ab74a5aSBram Moolenaar }; 4351ab74a5aSBram Moolenaar 4361ab74a5aSBram Moolenaar static enum 4371ab74a5aSBram Moolenaar { 4381ab74a5aSBram Moolenaar yes = 0, 4391ab74a5aSBram Moolenaar no, 4401ab74a5aSBram Moolenaar maybe 4411ab74a5aSBram Moolenaar } soppie; 4421ab74a5aSBram Moolenaar 4431ab74a5aSBram Moolenaar public static enum 4441ab74a5aSBram Moolenaar { 4451ab74a5aSBram Moolenaar yes = 0, 4461ab74a5aSBram Moolenaar no, 4471ab74a5aSBram Moolenaar maybe 4481ab74a5aSBram Moolenaar } soppie; 4491ab74a5aSBram Moolenaar 4501ab74a5aSBram Moolenaar static private enum 4511ab74a5aSBram Moolenaar { 4521ab74a5aSBram Moolenaar yes = 0, 4531ab74a5aSBram Moolenaar no, 4541ab74a5aSBram Moolenaar maybe 4551ab74a5aSBram Moolenaar } soppie; 4561ab74a5aSBram Moolenaar 4571ab74a5aSBram Moolenaar { 4581ab74a5aSBram Moolenaar int a, 4591ab74a5aSBram Moolenaar b; 4601ab74a5aSBram Moolenaar } 4611ab74a5aSBram Moolenaar 4621ab74a5aSBram Moolenaar { 4631ab74a5aSBram Moolenaar struct Type 4641ab74a5aSBram Moolenaar { 4651ab74a5aSBram Moolenaar int i; 4661ab74a5aSBram Moolenaar char *str; 4671ab74a5aSBram Moolenaar } var[] = 4681ab74a5aSBram Moolenaar { 4691ab74a5aSBram Moolenaar 0, "zero", 4701ab74a5aSBram Moolenaar 1, "one", 4711ab74a5aSBram Moolenaar 2, "two", 4721ab74a5aSBram Moolenaar 3, "three" 4731ab74a5aSBram Moolenaar }; 4741ab74a5aSBram Moolenaar 4751ab74a5aSBram Moolenaar float matrix[3][3] = 4761ab74a5aSBram Moolenaar { 4771ab74a5aSBram Moolenaar { 4781ab74a5aSBram Moolenaar 0, 4791ab74a5aSBram Moolenaar 1, 4801ab74a5aSBram Moolenaar 2 4811ab74a5aSBram Moolenaar }, 4821ab74a5aSBram Moolenaar { 4831ab74a5aSBram Moolenaar 3, 4841ab74a5aSBram Moolenaar 4, 4851ab74a5aSBram Moolenaar 5 4861ab74a5aSBram Moolenaar }, 4871ab74a5aSBram Moolenaar { 4881ab74a5aSBram Moolenaar 6, 4891ab74a5aSBram Moolenaar 7, 4901ab74a5aSBram Moolenaar 8 4911ab74a5aSBram Moolenaar } 4921ab74a5aSBram Moolenaar }; 4931ab74a5aSBram Moolenaar } 4941ab74a5aSBram Moolenaar 4951ab74a5aSBram Moolenaar { 4961ab74a5aSBram Moolenaar /* blah ( blah */ 4971ab74a5aSBram Moolenaar /* where does this go? */ 4981ab74a5aSBram Moolenaar 4991ab74a5aSBram Moolenaar /* blah ( blah */ 5001ab74a5aSBram Moolenaar cmd; 5011ab74a5aSBram Moolenaar 5021ab74a5aSBram Moolenaar func(arg1, 5031ab74a5aSBram Moolenaar /* comment */ 5041ab74a5aSBram Moolenaar arg2); 5051ab74a5aSBram Moolenaar a; 5061ab74a5aSBram Moolenaar { 5071ab74a5aSBram Moolenaar b; 5081ab74a5aSBram Moolenaar { 5091ab74a5aSBram Moolenaar c; /* Hey, NOW it indents?! */ 5101ab74a5aSBram Moolenaar } 5111ab74a5aSBram Moolenaar } 5121ab74a5aSBram Moolenaar 5131ab74a5aSBram Moolenaar { 5141ab74a5aSBram Moolenaar func(arg1, 5151ab74a5aSBram Moolenaar arg2, 5161ab74a5aSBram Moolenaar arg3); 5171ab74a5aSBram Moolenaar /* Hey, what am I doing here? Is this coz of the ","? */ 5181ab74a5aSBram Moolenaar } 5191ab74a5aSBram Moolenaar } 5201ab74a5aSBram Moolenaar 5211ab74a5aSBram Moolenaar main () 5221ab74a5aSBram Moolenaar { 5231ab74a5aSBram Moolenaar if (cond) 5241ab74a5aSBram Moolenaar { 5251ab74a5aSBram Moolenaar a = b; 5261ab74a5aSBram Moolenaar } 5271ab74a5aSBram Moolenaar if (cond) { 5281ab74a5aSBram Moolenaar a = c; 5291ab74a5aSBram Moolenaar } 5301ab74a5aSBram Moolenaar if (cond) 5311ab74a5aSBram Moolenaar a = d; 5321ab74a5aSBram Moolenaar return; 5331ab74a5aSBram Moolenaar } 5341ab74a5aSBram Moolenaar 5351ab74a5aSBram Moolenaar { 5361ab74a5aSBram Moolenaar case 2: if (asdf && 5371ab74a5aSBram Moolenaar asdfasdf) 5381ab74a5aSBram Moolenaar aasdf; 5391ab74a5aSBram Moolenaar a = 9; 5401ab74a5aSBram Moolenaar case 3: if (asdf) 5411ab74a5aSBram Moolenaar aasdf; 5421ab74a5aSBram Moolenaar a = 9; 5431ab74a5aSBram Moolenaar case 4: x = 1; 5441ab74a5aSBram Moolenaar y = 2; 5451ab74a5aSBram Moolenaar 5461ab74a5aSBram Moolenaar label: if (asdf) 5471ab74a5aSBram Moolenaar here; 5481ab74a5aSBram Moolenaar 5491ab74a5aSBram Moolenaar label: if (asdf && 5501ab74a5aSBram Moolenaar asdfasdf) 5511ab74a5aSBram Moolenaar { 5521ab74a5aSBram Moolenaar } 5531ab74a5aSBram Moolenaar 5541ab74a5aSBram Moolenaar label: if (asdf && 5551ab74a5aSBram Moolenaar asdfasdf) { 5561ab74a5aSBram Moolenaar there; 5571ab74a5aSBram Moolenaar } 5581ab74a5aSBram Moolenaar 5591ab74a5aSBram Moolenaar label: if (asdf && 5601ab74a5aSBram Moolenaar asdfasdf) 5611ab74a5aSBram Moolenaar there; 5621ab74a5aSBram Moolenaar } 5631ab74a5aSBram Moolenaar 5641ab74a5aSBram Moolenaar { 5651ab74a5aSBram Moolenaar /* 5661ab74a5aSBram Moolenaar hello with ":set comments= cino=c5" 5671ab74a5aSBram Moolenaar */ 5681ab74a5aSBram Moolenaar 5691ab74a5aSBram Moolenaar /* 5701ab74a5aSBram Moolenaar hello with ":set comments= cino=" 5711ab74a5aSBram Moolenaar */ 5721ab74a5aSBram Moolenaar } 5731ab74a5aSBram Moolenaar 5741ab74a5aSBram Moolenaar 5751ab74a5aSBram Moolenaar { 5761ab74a5aSBram Moolenaar if (a < b) { 5771ab74a5aSBram Moolenaar a = a + 1; 5781ab74a5aSBram Moolenaar } else 5791ab74a5aSBram Moolenaar a = a + 2; 5801ab74a5aSBram Moolenaar 5811ab74a5aSBram Moolenaar if (a) 5821ab74a5aSBram Moolenaar do { 5831ab74a5aSBram Moolenaar testing; 5841ab74a5aSBram Moolenaar } while (asdfasdf); 5851ab74a5aSBram Moolenaar a = b + 1; 5861ab74a5aSBram Moolenaar asdfasdf 5871ab74a5aSBram Moolenaar } 5881ab74a5aSBram Moolenaar 5891ab74a5aSBram Moolenaar { 5901ab74a5aSBram Moolenaar for ( int i = 0; 5911ab74a5aSBram Moolenaar i < 10; i++ ) 5921ab74a5aSBram Moolenaar { 5931ab74a5aSBram Moolenaar } 5941ab74a5aSBram Moolenaar i = 0; 5951ab74a5aSBram Moolenaar } 5961ab74a5aSBram Moolenaar 5971ab74a5aSBram Moolenaar class bob 5981ab74a5aSBram Moolenaar { 5991ab74a5aSBram Moolenaar int foo() {return 1;} 6001ab74a5aSBram Moolenaar int bar; 6011ab74a5aSBram Moolenaar } 6021ab74a5aSBram Moolenaar 6031ab74a5aSBram Moolenaar main() 6041ab74a5aSBram Moolenaar { 6051ab74a5aSBram Moolenaar while(1) 6061ab74a5aSBram Moolenaar if (foo) 6071ab74a5aSBram Moolenaar { 6081ab74a5aSBram Moolenaar bar; 6091ab74a5aSBram Moolenaar } 6101ab74a5aSBram Moolenaar else { 6111ab74a5aSBram Moolenaar asdf; 6121ab74a5aSBram Moolenaar } 6131ab74a5aSBram Moolenaar misplacedline; 6141ab74a5aSBram Moolenaar } 6151ab74a5aSBram Moolenaar 6161ab74a5aSBram Moolenaar { 6171ab74a5aSBram Moolenaar if (clipboard.state == SELECT_DONE 6181ab74a5aSBram Moolenaar && ((row == clipboard.start.lnum 6191ab74a5aSBram Moolenaar && col >= clipboard.start.col) 6201ab74a5aSBram Moolenaar || row > clipboard.start.lnum)) 6211ab74a5aSBram Moolenaar } 6221ab74a5aSBram Moolenaar 6231ab74a5aSBram Moolenaar { 6241ab74a5aSBram Moolenaar if (1) {i += 4;} 6251ab74a5aSBram Moolenaar where_am_i; 6261ab74a5aSBram Moolenaar return 0; 6271ab74a5aSBram Moolenaar } 6281ab74a5aSBram Moolenaar 6291ab74a5aSBram Moolenaar { 6301ab74a5aSBram Moolenaar { 6311ab74a5aSBram Moolenaar } // sdf(asdf 6321ab74a5aSBram Moolenaar if (asdf) 6331ab74a5aSBram Moolenaar asd; 6341ab74a5aSBram Moolenaar } 6351ab74a5aSBram Moolenaar 6361ab74a5aSBram Moolenaar { 6371ab74a5aSBram Moolenaar label1: 6381ab74a5aSBram Moolenaar label2: 6391ab74a5aSBram Moolenaar } 6401ab74a5aSBram Moolenaar 6411ab74a5aSBram Moolenaar { 6421ab74a5aSBram Moolenaar int fooRet = foo(pBar1, false /*fKB*/, 6431ab74a5aSBram Moolenaar true /*fPTB*/, 3 /*nT*/, false /*fDF*/); 6441ab74a5aSBram Moolenaar f() { 6451ab74a5aSBram Moolenaar for ( i = 0; 6461ab74a5aSBram Moolenaar i < m; 6471ab74a5aSBram Moolenaar /* c */ i++ ) { 6481ab74a5aSBram Moolenaar a = b; 6491ab74a5aSBram Moolenaar } 6501ab74a5aSBram Moolenaar } 6511ab74a5aSBram Moolenaar } 6521ab74a5aSBram Moolenaar 6531ab74a5aSBram Moolenaar { 6541ab74a5aSBram Moolenaar f1(/*comment*/); 6551ab74a5aSBram Moolenaar f2(); 6561ab74a5aSBram Moolenaar } 6571ab74a5aSBram Moolenaar 6581ab74a5aSBram Moolenaar { 6591ab74a5aSBram Moolenaar do { 6601ab74a5aSBram Moolenaar if (foo) { 6611ab74a5aSBram Moolenaar } else 6621ab74a5aSBram Moolenaar ; 6631ab74a5aSBram Moolenaar } while (foo); 6641ab74a5aSBram Moolenaar foo(); // was wrong 6651ab74a5aSBram Moolenaar } 6661ab74a5aSBram Moolenaar 6671ab74a5aSBram Moolenaar int x; // no extra indent because of the ; 6681ab74a5aSBram Moolenaar void func() 6691ab74a5aSBram Moolenaar { 6701ab74a5aSBram Moolenaar } 6711ab74a5aSBram Moolenaar 6721ab74a5aSBram Moolenaar char *tab[] = {"aaa", 6731ab74a5aSBram Moolenaar "};", /* }; */ NULL} 6741ab74a5aSBram Moolenaar int indented; 6751ab74a5aSBram Moolenaar {} 6761ab74a5aSBram Moolenaar 6771ab74a5aSBram Moolenaar char *a[] = {"aaa", "bbb", 6781ab74a5aSBram Moolenaar "ccc", NULL}; 6791ab74a5aSBram Moolenaar // here 6801ab74a5aSBram Moolenaar 6811ab74a5aSBram Moolenaar char *tab[] = {"aaa", 6821ab74a5aSBram Moolenaar "xx", /* xx */}; /* asdf */ 6831ab74a5aSBram Moolenaar int not_indented; 6841ab74a5aSBram Moolenaar 6851ab74a5aSBram Moolenaar { 6861ab74a5aSBram Moolenaar do { 6871ab74a5aSBram Moolenaar switch (bla) 6881ab74a5aSBram Moolenaar { 6891ab74a5aSBram Moolenaar case 1: if (foo) 6901ab74a5aSBram Moolenaar bar; 6911ab74a5aSBram Moolenaar } 6921ab74a5aSBram Moolenaar } while (boo); 6931ab74a5aSBram Moolenaar wrong; 6941ab74a5aSBram Moolenaar } 6951ab74a5aSBram Moolenaar 6961ab74a5aSBram Moolenaar int foo, 6971ab74a5aSBram Moolenaar bar; 6981ab74a5aSBram Moolenaar int foo; 6991ab74a5aSBram Moolenaar 7001ab74a5aSBram Moolenaar #if defined(foo) \ 7011ab74a5aSBram Moolenaar && defined(bar) 7021ab74a5aSBram Moolenaar char * xx = "asdf\ 7031ab74a5aSBram Moolenaar foo\ 7041ab74a5aSBram Moolenaar bor"; 7051ab74a5aSBram Moolenaar int x; 7061ab74a5aSBram Moolenaar 7071ab74a5aSBram Moolenaar char *foo = "asdf\ 7081ab74a5aSBram Moolenaar asdf\ 7091ab74a5aSBram Moolenaar asdf", 7101ab74a5aSBram Moolenaar *bar; 7111ab74a5aSBram Moolenaar 7121ab74a5aSBram Moolenaar void f() 7131ab74a5aSBram Moolenaar { 7141ab74a5aSBram Moolenaar #if defined(foo) \ 7151ab74a5aSBram Moolenaar && defined(bar) 7161ab74a5aSBram Moolenaar char *foo = "asdf\ 7171ab74a5aSBram Moolenaar asdf\ 7181ab74a5aSBram Moolenaar asdf", 7191ab74a5aSBram Moolenaar *bar; 7201ab74a5aSBram Moolenaar { 7211ab74a5aSBram Moolenaar int i; 7221ab74a5aSBram Moolenaar char *foo = "asdf\ 7231ab74a5aSBram Moolenaar asdf\ 7241ab74a5aSBram Moolenaar asdf", 7251ab74a5aSBram Moolenaar *bar; 7261ab74a5aSBram Moolenaar } 7271ab74a5aSBram Moolenaar #endif 7281ab74a5aSBram Moolenaar } 7291ab74a5aSBram Moolenaar #endif 7301ab74a5aSBram Moolenaar 7311ab74a5aSBram Moolenaar int y; // comment 7321ab74a5aSBram Moolenaar // comment 7331ab74a5aSBram Moolenaar 7341ab74a5aSBram Moolenaar // comment 7351ab74a5aSBram Moolenaar 7361ab74a5aSBram Moolenaar { 7371ab74a5aSBram Moolenaar Constructor(int a, 7381ab74a5aSBram Moolenaar int b ) : BaseClass(a) 7391ab74a5aSBram Moolenaar { 7401ab74a5aSBram Moolenaar } 7411ab74a5aSBram Moolenaar } 7421ab74a5aSBram Moolenaar 7431ab74a5aSBram Moolenaar void foo() 7441ab74a5aSBram Moolenaar { 7451ab74a5aSBram Moolenaar char one, 7461ab74a5aSBram Moolenaar two; 7471ab74a5aSBram Moolenaar struct bla piet, 7481ab74a5aSBram Moolenaar jan; 7491ab74a5aSBram Moolenaar enum foo kees, 7501ab74a5aSBram Moolenaar jannie; 7511ab74a5aSBram Moolenaar static unsigned sdf, 7521ab74a5aSBram Moolenaar krap; 7531ab74a5aSBram Moolenaar unsigned int piet, 7541ab74a5aSBram Moolenaar jan; 7551ab74a5aSBram Moolenaar int 7561ab74a5aSBram Moolenaar kees, 7571ab74a5aSBram Moolenaar jan; 7581ab74a5aSBram Moolenaar } 7591ab74a5aSBram Moolenaar 7601ab74a5aSBram Moolenaar { 7611ab74a5aSBram Moolenaar t(int f, 7621ab74a5aSBram Moolenaar int d); // ) 7631ab74a5aSBram Moolenaar d(); 7641ab74a5aSBram Moolenaar } 7651ab74a5aSBram Moolenaar 7661ab74a5aSBram Moolenaar Constructor::Constructor(int a, 7671ab74a5aSBram Moolenaar int b 7681ab74a5aSBram Moolenaar ) : 7691ab74a5aSBram Moolenaar BaseClass(a, 7701ab74a5aSBram Moolenaar b, 7711ab74a5aSBram Moolenaar c), 7721ab74a5aSBram Moolenaar mMember(b), 7731ab74a5aSBram Moolenaar { 7741ab74a5aSBram Moolenaar } 7751ab74a5aSBram Moolenaar 7761ab74a5aSBram Moolenaar Constructor::Constructor(int a, 7771ab74a5aSBram Moolenaar int b ) : 7781ab74a5aSBram Moolenaar BaseClass(a) 7791ab74a5aSBram Moolenaar { 7801ab74a5aSBram Moolenaar } 7811ab74a5aSBram Moolenaar 7821ab74a5aSBram Moolenaar Constructor::Constructor(int a, 7831ab74a5aSBram Moolenaar int b ) /*x*/ : /*x*/ BaseClass(a), 7841ab74a5aSBram Moolenaar member(b) 7851ab74a5aSBram Moolenaar { 7861ab74a5aSBram Moolenaar } 7871ab74a5aSBram Moolenaar 7881ab74a5aSBram Moolenaar A::A(int a, int b) 7891ab74a5aSBram Moolenaar : aa(a), 7901ab74a5aSBram Moolenaar bb(b), 7911ab74a5aSBram Moolenaar cc(c) 7921ab74a5aSBram Moolenaar { 7931ab74a5aSBram Moolenaar } 7941ab74a5aSBram Moolenaar 7951ab74a5aSBram Moolenaar class CAbc : 7961ab74a5aSBram Moolenaar public BaseClass1, 7971ab74a5aSBram Moolenaar protected BaseClass2 7981ab74a5aSBram Moolenaar { 7991ab74a5aSBram Moolenaar int Test() { return FALSE; } 8001ab74a5aSBram Moolenaar int Test1() { return TRUE; } 8011ab74a5aSBram Moolenaar 8021ab74a5aSBram Moolenaar CAbc(int a, int b ) : 8031ab74a5aSBram Moolenaar BaseClass(a) 8041ab74a5aSBram Moolenaar { 8051ab74a5aSBram Moolenaar switch(xxx) 8061ab74a5aSBram Moolenaar { 8071ab74a5aSBram Moolenaar case abc: 8081ab74a5aSBram Moolenaar asdf(); 8091ab74a5aSBram Moolenaar break; 8101ab74a5aSBram Moolenaar 8111ab74a5aSBram Moolenaar case 999: 8121ab74a5aSBram Moolenaar baer(); 8131ab74a5aSBram Moolenaar break; 8141ab74a5aSBram Moolenaar } 8151ab74a5aSBram Moolenaar } 8161ab74a5aSBram Moolenaar 8174b96df5aSBram Moolenaar public: // <-- this was incorrectly indented before!! 8181ab74a5aSBram Moolenaar void testfall(); 8191ab74a5aSBram Moolenaar protected: 8201ab74a5aSBram Moolenaar void testfall(); 8211ab74a5aSBram Moolenaar }; 8221ab74a5aSBram Moolenaar 8231ab74a5aSBram Moolenaar class CAbc : public BaseClass1, 8241ab74a5aSBram Moolenaar protected BaseClass2 8251ab74a5aSBram Moolenaar { 8261ab74a5aSBram Moolenaar }; 8271ab74a5aSBram Moolenaar 8281ab74a5aSBram Moolenaar static struct 8291ab74a5aSBram Moolenaar { 8301ab74a5aSBram Moolenaar int a; 8311ab74a5aSBram Moolenaar int b; 8321ab74a5aSBram Moolenaar } variable[COUNT] = 8331ab74a5aSBram Moolenaar { 8341ab74a5aSBram Moolenaar { 8351ab74a5aSBram Moolenaar 123, 8361ab74a5aSBram Moolenaar 456 8371ab74a5aSBram Moolenaar }, 8381ab74a5aSBram Moolenaar { 8391ab74a5aSBram Moolenaar 123, 8401ab74a5aSBram Moolenaar 456 8411ab74a5aSBram Moolenaar } 8421ab74a5aSBram Moolenaar }; 8431ab74a5aSBram Moolenaar 8441ab74a5aSBram Moolenaar static struct 8451ab74a5aSBram Moolenaar { 8461ab74a5aSBram Moolenaar int a; 8471ab74a5aSBram Moolenaar int b; 8481ab74a5aSBram Moolenaar } variable[COUNT] = 8491ab74a5aSBram Moolenaar { 8501ab74a5aSBram Moolenaar { 123, 456 }, 8511ab74a5aSBram Moolenaar { 123, 456 } 8521ab74a5aSBram Moolenaar }; 8531ab74a5aSBram Moolenaar 8541ab74a5aSBram Moolenaar void asdf() /* ind_maxparen may cause trouble here */ 8551ab74a5aSBram Moolenaar { 8561ab74a5aSBram Moolenaar if ((0 8571ab74a5aSBram Moolenaar && 1 8581ab74a5aSBram Moolenaar && 1 8591ab74a5aSBram Moolenaar && 1 8601ab74a5aSBram Moolenaar && 1 8611ab74a5aSBram Moolenaar && 1 8621ab74a5aSBram Moolenaar && 1 8631ab74a5aSBram Moolenaar && 1 8641ab74a5aSBram Moolenaar && 1 8651ab74a5aSBram Moolenaar && 1 8661ab74a5aSBram Moolenaar && 1 8671ab74a5aSBram Moolenaar && 1 8681ab74a5aSBram Moolenaar && 1 8691ab74a5aSBram Moolenaar && 1 8701ab74a5aSBram Moolenaar && 1 8711ab74a5aSBram Moolenaar && 1 8721ab74a5aSBram Moolenaar && 1 8731ab74a5aSBram Moolenaar && 1 8741ab74a5aSBram Moolenaar && 1 8751ab74a5aSBram Moolenaar && 1 8761ab74a5aSBram Moolenaar && 1 8771ab74a5aSBram Moolenaar && 1 8781ab74a5aSBram Moolenaar && 1 8791ab74a5aSBram Moolenaar && 1 8801ab74a5aSBram Moolenaar && 1 8811ab74a5aSBram Moolenaar && 1)) break; 8821ab74a5aSBram Moolenaar } 8831ab74a5aSBram Moolenaar 8841ab74a5aSBram Moolenaar foo() 8851ab74a5aSBram Moolenaar { 8861ab74a5aSBram Moolenaar a = cond ? foo() : asdf 8871ab74a5aSBram Moolenaar + asdf; 8881ab74a5aSBram Moolenaar 8891ab74a5aSBram Moolenaar a = cond ? 8901ab74a5aSBram Moolenaar foo() : asdf 8911ab74a5aSBram Moolenaar + asdf; 8921ab74a5aSBram Moolenaar } 8931ab74a5aSBram Moolenaar 8941ab74a5aSBram Moolenaar int main(void) 8951ab74a5aSBram Moolenaar { 8961ab74a5aSBram Moolenaar if (a) 8971ab74a5aSBram Moolenaar if (b) 8981ab74a5aSBram Moolenaar 2; 8991ab74a5aSBram Moolenaar else 3; 9001ab74a5aSBram Moolenaar next_line_of_code(); 9011ab74a5aSBram Moolenaar } 9021ab74a5aSBram Moolenaar 9031ab74a5aSBram Moolenaar barry() 9041ab74a5aSBram Moolenaar { 9051ab74a5aSBram Moolenaar Foo::Foo (int one, 9061ab74a5aSBram Moolenaar int two) 9071ab74a5aSBram Moolenaar : something(4) 9081ab74a5aSBram Moolenaar {} 9091ab74a5aSBram Moolenaar } 9101ab74a5aSBram Moolenaar 9111ab74a5aSBram Moolenaar barry() 9121ab74a5aSBram Moolenaar { 9131ab74a5aSBram Moolenaar Foo::Foo (int one, int two) 9141ab74a5aSBram Moolenaar : something(4) 9151ab74a5aSBram Moolenaar {} 9161ab74a5aSBram Moolenaar } 9171ab74a5aSBram Moolenaar 9181ab74a5aSBram Moolenaar Constructor::Constructor(int a, 9191ab74a5aSBram Moolenaar int b 9201ab74a5aSBram Moolenaar ) : 9211ab74a5aSBram Moolenaar BaseClass(a, 9221ab74a5aSBram Moolenaar b, 9231ab74a5aSBram Moolenaar c), 9241ab74a5aSBram Moolenaar mMember(b) 9251ab74a5aSBram Moolenaar { 9261ab74a5aSBram Moolenaar } 9271ab74a5aSBram Moolenaar int main () 9281ab74a5aSBram Moolenaar { 9291ab74a5aSBram Moolenaar if (lala) 9301ab74a5aSBram Moolenaar do 9311ab74a5aSBram Moolenaar ++(*lolo); 9321ab74a5aSBram Moolenaar while (lili 9331ab74a5aSBram Moolenaar && lele); 9341ab74a5aSBram Moolenaar lulu; 9351ab74a5aSBram Moolenaar } 9361ab74a5aSBram Moolenaar 9371ab74a5aSBram Moolenaar int main () 9381ab74a5aSBram Moolenaar { 9391ab74a5aSBram Moolenaar switch (c) 9401ab74a5aSBram Moolenaar { 9411ab74a5aSBram Moolenaar case 'c': if (cond) 9421ab74a5aSBram Moolenaar { 9431ab74a5aSBram Moolenaar } 9441ab74a5aSBram Moolenaar } 9451ab74a5aSBram Moolenaar } 9461ab74a5aSBram Moolenaar 9471ab74a5aSBram Moolenaar main() 9481ab74a5aSBram Moolenaar { 9491ab74a5aSBram Moolenaar (void) MyFancyFuasdfadsfnction( 9501ab74a5aSBram Moolenaar argument); 9511ab74a5aSBram Moolenaar } 9521ab74a5aSBram Moolenaar 9531ab74a5aSBram Moolenaar main() 9541ab74a5aSBram Moolenaar { 9551ab74a5aSBram Moolenaar char foo[] = "/*"; 9561ab74a5aSBram Moolenaar /* as 9571ab74a5aSBram Moolenaar df */ 9581ab74a5aSBram Moolenaar hello 9591ab74a5aSBram Moolenaar } 9601ab74a5aSBram Moolenaar 9611ab74a5aSBram Moolenaar /* valid namespaces with normal indent */ 9621ab74a5aSBram Moolenaar namespace 9631ab74a5aSBram Moolenaar { 9641ab74a5aSBram Moolenaar { 9651ab74a5aSBram Moolenaar 111111111111; 9661ab74a5aSBram Moolenaar } 9671ab74a5aSBram Moolenaar } 9681ab74a5aSBram Moolenaar namespace /* test */ 9691ab74a5aSBram Moolenaar { 9701ab74a5aSBram Moolenaar 11111111111111111; 9711ab74a5aSBram Moolenaar } 9721ab74a5aSBram Moolenaar namespace // test 9731ab74a5aSBram Moolenaar { 9741ab74a5aSBram Moolenaar 111111111111111111; 9751ab74a5aSBram Moolenaar } 9761ab74a5aSBram Moolenaar namespace 9771ab74a5aSBram Moolenaar { 9781ab74a5aSBram Moolenaar 111111111111111111; 9791ab74a5aSBram Moolenaar } 9801ab74a5aSBram Moolenaar namespace test 9811ab74a5aSBram Moolenaar { 9821ab74a5aSBram Moolenaar 111111111111111111; 9831ab74a5aSBram Moolenaar } 9841ab74a5aSBram Moolenaar namespace{ 9851ab74a5aSBram Moolenaar 111111111111111111; 9861ab74a5aSBram Moolenaar } 9871ab74a5aSBram Moolenaar namespace test{ 9881ab74a5aSBram Moolenaar 111111111111111111; 9891ab74a5aSBram Moolenaar } 9901ab74a5aSBram Moolenaar namespace { 9911ab74a5aSBram Moolenaar 111111111111111111; 9921ab74a5aSBram Moolenaar } 9931ab74a5aSBram Moolenaar namespace test { 9941ab74a5aSBram Moolenaar 111111111111111111; 9951ab74a5aSBram Moolenaar namespace test2 { 9961ab74a5aSBram Moolenaar 22222222222222222; 9971ab74a5aSBram Moolenaar } 9981ab74a5aSBram Moolenaar } 9991ab74a5aSBram Moolenaar 10001ab74a5aSBram Moolenaar /* invalid namespaces use block indent */ 10011ab74a5aSBram Moolenaar namespace test test2 { 10021ab74a5aSBram Moolenaar 111111111111111111111; 10031ab74a5aSBram Moolenaar } 10041ab74a5aSBram Moolenaar namespace11111111111 { 10051ab74a5aSBram Moolenaar 111111111111; 10061ab74a5aSBram Moolenaar } 10071ab74a5aSBram Moolenaar namespace() { 10081ab74a5aSBram Moolenaar 1111111111111; 10091ab74a5aSBram Moolenaar } 10101ab74a5aSBram Moolenaar namespace() 10111ab74a5aSBram Moolenaar { 10121ab74a5aSBram Moolenaar 111111111111111111; 10131ab74a5aSBram Moolenaar } 10141ab74a5aSBram Moolenaar namespace test test2 10151ab74a5aSBram Moolenaar { 10161ab74a5aSBram Moolenaar 1111111111111111111; 10171ab74a5aSBram Moolenaar } 10181ab74a5aSBram Moolenaar namespace111111111 10191ab74a5aSBram Moolenaar { 10201ab74a5aSBram Moolenaar 111111111111111111; 10211ab74a5aSBram Moolenaar } 10221ab74a5aSBram Moolenaar 10231ab74a5aSBram Moolenaar void getstring() { 10241ab74a5aSBram Moolenaar /* Raw strings */ 10251ab74a5aSBram Moolenaar const char* s = R"( 10261ab74a5aSBram Moolenaar test { 10271ab74a5aSBram Moolenaar # comment 10281ab74a5aSBram Moolenaar field: 123 10291ab74a5aSBram Moolenaar } 10301ab74a5aSBram Moolenaar )"; 10311ab74a5aSBram Moolenaar } 10321ab74a5aSBram Moolenaar 10331ab74a5aSBram Moolenaar void getstring() { 10341ab74a5aSBram Moolenaar const char* s = R"foo( 10351ab74a5aSBram Moolenaar test { 10361ab74a5aSBram Moolenaar # comment 10371ab74a5aSBram Moolenaar field: 123 10381ab74a5aSBram Moolenaar } 10391ab74a5aSBram Moolenaar )foo"; 10401ab74a5aSBram Moolenaar } 10411ab74a5aSBram Moolenaar 10421ab74a5aSBram Moolenaar { 10431ab74a5aSBram Moolenaar int a[4] = { 10441ab74a5aSBram Moolenaar [0] = 0, 10451ab74a5aSBram Moolenaar [1] = 1, 10461ab74a5aSBram Moolenaar [2] = 2, 10471ab74a5aSBram Moolenaar [3] = 3, 10481ab74a5aSBram Moolenaar }; 10491ab74a5aSBram Moolenaar } 10501ab74a5aSBram Moolenaar 10511ab74a5aSBram Moolenaar { 10521ab74a5aSBram Moolenaar a = b[2] 10531ab74a5aSBram Moolenaar + 3; 10541ab74a5aSBram Moolenaar } 10551ab74a5aSBram Moolenaar 10561ab74a5aSBram Moolenaar { 10571ab74a5aSBram Moolenaar if (1) 10581ab74a5aSBram Moolenaar /* aaaaa 10591ab74a5aSBram Moolenaar * bbbbb 10601ab74a5aSBram Moolenaar */ 10611ab74a5aSBram Moolenaar a = 1; 10621ab74a5aSBram Moolenaar } 10631ab74a5aSBram Moolenaar 10641ab74a5aSBram Moolenaar void func() 10651ab74a5aSBram Moolenaar { 10661ab74a5aSBram Moolenaar switch (foo) 10671ab74a5aSBram Moolenaar { 10681ab74a5aSBram Moolenaar case (bar): 10691ab74a5aSBram Moolenaar if (baz()) 10701ab74a5aSBram Moolenaar quux(); 10711ab74a5aSBram Moolenaar break; 10721ab74a5aSBram Moolenaar case (shmoo): 10731ab74a5aSBram Moolenaar if (!bar) 10741ab74a5aSBram Moolenaar { 10751ab74a5aSBram Moolenaar } 10761ab74a5aSBram Moolenaar case (foo1): 10771ab74a5aSBram Moolenaar switch (bar) 10781ab74a5aSBram Moolenaar { 10791ab74a5aSBram Moolenaar case baz: 10801ab74a5aSBram Moolenaar baz_f(); 10811ab74a5aSBram Moolenaar break; 10821ab74a5aSBram Moolenaar } 10831ab74a5aSBram Moolenaar break; 10841ab74a5aSBram Moolenaar default: 10851ab74a5aSBram Moolenaar baz(); 10861ab74a5aSBram Moolenaar baz(); 10871ab74a5aSBram Moolenaar break; 10881ab74a5aSBram Moolenaar } 10891ab74a5aSBram Moolenaar } 10901ab74a5aSBram Moolenaar 10911ab74a5aSBram Moolenaar /* end of AUTO */ 10921ab74a5aSBram Moolenaar [CODE] 10931ab74a5aSBram Moolenaar 10941ab74a5aSBram Moolenaar call append(0, code) 10951ab74a5aSBram Moolenaar normal gg 10961ab74a5aSBram Moolenaar call search('start of AUTO') 10971ab74a5aSBram Moolenaar exe "normal =/end of AUTO\<CR>" 10981ab74a5aSBram Moolenaar 10991ab74a5aSBram Moolenaar let expected =<< trim [CODE] 11001ab74a5aSBram Moolenaar /* start of AUTO matically checked vim: set ts=4 : */ 11011ab74a5aSBram Moolenaar { 11021ab74a5aSBram Moolenaar if (test) 11031ab74a5aSBram Moolenaar cmd1; 11041ab74a5aSBram Moolenaar cmd2; 11051ab74a5aSBram Moolenaar } 11061ab74a5aSBram Moolenaar 11071ab74a5aSBram Moolenaar { 11081ab74a5aSBram Moolenaar if (test) 11091ab74a5aSBram Moolenaar cmd1; 11101ab74a5aSBram Moolenaar else 11111ab74a5aSBram Moolenaar cmd2; 11121ab74a5aSBram Moolenaar } 11131ab74a5aSBram Moolenaar 11141ab74a5aSBram Moolenaar { 11151ab74a5aSBram Moolenaar if (test) 11161ab74a5aSBram Moolenaar { 11171ab74a5aSBram Moolenaar cmd1; 11181ab74a5aSBram Moolenaar cmd2; 11191ab74a5aSBram Moolenaar } 11201ab74a5aSBram Moolenaar } 11211ab74a5aSBram Moolenaar 11221ab74a5aSBram Moolenaar { 11231ab74a5aSBram Moolenaar if (test) 11241ab74a5aSBram Moolenaar { 11251ab74a5aSBram Moolenaar cmd1; 11261ab74a5aSBram Moolenaar else 11271ab74a5aSBram Moolenaar } 11281ab74a5aSBram Moolenaar } 11291ab74a5aSBram Moolenaar 11301ab74a5aSBram Moolenaar { 11311ab74a5aSBram Moolenaar while (this) 11321ab74a5aSBram Moolenaar if (test) 11331ab74a5aSBram Moolenaar cmd1; 11341ab74a5aSBram Moolenaar cmd2; 11351ab74a5aSBram Moolenaar } 11361ab74a5aSBram Moolenaar 11371ab74a5aSBram Moolenaar { 11381ab74a5aSBram Moolenaar while (this) 11391ab74a5aSBram Moolenaar if (test) 11401ab74a5aSBram Moolenaar cmd1; 11411ab74a5aSBram Moolenaar else 11421ab74a5aSBram Moolenaar cmd2; 11431ab74a5aSBram Moolenaar } 11441ab74a5aSBram Moolenaar 11451ab74a5aSBram Moolenaar { 11461ab74a5aSBram Moolenaar if (test) 11471ab74a5aSBram Moolenaar { 11481ab74a5aSBram Moolenaar cmd; 11491ab74a5aSBram Moolenaar } 11501ab74a5aSBram Moolenaar 11511ab74a5aSBram Moolenaar if (test) 11521ab74a5aSBram Moolenaar cmd; 11531ab74a5aSBram Moolenaar } 11541ab74a5aSBram Moolenaar 11551ab74a5aSBram Moolenaar { 11561ab74a5aSBram Moolenaar if (test) { 11571ab74a5aSBram Moolenaar cmd; 11581ab74a5aSBram Moolenaar } 11591ab74a5aSBram Moolenaar 11601ab74a5aSBram Moolenaar if (test) cmd; 11611ab74a5aSBram Moolenaar } 11621ab74a5aSBram Moolenaar 11631ab74a5aSBram Moolenaar { 11641ab74a5aSBram Moolenaar cmd1; 11651ab74a5aSBram Moolenaar for (blah) 11661ab74a5aSBram Moolenaar while (this) 11671ab74a5aSBram Moolenaar if (test) 11681ab74a5aSBram Moolenaar cmd2; 11691ab74a5aSBram Moolenaar cmd3; 11701ab74a5aSBram Moolenaar } 11711ab74a5aSBram Moolenaar 11721ab74a5aSBram Moolenaar { 11731ab74a5aSBram Moolenaar cmd1; 11741ab74a5aSBram Moolenaar for (blah) 11751ab74a5aSBram Moolenaar while (this) 11761ab74a5aSBram Moolenaar if (test) 11771ab74a5aSBram Moolenaar cmd2; 11781ab74a5aSBram Moolenaar cmd3; 11791ab74a5aSBram Moolenaar 11801ab74a5aSBram Moolenaar if (test) 11811ab74a5aSBram Moolenaar { 11821ab74a5aSBram Moolenaar cmd1; 11831ab74a5aSBram Moolenaar cmd2; 11841ab74a5aSBram Moolenaar cmd3; 11851ab74a5aSBram Moolenaar } 11861ab74a5aSBram Moolenaar } 11871ab74a5aSBram Moolenaar 11881ab74a5aSBram Moolenaar 11891ab74a5aSBram Moolenaar /* Test for 'cindent' do/while mixed with if/else: */ 11901ab74a5aSBram Moolenaar 11911ab74a5aSBram Moolenaar { 11921ab74a5aSBram Moolenaar do 11931ab74a5aSBram Moolenaar if (asdf) 11941ab74a5aSBram Moolenaar asdfasd; 11951ab74a5aSBram Moolenaar while (cond); 11961ab74a5aSBram Moolenaar 11971ab74a5aSBram Moolenaar do 11981ab74a5aSBram Moolenaar if (asdf) 11991ab74a5aSBram Moolenaar while (asdf) 12001ab74a5aSBram Moolenaar asdf; 12011ab74a5aSBram Moolenaar while (asdf); 12021ab74a5aSBram Moolenaar } 12031ab74a5aSBram Moolenaar 12041ab74a5aSBram Moolenaar /* Test for 'cindent' with two ) on a continuation line */ 12051ab74a5aSBram Moolenaar { 12061ab74a5aSBram Moolenaar if (asdfasdf;asldkfj asdlkfj as;ldkfj sal;d 12071ab74a5aSBram Moolenaar aal;sdkjf ( ;asldfkja;sldfk 12081ab74a5aSBram Moolenaar al;sdjfka ;slkdf ) sa;ldkjfsa dlk;) 12091ab74a5aSBram Moolenaar line up here; 12101ab74a5aSBram Moolenaar } 12111ab74a5aSBram Moolenaar 12121ab74a5aSBram Moolenaar 12131ab74a5aSBram Moolenaar /* C++ tests: */ 12141ab74a5aSBram Moolenaar 12151ab74a5aSBram Moolenaar // foo() these three lines should remain in column 0 12161ab74a5aSBram Moolenaar // { 12171ab74a5aSBram Moolenaar // } 12181ab74a5aSBram Moolenaar 12191ab74a5aSBram Moolenaar /* Test for continuation and unterminated lines: */ 12201ab74a5aSBram Moolenaar { 12211ab74a5aSBram Moolenaar i = 99 + 14325 + 12221ab74a5aSBram Moolenaar 21345 + 12231ab74a5aSBram Moolenaar 21345 + 12241ab74a5aSBram Moolenaar 21345 + ( 21345 + 12251ab74a5aSBram Moolenaar 21345) + 12261ab74a5aSBram Moolenaar 2345 + 12271ab74a5aSBram Moolenaar 1234; 12281ab74a5aSBram Moolenaar c = 1; 12291ab74a5aSBram Moolenaar } 12301ab74a5aSBram Moolenaar 12311ab74a5aSBram Moolenaar /* 12321ab74a5aSBram Moolenaar testje for indent with empty line 12331ab74a5aSBram Moolenaar 12341ab74a5aSBram Moolenaar here */ 12351ab74a5aSBram Moolenaar 12361ab74a5aSBram Moolenaar { 12371ab74a5aSBram Moolenaar if (testing && 12381ab74a5aSBram Moolenaar not a joke || 12391ab74a5aSBram Moolenaar line up here) 12401ab74a5aSBram Moolenaar hay; 12411ab74a5aSBram Moolenaar if (testing && 12421ab74a5aSBram Moolenaar (not a joke || testing 12431ab74a5aSBram Moolenaar )line up here) 12441ab74a5aSBram Moolenaar hay; 12451ab74a5aSBram Moolenaar if (testing && 12461ab74a5aSBram Moolenaar (not a joke || testing 12471ab74a5aSBram Moolenaar line up here)) 12481ab74a5aSBram Moolenaar hay; 12491ab74a5aSBram Moolenaar } 12501ab74a5aSBram Moolenaar 12511ab74a5aSBram Moolenaar 12521ab74a5aSBram Moolenaar { 12531ab74a5aSBram Moolenaar switch (c) 12541ab74a5aSBram Moolenaar { 12551ab74a5aSBram Moolenaar case xx: 12561ab74a5aSBram Moolenaar do 12571ab74a5aSBram Moolenaar if (asdf) 12581ab74a5aSBram Moolenaar do 12591ab74a5aSBram Moolenaar asdfasdf; 12601ab74a5aSBram Moolenaar while (asdf); 12611ab74a5aSBram Moolenaar else 12621ab74a5aSBram Moolenaar asdfasdf; 12631ab74a5aSBram Moolenaar while (cond); 12641ab74a5aSBram Moolenaar case yy: 12651ab74a5aSBram Moolenaar case xx: 12661ab74a5aSBram Moolenaar case zz: 12671ab74a5aSBram Moolenaar testing; 12681ab74a5aSBram Moolenaar } 12691ab74a5aSBram Moolenaar } 12701ab74a5aSBram Moolenaar 12711ab74a5aSBram Moolenaar { 12721ab74a5aSBram Moolenaar if (cond) { 12731ab74a5aSBram Moolenaar foo; 12741ab74a5aSBram Moolenaar } 12751ab74a5aSBram Moolenaar else 12761ab74a5aSBram Moolenaar { 12771ab74a5aSBram Moolenaar bar; 12781ab74a5aSBram Moolenaar } 12791ab74a5aSBram Moolenaar } 12801ab74a5aSBram Moolenaar 12811ab74a5aSBram Moolenaar { 12821ab74a5aSBram Moolenaar if (alskdfj ;alsdkfjal;skdjf (;sadlkfsa ;dlkf j;alksdfj ;alskdjf 12831ab74a5aSBram Moolenaar alsdkfj (asldk;fj 12841ab74a5aSBram Moolenaar awith cino=(0 ;lf this one goes to below the paren with == 12851ab74a5aSBram Moolenaar ;laksjfd ;lsakdjf ;alskdf asd) 12861ab74a5aSBram Moolenaar asdfasdf;))) 12871ab74a5aSBram Moolenaar asdfasdf; 12881ab74a5aSBram Moolenaar } 12891ab74a5aSBram Moolenaar 12901ab74a5aSBram Moolenaar int 12911ab74a5aSBram Moolenaar func(a, b) 12921ab74a5aSBram Moolenaar int a; 12931ab74a5aSBram Moolenaar int c; 12941ab74a5aSBram Moolenaar { 12951ab74a5aSBram Moolenaar if (c1 && (c2 || 12961ab74a5aSBram Moolenaar c3)) 12971ab74a5aSBram Moolenaar foo; 12981ab74a5aSBram Moolenaar if (c1 && 12991ab74a5aSBram Moolenaar (c2 || c3) 13001ab74a5aSBram Moolenaar ) 13011ab74a5aSBram Moolenaar } 13021ab74a5aSBram Moolenaar 13031ab74a5aSBram Moolenaar { 13041ab74a5aSBram Moolenaar while (asd) 13051ab74a5aSBram Moolenaar { 13061ab74a5aSBram Moolenaar if (asdf) 13071ab74a5aSBram Moolenaar if (test) 13081ab74a5aSBram Moolenaar if (that) 13091ab74a5aSBram Moolenaar { 13101ab74a5aSBram Moolenaar if (asdf) 13111ab74a5aSBram Moolenaar do 13121ab74a5aSBram Moolenaar cdasd; 13131ab74a5aSBram Moolenaar while (as 13141ab74a5aSBram Moolenaar df); 13151ab74a5aSBram Moolenaar } 13161ab74a5aSBram Moolenaar else 13171ab74a5aSBram Moolenaar if (asdf) 13181ab74a5aSBram Moolenaar asdf; 13191ab74a5aSBram Moolenaar else 13201ab74a5aSBram Moolenaar asdf; 13211ab74a5aSBram Moolenaar asdf; 13221ab74a5aSBram Moolenaar } 13231ab74a5aSBram Moolenaar } 13241ab74a5aSBram Moolenaar 13251ab74a5aSBram Moolenaar { 13261ab74a5aSBram Moolenaar s = "/*"; b = ';' 13271ab74a5aSBram Moolenaar s = "/*"; b = ';'; 13281ab74a5aSBram Moolenaar a = b; 13291ab74a5aSBram Moolenaar } 13301ab74a5aSBram Moolenaar 13311ab74a5aSBram Moolenaar { 13321ab74a5aSBram Moolenaar switch (a) 13331ab74a5aSBram Moolenaar { 13341ab74a5aSBram Moolenaar case a: 13351ab74a5aSBram Moolenaar switch (t) 13361ab74a5aSBram Moolenaar { 13371ab74a5aSBram Moolenaar case 1: 13381ab74a5aSBram Moolenaar cmd; 13391ab74a5aSBram Moolenaar break; 13401ab74a5aSBram Moolenaar case 2: 13411ab74a5aSBram Moolenaar cmd; 13421ab74a5aSBram Moolenaar break; 13431ab74a5aSBram Moolenaar } 13441ab74a5aSBram Moolenaar cmd; 13451ab74a5aSBram Moolenaar break; 13461ab74a5aSBram Moolenaar case b: 13471ab74a5aSBram Moolenaar { 13481ab74a5aSBram Moolenaar int i; 13491ab74a5aSBram Moolenaar cmd; 13501ab74a5aSBram Moolenaar } 13511ab74a5aSBram Moolenaar break; 13521ab74a5aSBram Moolenaar case c: { 13531ab74a5aSBram Moolenaar int i; 13541ab74a5aSBram Moolenaar cmd; 13551ab74a5aSBram Moolenaar } 13561ab74a5aSBram Moolenaar case d: if (cond && 13571ab74a5aSBram Moolenaar test) { /* this line doesn't work right */ 13581ab74a5aSBram Moolenaar int i; 13591ab74a5aSBram Moolenaar cmd; 13601ab74a5aSBram Moolenaar } 13611ab74a5aSBram Moolenaar break; 13621ab74a5aSBram Moolenaar } 13631ab74a5aSBram Moolenaar } 13641ab74a5aSBram Moolenaar 13651ab74a5aSBram Moolenaar { 13661ab74a5aSBram Moolenaar if (!(vim_strchr(p_cpo, CPO_BUFOPTGLOB) != NULL && entering) && 13671ab74a5aSBram Moolenaar (bp_to->b_p_initialized || 13681ab74a5aSBram Moolenaar (!entering && vim_strchr(p_cpo, CPO_BUFOPT) != NULL))) 13691ab74a5aSBram Moolenaar return; 13701ab74a5aSBram Moolenaar label : 13711ab74a5aSBram Moolenaar asdf = asdf ? 13721ab74a5aSBram Moolenaar asdf : asdf; 13731ab74a5aSBram Moolenaar asdf = asdf ? 13741ab74a5aSBram Moolenaar asdf: asdf; 13751ab74a5aSBram Moolenaar } 13761ab74a5aSBram Moolenaar 13771ab74a5aSBram Moolenaar /* Special Comments : This function has the added complexity (compared */ 13781ab74a5aSBram Moolenaar /* : to addtolist) of having to check for a detail */ 13791ab74a5aSBram Moolenaar /* : texture and add that to the list first. */ 13801ab74a5aSBram Moolenaar 13811ab74a5aSBram Moolenaar char *(array[100]) = { 13821ab74a5aSBram Moolenaar "testje", 13831ab74a5aSBram Moolenaar "foo", 13841ab74a5aSBram Moolenaar "bar", 13851ab74a5aSBram Moolenaar } 13861ab74a5aSBram Moolenaar 13871ab74a5aSBram Moolenaar enum soppie 13881ab74a5aSBram Moolenaar { 13891ab74a5aSBram Moolenaar yes = 0, 13901ab74a5aSBram Moolenaar no, 13911ab74a5aSBram Moolenaar maybe 13921ab74a5aSBram Moolenaar }; 13931ab74a5aSBram Moolenaar 13941ab74a5aSBram Moolenaar typedef enum soppie 13951ab74a5aSBram Moolenaar { 13961ab74a5aSBram Moolenaar yes = 0, 13971ab74a5aSBram Moolenaar no, 13981ab74a5aSBram Moolenaar maybe 13991ab74a5aSBram Moolenaar }; 14001ab74a5aSBram Moolenaar 14011ab74a5aSBram Moolenaar static enum 14021ab74a5aSBram Moolenaar { 14031ab74a5aSBram Moolenaar yes = 0, 14041ab74a5aSBram Moolenaar no, 14051ab74a5aSBram Moolenaar maybe 14061ab74a5aSBram Moolenaar } soppie; 14071ab74a5aSBram Moolenaar 14081ab74a5aSBram Moolenaar public static enum 14091ab74a5aSBram Moolenaar { 14101ab74a5aSBram Moolenaar yes = 0, 14111ab74a5aSBram Moolenaar no, 14121ab74a5aSBram Moolenaar maybe 14131ab74a5aSBram Moolenaar } soppie; 14141ab74a5aSBram Moolenaar 14151ab74a5aSBram Moolenaar static private enum 14161ab74a5aSBram Moolenaar { 14171ab74a5aSBram Moolenaar yes = 0, 14181ab74a5aSBram Moolenaar no, 14191ab74a5aSBram Moolenaar maybe 14201ab74a5aSBram Moolenaar } soppie; 14211ab74a5aSBram Moolenaar 14221ab74a5aSBram Moolenaar { 14231ab74a5aSBram Moolenaar int a, 14241ab74a5aSBram Moolenaar b; 14251ab74a5aSBram Moolenaar } 14261ab74a5aSBram Moolenaar 14271ab74a5aSBram Moolenaar { 14281ab74a5aSBram Moolenaar struct Type 14291ab74a5aSBram Moolenaar { 14301ab74a5aSBram Moolenaar int i; 14311ab74a5aSBram Moolenaar char *str; 14321ab74a5aSBram Moolenaar } var[] = 14331ab74a5aSBram Moolenaar { 14341ab74a5aSBram Moolenaar 0, "zero", 14351ab74a5aSBram Moolenaar 1, "one", 14361ab74a5aSBram Moolenaar 2, "two", 14371ab74a5aSBram Moolenaar 3, "three" 14381ab74a5aSBram Moolenaar }; 14391ab74a5aSBram Moolenaar 14401ab74a5aSBram Moolenaar float matrix[3][3] = 14411ab74a5aSBram Moolenaar { 14421ab74a5aSBram Moolenaar { 14431ab74a5aSBram Moolenaar 0, 14441ab74a5aSBram Moolenaar 1, 14451ab74a5aSBram Moolenaar 2 14461ab74a5aSBram Moolenaar }, 14471ab74a5aSBram Moolenaar { 14481ab74a5aSBram Moolenaar 3, 14491ab74a5aSBram Moolenaar 4, 14501ab74a5aSBram Moolenaar 5 14511ab74a5aSBram Moolenaar }, 14521ab74a5aSBram Moolenaar { 14531ab74a5aSBram Moolenaar 6, 14541ab74a5aSBram Moolenaar 7, 14551ab74a5aSBram Moolenaar 8 14561ab74a5aSBram Moolenaar } 14571ab74a5aSBram Moolenaar }; 14581ab74a5aSBram Moolenaar } 14591ab74a5aSBram Moolenaar 14601ab74a5aSBram Moolenaar { 14611ab74a5aSBram Moolenaar /* blah ( blah */ 14621ab74a5aSBram Moolenaar /* where does this go? */ 14631ab74a5aSBram Moolenaar 14641ab74a5aSBram Moolenaar /* blah ( blah */ 14651ab74a5aSBram Moolenaar cmd; 14661ab74a5aSBram Moolenaar 14671ab74a5aSBram Moolenaar func(arg1, 14681ab74a5aSBram Moolenaar /* comment */ 14691ab74a5aSBram Moolenaar arg2); 14701ab74a5aSBram Moolenaar a; 14711ab74a5aSBram Moolenaar { 14721ab74a5aSBram Moolenaar b; 14731ab74a5aSBram Moolenaar { 14741ab74a5aSBram Moolenaar c; /* Hey, NOW it indents?! */ 14751ab74a5aSBram Moolenaar } 14761ab74a5aSBram Moolenaar } 14771ab74a5aSBram Moolenaar 14781ab74a5aSBram Moolenaar { 14791ab74a5aSBram Moolenaar func(arg1, 14801ab74a5aSBram Moolenaar arg2, 14811ab74a5aSBram Moolenaar arg3); 14821ab74a5aSBram Moolenaar /* Hey, what am I doing here? Is this coz of the ","? */ 14831ab74a5aSBram Moolenaar } 14841ab74a5aSBram Moolenaar } 14851ab74a5aSBram Moolenaar 14861ab74a5aSBram Moolenaar main () 14871ab74a5aSBram Moolenaar { 14881ab74a5aSBram Moolenaar if (cond) 14891ab74a5aSBram Moolenaar { 14901ab74a5aSBram Moolenaar a = b; 14911ab74a5aSBram Moolenaar } 14921ab74a5aSBram Moolenaar if (cond) { 14931ab74a5aSBram Moolenaar a = c; 14941ab74a5aSBram Moolenaar } 14951ab74a5aSBram Moolenaar if (cond) 14961ab74a5aSBram Moolenaar a = d; 14971ab74a5aSBram Moolenaar return; 14981ab74a5aSBram Moolenaar } 14991ab74a5aSBram Moolenaar 15001ab74a5aSBram Moolenaar { 15011ab74a5aSBram Moolenaar case 2: if (asdf && 15021ab74a5aSBram Moolenaar asdfasdf) 15031ab74a5aSBram Moolenaar aasdf; 15041ab74a5aSBram Moolenaar a = 9; 15051ab74a5aSBram Moolenaar case 3: if (asdf) 15061ab74a5aSBram Moolenaar aasdf; 15071ab74a5aSBram Moolenaar a = 9; 15081ab74a5aSBram Moolenaar case 4: x = 1; 15091ab74a5aSBram Moolenaar y = 2; 15101ab74a5aSBram Moolenaar 15111ab74a5aSBram Moolenaar label: if (asdf) 15121ab74a5aSBram Moolenaar here; 15131ab74a5aSBram Moolenaar 15141ab74a5aSBram Moolenaar label: if (asdf && 15151ab74a5aSBram Moolenaar asdfasdf) 15161ab74a5aSBram Moolenaar { 15171ab74a5aSBram Moolenaar } 15181ab74a5aSBram Moolenaar 15191ab74a5aSBram Moolenaar label: if (asdf && 15201ab74a5aSBram Moolenaar asdfasdf) { 15211ab74a5aSBram Moolenaar there; 15221ab74a5aSBram Moolenaar } 15231ab74a5aSBram Moolenaar 15241ab74a5aSBram Moolenaar label: if (asdf && 15251ab74a5aSBram Moolenaar asdfasdf) 15261ab74a5aSBram Moolenaar there; 15271ab74a5aSBram Moolenaar } 15281ab74a5aSBram Moolenaar 15291ab74a5aSBram Moolenaar { 15301ab74a5aSBram Moolenaar /* 15311ab74a5aSBram Moolenaar hello with ":set comments= cino=c5" 15321ab74a5aSBram Moolenaar */ 15331ab74a5aSBram Moolenaar 15341ab74a5aSBram Moolenaar /* 15351ab74a5aSBram Moolenaar hello with ":set comments= cino=" 15361ab74a5aSBram Moolenaar */ 15371ab74a5aSBram Moolenaar } 15381ab74a5aSBram Moolenaar 15391ab74a5aSBram Moolenaar 15401ab74a5aSBram Moolenaar { 15411ab74a5aSBram Moolenaar if (a < b) { 15421ab74a5aSBram Moolenaar a = a + 1; 15431ab74a5aSBram Moolenaar } else 15441ab74a5aSBram Moolenaar a = a + 2; 15451ab74a5aSBram Moolenaar 15461ab74a5aSBram Moolenaar if (a) 15471ab74a5aSBram Moolenaar do { 15481ab74a5aSBram Moolenaar testing; 15491ab74a5aSBram Moolenaar } while (asdfasdf); 15501ab74a5aSBram Moolenaar a = b + 1; 15511ab74a5aSBram Moolenaar asdfasdf 15521ab74a5aSBram Moolenaar } 15531ab74a5aSBram Moolenaar 15541ab74a5aSBram Moolenaar { 15551ab74a5aSBram Moolenaar for ( int i = 0; 15561ab74a5aSBram Moolenaar i < 10; i++ ) 15571ab74a5aSBram Moolenaar { 15581ab74a5aSBram Moolenaar } 15591ab74a5aSBram Moolenaar i = 0; 15601ab74a5aSBram Moolenaar } 15611ab74a5aSBram Moolenaar 15621ab74a5aSBram Moolenaar class bob 15631ab74a5aSBram Moolenaar { 15641ab74a5aSBram Moolenaar int foo() {return 1;} 15651ab74a5aSBram Moolenaar int bar; 15661ab74a5aSBram Moolenaar } 15671ab74a5aSBram Moolenaar 15681ab74a5aSBram Moolenaar main() 15691ab74a5aSBram Moolenaar { 15701ab74a5aSBram Moolenaar while(1) 15711ab74a5aSBram Moolenaar if (foo) 15721ab74a5aSBram Moolenaar { 15731ab74a5aSBram Moolenaar bar; 15741ab74a5aSBram Moolenaar } 15751ab74a5aSBram Moolenaar else { 15761ab74a5aSBram Moolenaar asdf; 15771ab74a5aSBram Moolenaar } 15781ab74a5aSBram Moolenaar misplacedline; 15791ab74a5aSBram Moolenaar } 15801ab74a5aSBram Moolenaar 15811ab74a5aSBram Moolenaar { 15821ab74a5aSBram Moolenaar if (clipboard.state == SELECT_DONE 15831ab74a5aSBram Moolenaar && ((row == clipboard.start.lnum 15841ab74a5aSBram Moolenaar && col >= clipboard.start.col) 15851ab74a5aSBram Moolenaar || row > clipboard.start.lnum)) 15861ab74a5aSBram Moolenaar } 15871ab74a5aSBram Moolenaar 15881ab74a5aSBram Moolenaar { 15891ab74a5aSBram Moolenaar if (1) {i += 4;} 15901ab74a5aSBram Moolenaar where_am_i; 15911ab74a5aSBram Moolenaar return 0; 15921ab74a5aSBram Moolenaar } 15931ab74a5aSBram Moolenaar 15941ab74a5aSBram Moolenaar { 15951ab74a5aSBram Moolenaar { 15961ab74a5aSBram Moolenaar } // sdf(asdf 15971ab74a5aSBram Moolenaar if (asdf) 15981ab74a5aSBram Moolenaar asd; 15991ab74a5aSBram Moolenaar } 16001ab74a5aSBram Moolenaar 16011ab74a5aSBram Moolenaar { 16021ab74a5aSBram Moolenaar label1: 16031ab74a5aSBram Moolenaar label2: 16041ab74a5aSBram Moolenaar } 16051ab74a5aSBram Moolenaar 16061ab74a5aSBram Moolenaar { 16071ab74a5aSBram Moolenaar int fooRet = foo(pBar1, false /*fKB*/, 16081ab74a5aSBram Moolenaar true /*fPTB*/, 3 /*nT*/, false /*fDF*/); 16091ab74a5aSBram Moolenaar f() { 16101ab74a5aSBram Moolenaar for ( i = 0; 16111ab74a5aSBram Moolenaar i < m; 16121ab74a5aSBram Moolenaar /* c */ i++ ) { 16131ab74a5aSBram Moolenaar a = b; 16141ab74a5aSBram Moolenaar } 16151ab74a5aSBram Moolenaar } 16161ab74a5aSBram Moolenaar } 16171ab74a5aSBram Moolenaar 16181ab74a5aSBram Moolenaar { 16191ab74a5aSBram Moolenaar f1(/*comment*/); 16201ab74a5aSBram Moolenaar f2(); 16211ab74a5aSBram Moolenaar } 16221ab74a5aSBram Moolenaar 16231ab74a5aSBram Moolenaar { 16241ab74a5aSBram Moolenaar do { 16251ab74a5aSBram Moolenaar if (foo) { 16261ab74a5aSBram Moolenaar } else 16271ab74a5aSBram Moolenaar ; 16281ab74a5aSBram Moolenaar } while (foo); 16291ab74a5aSBram Moolenaar foo(); // was wrong 16301ab74a5aSBram Moolenaar } 16311ab74a5aSBram Moolenaar 16321ab74a5aSBram Moolenaar int x; // no extra indent because of the ; 16331ab74a5aSBram Moolenaar void func() 16341ab74a5aSBram Moolenaar { 16351ab74a5aSBram Moolenaar } 16361ab74a5aSBram Moolenaar 16371ab74a5aSBram Moolenaar char *tab[] = {"aaa", 16381ab74a5aSBram Moolenaar "};", /* }; */ NULL} 16391ab74a5aSBram Moolenaar int indented; 16401ab74a5aSBram Moolenaar {} 16411ab74a5aSBram Moolenaar 16421ab74a5aSBram Moolenaar char *a[] = {"aaa", "bbb", 16431ab74a5aSBram Moolenaar "ccc", NULL}; 16441ab74a5aSBram Moolenaar // here 16451ab74a5aSBram Moolenaar 16461ab74a5aSBram Moolenaar char *tab[] = {"aaa", 16471ab74a5aSBram Moolenaar "xx", /* xx */}; /* asdf */ 16481ab74a5aSBram Moolenaar int not_indented; 16491ab74a5aSBram Moolenaar 16501ab74a5aSBram Moolenaar { 16511ab74a5aSBram Moolenaar do { 16521ab74a5aSBram Moolenaar switch (bla) 16531ab74a5aSBram Moolenaar { 16541ab74a5aSBram Moolenaar case 1: if (foo) 16551ab74a5aSBram Moolenaar bar; 16561ab74a5aSBram Moolenaar } 16571ab74a5aSBram Moolenaar } while (boo); 16581ab74a5aSBram Moolenaar wrong; 16591ab74a5aSBram Moolenaar } 16601ab74a5aSBram Moolenaar 16611ab74a5aSBram Moolenaar int foo, 16621ab74a5aSBram Moolenaar bar; 16631ab74a5aSBram Moolenaar int foo; 16641ab74a5aSBram Moolenaar 16651ab74a5aSBram Moolenaar #if defined(foo) \ 16661ab74a5aSBram Moolenaar && defined(bar) 16671ab74a5aSBram Moolenaar char * xx = "asdf\ 16681ab74a5aSBram Moolenaar foo\ 16691ab74a5aSBram Moolenaar bor"; 16701ab74a5aSBram Moolenaar int x; 16711ab74a5aSBram Moolenaar 16721ab74a5aSBram Moolenaar char *foo = "asdf\ 16731ab74a5aSBram Moolenaar asdf\ 16741ab74a5aSBram Moolenaar asdf", 16751ab74a5aSBram Moolenaar *bar; 16761ab74a5aSBram Moolenaar 16771ab74a5aSBram Moolenaar void f() 16781ab74a5aSBram Moolenaar { 16791ab74a5aSBram Moolenaar #if defined(foo) \ 16801ab74a5aSBram Moolenaar && defined(bar) 16811ab74a5aSBram Moolenaar char *foo = "asdf\ 16821ab74a5aSBram Moolenaar asdf\ 16831ab74a5aSBram Moolenaar asdf", 16841ab74a5aSBram Moolenaar *bar; 16851ab74a5aSBram Moolenaar { 16861ab74a5aSBram Moolenaar int i; 16871ab74a5aSBram Moolenaar char *foo = "asdf\ 16881ab74a5aSBram Moolenaar asdf\ 16891ab74a5aSBram Moolenaar asdf", 16901ab74a5aSBram Moolenaar *bar; 16911ab74a5aSBram Moolenaar } 16921ab74a5aSBram Moolenaar #endif 16931ab74a5aSBram Moolenaar } 16941ab74a5aSBram Moolenaar #endif 16951ab74a5aSBram Moolenaar 16961ab74a5aSBram Moolenaar int y; // comment 16971ab74a5aSBram Moolenaar // comment 16981ab74a5aSBram Moolenaar 16991ab74a5aSBram Moolenaar // comment 17001ab74a5aSBram Moolenaar 17011ab74a5aSBram Moolenaar { 17021ab74a5aSBram Moolenaar Constructor(int a, 17031ab74a5aSBram Moolenaar int b ) : BaseClass(a) 17041ab74a5aSBram Moolenaar { 17051ab74a5aSBram Moolenaar } 17061ab74a5aSBram Moolenaar } 17071ab74a5aSBram Moolenaar 17081ab74a5aSBram Moolenaar void foo() 17091ab74a5aSBram Moolenaar { 17101ab74a5aSBram Moolenaar char one, 17111ab74a5aSBram Moolenaar two; 17121ab74a5aSBram Moolenaar struct bla piet, 17131ab74a5aSBram Moolenaar jan; 17141ab74a5aSBram Moolenaar enum foo kees, 17151ab74a5aSBram Moolenaar jannie; 17161ab74a5aSBram Moolenaar static unsigned sdf, 17171ab74a5aSBram Moolenaar krap; 17181ab74a5aSBram Moolenaar unsigned int piet, 17191ab74a5aSBram Moolenaar jan; 17201ab74a5aSBram Moolenaar int 17211ab74a5aSBram Moolenaar kees, 17221ab74a5aSBram Moolenaar jan; 17231ab74a5aSBram Moolenaar } 17241ab74a5aSBram Moolenaar 17251ab74a5aSBram Moolenaar { 17261ab74a5aSBram Moolenaar t(int f, 17271ab74a5aSBram Moolenaar int d); // ) 17281ab74a5aSBram Moolenaar d(); 17291ab74a5aSBram Moolenaar } 17301ab74a5aSBram Moolenaar 17311ab74a5aSBram Moolenaar Constructor::Constructor(int a, 17321ab74a5aSBram Moolenaar int b 17331ab74a5aSBram Moolenaar ) : 17341ab74a5aSBram Moolenaar BaseClass(a, 17351ab74a5aSBram Moolenaar b, 17361ab74a5aSBram Moolenaar c), 17371ab74a5aSBram Moolenaar mMember(b), 17381ab74a5aSBram Moolenaar { 17391ab74a5aSBram Moolenaar } 17401ab74a5aSBram Moolenaar 17411ab74a5aSBram Moolenaar Constructor::Constructor(int a, 17421ab74a5aSBram Moolenaar int b ) : 17431ab74a5aSBram Moolenaar BaseClass(a) 17441ab74a5aSBram Moolenaar { 17451ab74a5aSBram Moolenaar } 17461ab74a5aSBram Moolenaar 17471ab74a5aSBram Moolenaar Constructor::Constructor(int a, 17481ab74a5aSBram Moolenaar int b ) /*x*/ : /*x*/ BaseClass(a), 17491ab74a5aSBram Moolenaar member(b) 17501ab74a5aSBram Moolenaar { 17511ab74a5aSBram Moolenaar } 17521ab74a5aSBram Moolenaar 17531ab74a5aSBram Moolenaar A::A(int a, int b) 17541ab74a5aSBram Moolenaar : aa(a), 17551ab74a5aSBram Moolenaar bb(b), 17561ab74a5aSBram Moolenaar cc(c) 17571ab74a5aSBram Moolenaar { 17581ab74a5aSBram Moolenaar } 17591ab74a5aSBram Moolenaar 17601ab74a5aSBram Moolenaar class CAbc : 17611ab74a5aSBram Moolenaar public BaseClass1, 17621ab74a5aSBram Moolenaar protected BaseClass2 17631ab74a5aSBram Moolenaar { 17641ab74a5aSBram Moolenaar int Test() { return FALSE; } 17651ab74a5aSBram Moolenaar int Test1() { return TRUE; } 17661ab74a5aSBram Moolenaar 17671ab74a5aSBram Moolenaar CAbc(int a, int b ) : 17681ab74a5aSBram Moolenaar BaseClass(a) 17691ab74a5aSBram Moolenaar { 17701ab74a5aSBram Moolenaar switch(xxx) 17711ab74a5aSBram Moolenaar { 17721ab74a5aSBram Moolenaar case abc: 17731ab74a5aSBram Moolenaar asdf(); 17741ab74a5aSBram Moolenaar break; 17751ab74a5aSBram Moolenaar 17761ab74a5aSBram Moolenaar case 999: 17771ab74a5aSBram Moolenaar baer(); 17781ab74a5aSBram Moolenaar break; 17791ab74a5aSBram Moolenaar } 17801ab74a5aSBram Moolenaar } 17811ab74a5aSBram Moolenaar 17824b96df5aSBram Moolenaar public: // <-- this was incorrectly indented before!! 17831ab74a5aSBram Moolenaar void testfall(); 17841ab74a5aSBram Moolenaar protected: 17851ab74a5aSBram Moolenaar void testfall(); 17861ab74a5aSBram Moolenaar }; 17871ab74a5aSBram Moolenaar 17881ab74a5aSBram Moolenaar class CAbc : public BaseClass1, 17891ab74a5aSBram Moolenaar protected BaseClass2 17901ab74a5aSBram Moolenaar { 17911ab74a5aSBram Moolenaar }; 17921ab74a5aSBram Moolenaar 17931ab74a5aSBram Moolenaar static struct 17941ab74a5aSBram Moolenaar { 17951ab74a5aSBram Moolenaar int a; 17961ab74a5aSBram Moolenaar int b; 17971ab74a5aSBram Moolenaar } variable[COUNT] = 17981ab74a5aSBram Moolenaar { 17991ab74a5aSBram Moolenaar { 18001ab74a5aSBram Moolenaar 123, 18011ab74a5aSBram Moolenaar 456 18021ab74a5aSBram Moolenaar }, 18031ab74a5aSBram Moolenaar { 18041ab74a5aSBram Moolenaar 123, 18051ab74a5aSBram Moolenaar 456 18061ab74a5aSBram Moolenaar } 18071ab74a5aSBram Moolenaar }; 18081ab74a5aSBram Moolenaar 18091ab74a5aSBram Moolenaar static struct 18101ab74a5aSBram Moolenaar { 18111ab74a5aSBram Moolenaar int a; 18121ab74a5aSBram Moolenaar int b; 18131ab74a5aSBram Moolenaar } variable[COUNT] = 18141ab74a5aSBram Moolenaar { 18151ab74a5aSBram Moolenaar { 123, 456 }, 18161ab74a5aSBram Moolenaar { 123, 456 } 18171ab74a5aSBram Moolenaar }; 18181ab74a5aSBram Moolenaar 18191ab74a5aSBram Moolenaar void asdf() /* ind_maxparen may cause trouble here */ 18201ab74a5aSBram Moolenaar { 18211ab74a5aSBram Moolenaar if ((0 18221ab74a5aSBram Moolenaar && 1 18231ab74a5aSBram Moolenaar && 1 18241ab74a5aSBram Moolenaar && 1 18251ab74a5aSBram Moolenaar && 1 18261ab74a5aSBram Moolenaar && 1 18271ab74a5aSBram Moolenaar && 1 18281ab74a5aSBram Moolenaar && 1 18291ab74a5aSBram Moolenaar && 1 18301ab74a5aSBram Moolenaar && 1 18311ab74a5aSBram Moolenaar && 1 18321ab74a5aSBram Moolenaar && 1 18331ab74a5aSBram Moolenaar && 1 18341ab74a5aSBram Moolenaar && 1 18351ab74a5aSBram Moolenaar && 1 18361ab74a5aSBram Moolenaar && 1 18371ab74a5aSBram Moolenaar && 1 18381ab74a5aSBram Moolenaar && 1 18391ab74a5aSBram Moolenaar && 1 18401ab74a5aSBram Moolenaar && 1 18411ab74a5aSBram Moolenaar && 1 18421ab74a5aSBram Moolenaar && 1 18431ab74a5aSBram Moolenaar && 1 18441ab74a5aSBram Moolenaar && 1 18451ab74a5aSBram Moolenaar && 1 18461ab74a5aSBram Moolenaar && 1)) break; 18471ab74a5aSBram Moolenaar } 18481ab74a5aSBram Moolenaar 18491ab74a5aSBram Moolenaar foo() 18501ab74a5aSBram Moolenaar { 18511ab74a5aSBram Moolenaar a = cond ? foo() : asdf 18521ab74a5aSBram Moolenaar + asdf; 18531ab74a5aSBram Moolenaar 18541ab74a5aSBram Moolenaar a = cond ? 18551ab74a5aSBram Moolenaar foo() : asdf 18561ab74a5aSBram Moolenaar + asdf; 18571ab74a5aSBram Moolenaar } 18581ab74a5aSBram Moolenaar 18591ab74a5aSBram Moolenaar int main(void) 18601ab74a5aSBram Moolenaar { 18611ab74a5aSBram Moolenaar if (a) 18621ab74a5aSBram Moolenaar if (b) 18631ab74a5aSBram Moolenaar 2; 18641ab74a5aSBram Moolenaar else 3; 18651ab74a5aSBram Moolenaar next_line_of_code(); 18661ab74a5aSBram Moolenaar } 18671ab74a5aSBram Moolenaar 18681ab74a5aSBram Moolenaar barry() 18691ab74a5aSBram Moolenaar { 18701ab74a5aSBram Moolenaar Foo::Foo (int one, 18711ab74a5aSBram Moolenaar int two) 18721ab74a5aSBram Moolenaar : something(4) 18731ab74a5aSBram Moolenaar {} 18741ab74a5aSBram Moolenaar } 18751ab74a5aSBram Moolenaar 18761ab74a5aSBram Moolenaar barry() 18771ab74a5aSBram Moolenaar { 18781ab74a5aSBram Moolenaar Foo::Foo (int one, int two) 18791ab74a5aSBram Moolenaar : something(4) 18801ab74a5aSBram Moolenaar {} 18811ab74a5aSBram Moolenaar } 18821ab74a5aSBram Moolenaar 18831ab74a5aSBram Moolenaar Constructor::Constructor(int a, 18841ab74a5aSBram Moolenaar int b 18851ab74a5aSBram Moolenaar ) : 18861ab74a5aSBram Moolenaar BaseClass(a, 18871ab74a5aSBram Moolenaar b, 18881ab74a5aSBram Moolenaar c), 18891ab74a5aSBram Moolenaar mMember(b) 18901ab74a5aSBram Moolenaar { 18911ab74a5aSBram Moolenaar } 18921ab74a5aSBram Moolenaar int main () 18931ab74a5aSBram Moolenaar { 18941ab74a5aSBram Moolenaar if (lala) 18951ab74a5aSBram Moolenaar do 18961ab74a5aSBram Moolenaar ++(*lolo); 18971ab74a5aSBram Moolenaar while (lili 18981ab74a5aSBram Moolenaar && lele); 18991ab74a5aSBram Moolenaar lulu; 19001ab74a5aSBram Moolenaar } 19011ab74a5aSBram Moolenaar 19021ab74a5aSBram Moolenaar int main () 19031ab74a5aSBram Moolenaar { 19041ab74a5aSBram Moolenaar switch (c) 19051ab74a5aSBram Moolenaar { 19061ab74a5aSBram Moolenaar case 'c': if (cond) 19071ab74a5aSBram Moolenaar { 19081ab74a5aSBram Moolenaar } 19091ab74a5aSBram Moolenaar } 19101ab74a5aSBram Moolenaar } 19111ab74a5aSBram Moolenaar 19121ab74a5aSBram Moolenaar main() 19131ab74a5aSBram Moolenaar { 19141ab74a5aSBram Moolenaar (void) MyFancyFuasdfadsfnction( 19151ab74a5aSBram Moolenaar argument); 19161ab74a5aSBram Moolenaar } 19171ab74a5aSBram Moolenaar 19181ab74a5aSBram Moolenaar main() 19191ab74a5aSBram Moolenaar { 19201ab74a5aSBram Moolenaar char foo[] = "/*"; 19211ab74a5aSBram Moolenaar /* as 19221ab74a5aSBram Moolenaar df */ 19231ab74a5aSBram Moolenaar hello 19241ab74a5aSBram Moolenaar } 19251ab74a5aSBram Moolenaar 19261ab74a5aSBram Moolenaar /* valid namespaces with normal indent */ 19271ab74a5aSBram Moolenaar namespace 19281ab74a5aSBram Moolenaar { 19291ab74a5aSBram Moolenaar { 19301ab74a5aSBram Moolenaar 111111111111; 19311ab74a5aSBram Moolenaar } 19321ab74a5aSBram Moolenaar } 19331ab74a5aSBram Moolenaar namespace /* test */ 19341ab74a5aSBram Moolenaar { 19351ab74a5aSBram Moolenaar 11111111111111111; 19361ab74a5aSBram Moolenaar } 19371ab74a5aSBram Moolenaar namespace // test 19381ab74a5aSBram Moolenaar { 19391ab74a5aSBram Moolenaar 111111111111111111; 19401ab74a5aSBram Moolenaar } 19411ab74a5aSBram Moolenaar namespace 19421ab74a5aSBram Moolenaar { 19431ab74a5aSBram Moolenaar 111111111111111111; 19441ab74a5aSBram Moolenaar } 19451ab74a5aSBram Moolenaar namespace test 19461ab74a5aSBram Moolenaar { 19471ab74a5aSBram Moolenaar 111111111111111111; 19481ab74a5aSBram Moolenaar } 19491ab74a5aSBram Moolenaar namespace{ 19501ab74a5aSBram Moolenaar 111111111111111111; 19511ab74a5aSBram Moolenaar } 19521ab74a5aSBram Moolenaar namespace test{ 19531ab74a5aSBram Moolenaar 111111111111111111; 19541ab74a5aSBram Moolenaar } 19551ab74a5aSBram Moolenaar namespace { 19561ab74a5aSBram Moolenaar 111111111111111111; 19571ab74a5aSBram Moolenaar } 19581ab74a5aSBram Moolenaar namespace test { 19591ab74a5aSBram Moolenaar 111111111111111111; 19601ab74a5aSBram Moolenaar namespace test2 { 19611ab74a5aSBram Moolenaar 22222222222222222; 19621ab74a5aSBram Moolenaar } 19631ab74a5aSBram Moolenaar } 19641ab74a5aSBram Moolenaar 19651ab74a5aSBram Moolenaar /* invalid namespaces use block indent */ 19661ab74a5aSBram Moolenaar namespace test test2 { 19671ab74a5aSBram Moolenaar 111111111111111111111; 19681ab74a5aSBram Moolenaar } 19691ab74a5aSBram Moolenaar namespace11111111111 { 19701ab74a5aSBram Moolenaar 111111111111; 19711ab74a5aSBram Moolenaar } 19721ab74a5aSBram Moolenaar namespace() { 19731ab74a5aSBram Moolenaar 1111111111111; 19741ab74a5aSBram Moolenaar } 19751ab74a5aSBram Moolenaar namespace() 19761ab74a5aSBram Moolenaar { 19771ab74a5aSBram Moolenaar 111111111111111111; 19781ab74a5aSBram Moolenaar } 19791ab74a5aSBram Moolenaar namespace test test2 19801ab74a5aSBram Moolenaar { 19811ab74a5aSBram Moolenaar 1111111111111111111; 19821ab74a5aSBram Moolenaar } 19831ab74a5aSBram Moolenaar namespace111111111 19841ab74a5aSBram Moolenaar { 19851ab74a5aSBram Moolenaar 111111111111111111; 19861ab74a5aSBram Moolenaar } 19871ab74a5aSBram Moolenaar 19881ab74a5aSBram Moolenaar void getstring() { 19891ab74a5aSBram Moolenaar /* Raw strings */ 19901ab74a5aSBram Moolenaar const char* s = R"( 19911ab74a5aSBram Moolenaar test { 19921ab74a5aSBram Moolenaar # comment 19931ab74a5aSBram Moolenaar field: 123 19941ab74a5aSBram Moolenaar } 19951ab74a5aSBram Moolenaar )"; 19961ab74a5aSBram Moolenaar } 19971ab74a5aSBram Moolenaar 19981ab74a5aSBram Moolenaar void getstring() { 19991ab74a5aSBram Moolenaar const char* s = R"foo( 20001ab74a5aSBram Moolenaar test { 20011ab74a5aSBram Moolenaar # comment 20021ab74a5aSBram Moolenaar field: 123 20031ab74a5aSBram Moolenaar } 20041ab74a5aSBram Moolenaar )foo"; 20051ab74a5aSBram Moolenaar } 20061ab74a5aSBram Moolenaar 20071ab74a5aSBram Moolenaar { 20081ab74a5aSBram Moolenaar int a[4] = { 20091ab74a5aSBram Moolenaar [0] = 0, 20101ab74a5aSBram Moolenaar [1] = 1, 20111ab74a5aSBram Moolenaar [2] = 2, 20121ab74a5aSBram Moolenaar [3] = 3, 20131ab74a5aSBram Moolenaar }; 20141ab74a5aSBram Moolenaar } 20151ab74a5aSBram Moolenaar 20161ab74a5aSBram Moolenaar { 20171ab74a5aSBram Moolenaar a = b[2] 20181ab74a5aSBram Moolenaar + 3; 20191ab74a5aSBram Moolenaar } 20201ab74a5aSBram Moolenaar 20211ab74a5aSBram Moolenaar { 20221ab74a5aSBram Moolenaar if (1) 20231ab74a5aSBram Moolenaar /* aaaaa 20241ab74a5aSBram Moolenaar * bbbbb 20251ab74a5aSBram Moolenaar */ 20261ab74a5aSBram Moolenaar a = 1; 20271ab74a5aSBram Moolenaar } 20281ab74a5aSBram Moolenaar 20291ab74a5aSBram Moolenaar void func() 20301ab74a5aSBram Moolenaar { 20311ab74a5aSBram Moolenaar switch (foo) 20321ab74a5aSBram Moolenaar { 20331ab74a5aSBram Moolenaar case (bar): 20341ab74a5aSBram Moolenaar if (baz()) 20351ab74a5aSBram Moolenaar quux(); 20361ab74a5aSBram Moolenaar break; 20371ab74a5aSBram Moolenaar case (shmoo): 20381ab74a5aSBram Moolenaar if (!bar) 20391ab74a5aSBram Moolenaar { 20401ab74a5aSBram Moolenaar } 20411ab74a5aSBram Moolenaar case (foo1): 20421ab74a5aSBram Moolenaar switch (bar) 20431ab74a5aSBram Moolenaar { 20441ab74a5aSBram Moolenaar case baz: 20451ab74a5aSBram Moolenaar baz_f(); 20461ab74a5aSBram Moolenaar break; 20471ab74a5aSBram Moolenaar } 20481ab74a5aSBram Moolenaar break; 20491ab74a5aSBram Moolenaar default: 20501ab74a5aSBram Moolenaar baz(); 20511ab74a5aSBram Moolenaar baz(); 20521ab74a5aSBram Moolenaar break; 20531ab74a5aSBram Moolenaar } 20541ab74a5aSBram Moolenaar } 20551ab74a5aSBram Moolenaar 20561ab74a5aSBram Moolenaar /* end of AUTO */ 20571ab74a5aSBram Moolenaar 20581ab74a5aSBram Moolenaar [CODE] 20591ab74a5aSBram Moolenaar 20601ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 20611ab74a5aSBram Moolenaar enew! | close 20621ab74a5aSBram Moolenaarendfunc 20631ab74a5aSBram Moolenaar 20641ab74a5aSBram Moolenaarfunc Test_cindent_2() 20651ab74a5aSBram Moolenaar new 20661ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 20671ab74a5aSBram Moolenaar setl tw=0 noai fo=croq 20681ab74a5aSBram Moolenaar let &wm = &columns - 20 20691ab74a5aSBram Moolenaar 20701ab74a5aSBram Moolenaar let code =<< trim [CODE] 20711ab74a5aSBram Moolenaar { 20721ab74a5aSBram Moolenaar 20731ab74a5aSBram Moolenaar /* this is 20741ab74a5aSBram Moolenaar * a real serious important big 20751ab74a5aSBram Moolenaar * comment 20761ab74a5aSBram Moolenaar */ 20771ab74a5aSBram Moolenaar /* insert " about life, the universe, and the rest" after "serious" */ 20781ab74a5aSBram Moolenaar } 20791ab74a5aSBram Moolenaar [CODE] 20801ab74a5aSBram Moolenaar 20811ab74a5aSBram Moolenaar call append(0, code) 20821ab74a5aSBram Moolenaar normal gg 20831ab74a5aSBram Moolenaar call search('serious', 'e') 20841ab74a5aSBram Moolenaar normal a about life, the universe, and the rest 20851ab74a5aSBram Moolenaar 20861ab74a5aSBram Moolenaar let expected =<< trim [CODE] 20871ab74a5aSBram Moolenaar { 20881ab74a5aSBram Moolenaar 20891ab74a5aSBram Moolenaar /* this is 20901ab74a5aSBram Moolenaar * a real serious 20911ab74a5aSBram Moolenaar * about life, the 20921ab74a5aSBram Moolenaar * universe, and the 20931ab74a5aSBram Moolenaar * rest important big 20941ab74a5aSBram Moolenaar * comment 20951ab74a5aSBram Moolenaar */ 20961ab74a5aSBram Moolenaar /* insert " about life, the universe, and the rest" after "serious" */ 20971ab74a5aSBram Moolenaar } 20981ab74a5aSBram Moolenaar 20991ab74a5aSBram Moolenaar [CODE] 21001ab74a5aSBram Moolenaar 21011ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 21021ab74a5aSBram Moolenaar set wm& 21031ab74a5aSBram Moolenaar enew! | close 21041ab74a5aSBram Moolenaarendfunc 21051ab74a5aSBram Moolenaar 21061ab74a5aSBram Moolenaarfunc Test_cindent_3() 21071ab74a5aSBram Moolenaar new 21081ab74a5aSBram Moolenaar setl nocindent ts=4 sw=4 21091ab74a5aSBram Moolenaar 21101ab74a5aSBram Moolenaar let code =<< trim [CODE] 21111ab74a5aSBram Moolenaar { 21121ab74a5aSBram Moolenaar /* 21131ab74a5aSBram Moolenaar * Testing for comments, without 'cin' set 21141ab74a5aSBram Moolenaar */ 21151ab74a5aSBram Moolenaar 21161ab74a5aSBram Moolenaar /* 21171ab74a5aSBram Moolenaar * what happens here? 21181ab74a5aSBram Moolenaar */ 21191ab74a5aSBram Moolenaar 21201ab74a5aSBram Moolenaar /* 21211ab74a5aSBram Moolenaar the end of the comment, try inserting a line below */ 21221ab74a5aSBram Moolenaar 21231ab74a5aSBram Moolenaar /* how about 21241ab74a5aSBram Moolenaar this one */ 21251ab74a5aSBram Moolenaar } 21261ab74a5aSBram Moolenaar [CODE] 21271ab74a5aSBram Moolenaar 21281ab74a5aSBram Moolenaar call append(0, code) 21291ab74a5aSBram Moolenaar normal gg 21301ab74a5aSBram Moolenaar call search('comments') 21311ab74a5aSBram Moolenaar normal joabout life 21321ab74a5aSBram Moolenaar call search('happens') 21331ab74a5aSBram Moolenaar normal jothere 21341ab74a5aSBram Moolenaar call search('below') 21351ab74a5aSBram Moolenaar normal oline 21361ab74a5aSBram Moolenaar call search('this') 21371ab74a5aSBram Moolenaar normal Ohello 21381ab74a5aSBram Moolenaar 21391ab74a5aSBram Moolenaar let expected =<< trim [CODE] 21401ab74a5aSBram Moolenaar { 21411ab74a5aSBram Moolenaar /* 21421ab74a5aSBram Moolenaar * Testing for comments, without 'cin' set 21431ab74a5aSBram Moolenaar */ 21441ab74a5aSBram Moolenaar about life 21451ab74a5aSBram Moolenaar 21461ab74a5aSBram Moolenaar /* 21471ab74a5aSBram Moolenaar * what happens here? 21481ab74a5aSBram Moolenaar */ 21491ab74a5aSBram Moolenaar there 21501ab74a5aSBram Moolenaar 21511ab74a5aSBram Moolenaar /* 21521ab74a5aSBram Moolenaar the end of the comment, try inserting a line below */ 21531ab74a5aSBram Moolenaar line 21541ab74a5aSBram Moolenaar 21551ab74a5aSBram Moolenaar /* how about 21561ab74a5aSBram Moolenaar hello 21571ab74a5aSBram Moolenaar this one */ 21581ab74a5aSBram Moolenaar } 21591ab74a5aSBram Moolenaar 21601ab74a5aSBram Moolenaar [CODE] 21611ab74a5aSBram Moolenaar 21621ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 21631ab74a5aSBram Moolenaar enew! | close 21641ab74a5aSBram Moolenaarendfunc 21651ab74a5aSBram Moolenaar 21661ab74a5aSBram Moolenaarfunc Test_cindent_4() 21671ab74a5aSBram Moolenaar new 21681ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 21691ab74a5aSBram Moolenaar 21701ab74a5aSBram Moolenaar let code =<< trim [CODE] 21711ab74a5aSBram Moolenaar { 21721ab74a5aSBram Moolenaar var = this + that + vec[0] * vec[0] 21731ab74a5aSBram Moolenaar + vec[1] * vec[1] 21741ab74a5aSBram Moolenaar + vec2[2] * vec[2]; 21751ab74a5aSBram Moolenaar } 21761ab74a5aSBram Moolenaar [CODE] 21771ab74a5aSBram Moolenaar 21781ab74a5aSBram Moolenaar call append(0, code) 21791ab74a5aSBram Moolenaar normal gg 21801ab74a5aSBram Moolenaar call search('vec2') 21811ab74a5aSBram Moolenaar normal == 21821ab74a5aSBram Moolenaar 21831ab74a5aSBram Moolenaar let expected =<< trim [CODE] 21841ab74a5aSBram Moolenaar { 21851ab74a5aSBram Moolenaar var = this + that + vec[0] * vec[0] 21861ab74a5aSBram Moolenaar + vec[1] * vec[1] 21871ab74a5aSBram Moolenaar + vec2[2] * vec[2]; 21881ab74a5aSBram Moolenaar } 21891ab74a5aSBram Moolenaar 21901ab74a5aSBram Moolenaar [CODE] 21911ab74a5aSBram Moolenaar 21921ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 21931ab74a5aSBram Moolenaar enew! | close 21941ab74a5aSBram Moolenaarendfunc 21951ab74a5aSBram Moolenaar 21961ab74a5aSBram Moolenaarfunc Test_cindent_5() 21971ab74a5aSBram Moolenaar new 21981ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 21991ab74a5aSBram Moolenaar setl cino=}4 22001ab74a5aSBram Moolenaar 22011ab74a5aSBram Moolenaar let code =<< trim [CODE] 22021ab74a5aSBram Moolenaar { 22031ab74a5aSBram Moolenaar asdf asdflkajds f; 22041ab74a5aSBram Moolenaar if (tes & ting) { 22051ab74a5aSBram Moolenaar asdf asdf asdf ; 22061ab74a5aSBram Moolenaar asdfa sdf asdf; 22071ab74a5aSBram Moolenaar } 22081ab74a5aSBram Moolenaar testing1; 22091ab74a5aSBram Moolenaar if (tes & ting) 22101ab74a5aSBram Moolenaar { 22111ab74a5aSBram Moolenaar asdf asdf asdf ; 22121ab74a5aSBram Moolenaar asdfa sdf asdf; 22131ab74a5aSBram Moolenaar } 22141ab74a5aSBram Moolenaar testing2; 22151ab74a5aSBram Moolenaar } 22161ab74a5aSBram Moolenaar [CODE] 22171ab74a5aSBram Moolenaar 22181ab74a5aSBram Moolenaar call append(0, code) 22191ab74a5aSBram Moolenaar normal gg 22201ab74a5aSBram Moolenaar call search('testing1') 22211ab74a5aSBram Moolenaar exe "normal k2==/testing2\<CR>" 22221ab74a5aSBram Moolenaar normal k2== 22231ab74a5aSBram Moolenaar 22241ab74a5aSBram Moolenaar let expected =<< trim [CODE] 22251ab74a5aSBram Moolenaar { 22261ab74a5aSBram Moolenaar asdf asdflkajds f; 22271ab74a5aSBram Moolenaar if (tes & ting) { 22281ab74a5aSBram Moolenaar asdf asdf asdf ; 22291ab74a5aSBram Moolenaar asdfa sdf asdf; 22301ab74a5aSBram Moolenaar } 22311ab74a5aSBram Moolenaar testing1; 22321ab74a5aSBram Moolenaar if (tes & ting) 22331ab74a5aSBram Moolenaar { 22341ab74a5aSBram Moolenaar asdf asdf asdf ; 22351ab74a5aSBram Moolenaar asdfa sdf asdf; 22361ab74a5aSBram Moolenaar } 22371ab74a5aSBram Moolenaar testing2; 22381ab74a5aSBram Moolenaar } 22391ab74a5aSBram Moolenaar 22401ab74a5aSBram Moolenaar [CODE] 22411ab74a5aSBram Moolenaar 22421ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 22431ab74a5aSBram Moolenaar enew! | close 22441ab74a5aSBram Moolenaarendfunc 22451ab74a5aSBram Moolenaar 22461ab74a5aSBram Moolenaarfunc Test_cindent_6() 22471ab74a5aSBram Moolenaar new 22481ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 22491ab74a5aSBram Moolenaar setl cino=(0,)20 22501ab74a5aSBram Moolenaar 22511ab74a5aSBram Moolenaar let code =<< trim [CODE] 22521ab74a5aSBram Moolenaar main ( int first_par, /* 22531ab74a5aSBram Moolenaar * Comment for 22541ab74a5aSBram Moolenaar * first par 22551ab74a5aSBram Moolenaar */ 22561ab74a5aSBram Moolenaar int second_par /* 22571ab74a5aSBram Moolenaar * Comment for 22581ab74a5aSBram Moolenaar * second par 22591ab74a5aSBram Moolenaar */ 22601ab74a5aSBram Moolenaar ) 22611ab74a5aSBram Moolenaar { 22621ab74a5aSBram Moolenaar func( first_par, /* 22631ab74a5aSBram Moolenaar * Comment for 22641ab74a5aSBram Moolenaar * first par 22651ab74a5aSBram Moolenaar */ 22661ab74a5aSBram Moolenaar second_par /* 22671ab74a5aSBram Moolenaar * Comment for 22681ab74a5aSBram Moolenaar * second par 22691ab74a5aSBram Moolenaar */ 22701ab74a5aSBram Moolenaar ); 22711ab74a5aSBram Moolenaar 22721ab74a5aSBram Moolenaar } 22731ab74a5aSBram Moolenaar [CODE] 22741ab74a5aSBram Moolenaar 22751ab74a5aSBram Moolenaar call append(0, code) 22761ab74a5aSBram Moolenaar normal gg 22771ab74a5aSBram Moolenaar call search('main') 22781ab74a5aSBram Moolenaar normal =][ 22791ab74a5aSBram Moolenaar 22801ab74a5aSBram Moolenaar let expected =<< trim [CODE] 22811ab74a5aSBram Moolenaar main ( int first_par, /* 22821ab74a5aSBram Moolenaar * Comment for 22831ab74a5aSBram Moolenaar * first par 22841ab74a5aSBram Moolenaar */ 22851ab74a5aSBram Moolenaar int second_par /* 22861ab74a5aSBram Moolenaar * Comment for 22871ab74a5aSBram Moolenaar * second par 22881ab74a5aSBram Moolenaar */ 22891ab74a5aSBram Moolenaar ) 22901ab74a5aSBram Moolenaar { 22911ab74a5aSBram Moolenaar func( first_par, /* 22921ab74a5aSBram Moolenaar * Comment for 22931ab74a5aSBram Moolenaar * first par 22941ab74a5aSBram Moolenaar */ 22951ab74a5aSBram Moolenaar second_par /* 22961ab74a5aSBram Moolenaar * Comment for 22971ab74a5aSBram Moolenaar * second par 22981ab74a5aSBram Moolenaar */ 22991ab74a5aSBram Moolenaar ); 23001ab74a5aSBram Moolenaar 23011ab74a5aSBram Moolenaar } 23021ab74a5aSBram Moolenaar 23031ab74a5aSBram Moolenaar [CODE] 23041ab74a5aSBram Moolenaar 23051ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 23061ab74a5aSBram Moolenaar enew! | close 23071ab74a5aSBram Moolenaarendfunc 23081ab74a5aSBram Moolenaar 23091ab74a5aSBram Moolenaarfunc Test_cindent_7() 23101ab74a5aSBram Moolenaar new 23111ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 23121ab74a5aSBram Moolenaar setl cino=es,n0s 23131ab74a5aSBram Moolenaar 23141ab74a5aSBram Moolenaar let code =<< trim [CODE] 23151ab74a5aSBram Moolenaar main(void) 23161ab74a5aSBram Moolenaar { 23171ab74a5aSBram Moolenaar /* Make sure that cino=X0s is not parsed like cino=Xs. */ 23181ab74a5aSBram Moolenaar if (cond) 23191ab74a5aSBram Moolenaar foo(); 23201ab74a5aSBram Moolenaar else 23211ab74a5aSBram Moolenaar { 23221ab74a5aSBram Moolenaar bar(); 23231ab74a5aSBram Moolenaar } 23241ab74a5aSBram Moolenaar } 23251ab74a5aSBram Moolenaar [CODE] 23261ab74a5aSBram Moolenaar 23271ab74a5aSBram Moolenaar call append(0, code) 23281ab74a5aSBram Moolenaar normal gg 23291ab74a5aSBram Moolenaar call search('main') 23301ab74a5aSBram Moolenaar normal =][ 23311ab74a5aSBram Moolenaar 23321ab74a5aSBram Moolenaar let expected =<< trim [CODE] 23331ab74a5aSBram Moolenaar main(void) 23341ab74a5aSBram Moolenaar { 23351ab74a5aSBram Moolenaar /* Make sure that cino=X0s is not parsed like cino=Xs. */ 23361ab74a5aSBram Moolenaar if (cond) 23371ab74a5aSBram Moolenaar foo(); 23381ab74a5aSBram Moolenaar else 23391ab74a5aSBram Moolenaar { 23401ab74a5aSBram Moolenaar bar(); 23411ab74a5aSBram Moolenaar } 23421ab74a5aSBram Moolenaar } 23431ab74a5aSBram Moolenaar 23441ab74a5aSBram Moolenaar [CODE] 23451ab74a5aSBram Moolenaar 23461ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 23471ab74a5aSBram Moolenaar enew! | close 23481ab74a5aSBram Moolenaarendfunc 23491ab74a5aSBram Moolenaar 23501ab74a5aSBram Moolenaarfunc Test_cindent_8() 23511ab74a5aSBram Moolenaar new 23521ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 23531ab74a5aSBram Moolenaar setl cino= 23541ab74a5aSBram Moolenaar 23551ab74a5aSBram Moolenaar let code =<< trim [CODE] 23561ab74a5aSBram Moolenaar 23571ab74a5aSBram Moolenaar { 23581ab74a5aSBram Moolenaar do 23591ab74a5aSBram Moolenaar { 23601ab74a5aSBram Moolenaar if () 23611ab74a5aSBram Moolenaar { 23621ab74a5aSBram Moolenaar if () 23631ab74a5aSBram Moolenaar asdf; 23641ab74a5aSBram Moolenaar else 23651ab74a5aSBram Moolenaar asdf; 23661ab74a5aSBram Moolenaar } 23671ab74a5aSBram Moolenaar } while (); 23681ab74a5aSBram Moolenaar cmd; /* this should go under the } */ 23691ab74a5aSBram Moolenaar } 23701ab74a5aSBram Moolenaar [CODE] 23711ab74a5aSBram Moolenaar 23721ab74a5aSBram Moolenaar call append(0, code) 23731ab74a5aSBram Moolenaar normal gg 23741ab74a5aSBram Moolenaar normal ]]=][ 23751ab74a5aSBram Moolenaar 23761ab74a5aSBram Moolenaar let expected =<< trim [CODE] 23771ab74a5aSBram Moolenaar 23781ab74a5aSBram Moolenaar { 23791ab74a5aSBram Moolenaar do 23801ab74a5aSBram Moolenaar { 23811ab74a5aSBram Moolenaar if () 23821ab74a5aSBram Moolenaar { 23831ab74a5aSBram Moolenaar if () 23841ab74a5aSBram Moolenaar asdf; 23851ab74a5aSBram Moolenaar else 23861ab74a5aSBram Moolenaar asdf; 23871ab74a5aSBram Moolenaar } 23881ab74a5aSBram Moolenaar } while (); 23891ab74a5aSBram Moolenaar cmd; /* this should go under the } */ 23901ab74a5aSBram Moolenaar } 23911ab74a5aSBram Moolenaar 23921ab74a5aSBram Moolenaar [CODE] 23931ab74a5aSBram Moolenaar 23941ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 23951ab74a5aSBram Moolenaar enew! | close 23961ab74a5aSBram Moolenaarendfunc 23971ab74a5aSBram Moolenaar 23981ab74a5aSBram Moolenaarfunc Test_cindent_9() 23991ab74a5aSBram Moolenaar new 24001ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 24011ab74a5aSBram Moolenaar 24021ab74a5aSBram Moolenaar let code =<< trim [CODE] 24031ab74a5aSBram Moolenaar 24041ab74a5aSBram Moolenaar void f() 24051ab74a5aSBram Moolenaar { 24061ab74a5aSBram Moolenaar if ( k() ) { 24071ab74a5aSBram Moolenaar l(); 24081ab74a5aSBram Moolenaar 24091ab74a5aSBram Moolenaar } else { /* Start (two words) end */ 24101ab74a5aSBram Moolenaar m(); 24111ab74a5aSBram Moolenaar } 24121ab74a5aSBram Moolenaar 24131ab74a5aSBram Moolenaar n(); 24141ab74a5aSBram Moolenaar } 24151ab74a5aSBram Moolenaar [CODE] 24161ab74a5aSBram Moolenaar 24171ab74a5aSBram Moolenaar call append(0, code) 24181ab74a5aSBram Moolenaar normal gg 24191ab74a5aSBram Moolenaar normal ]]=][ 24201ab74a5aSBram Moolenaar 24211ab74a5aSBram Moolenaar let expected =<< trim [CODE] 24221ab74a5aSBram Moolenaar 24231ab74a5aSBram Moolenaar void f() 24241ab74a5aSBram Moolenaar { 24251ab74a5aSBram Moolenaar if ( k() ) { 24261ab74a5aSBram Moolenaar l(); 24271ab74a5aSBram Moolenaar 24281ab74a5aSBram Moolenaar } else { /* Start (two words) end */ 24291ab74a5aSBram Moolenaar m(); 24301ab74a5aSBram Moolenaar } 24311ab74a5aSBram Moolenaar 24321ab74a5aSBram Moolenaar n(); 24331ab74a5aSBram Moolenaar } 24341ab74a5aSBram Moolenaar 24351ab74a5aSBram Moolenaar [CODE] 24361ab74a5aSBram Moolenaar 24371ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 24381ab74a5aSBram Moolenaar enew! | close 24391ab74a5aSBram Moolenaarendfunc 24401ab74a5aSBram Moolenaar 24411ab74a5aSBram Moolenaarfunc Test_cindent_10() 24421ab74a5aSBram Moolenaar new 24431ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 24441ab74a5aSBram Moolenaar setl cino={s,e-s 24451ab74a5aSBram Moolenaar 24461ab74a5aSBram Moolenaar let code =<< trim [CODE] 24471ab74a5aSBram Moolenaar 24481ab74a5aSBram Moolenaar void f() 24491ab74a5aSBram Moolenaar { 24501ab74a5aSBram Moolenaar if ( k() ) 24511ab74a5aSBram Moolenaar { 24521ab74a5aSBram Moolenaar l(); 24531ab74a5aSBram Moolenaar } else { /* Start (two words) end */ 24541ab74a5aSBram Moolenaar m(); 24551ab74a5aSBram Moolenaar } 24561ab74a5aSBram Moolenaar n(); /* should be under the if () */ 24571ab74a5aSBram Moolenaar } 24581ab74a5aSBram Moolenaar [CODE] 24591ab74a5aSBram Moolenaar 24601ab74a5aSBram Moolenaar call append(0, code) 24611ab74a5aSBram Moolenaar normal gg 24621ab74a5aSBram Moolenaar normal ]]=][ 24631ab74a5aSBram Moolenaar 24641ab74a5aSBram Moolenaar let expected =<< trim [CODE] 24651ab74a5aSBram Moolenaar 24661ab74a5aSBram Moolenaar void f() 24671ab74a5aSBram Moolenaar { 24681ab74a5aSBram Moolenaar if ( k() ) 24691ab74a5aSBram Moolenaar { 24701ab74a5aSBram Moolenaar l(); 24711ab74a5aSBram Moolenaar } else { /* Start (two words) end */ 24721ab74a5aSBram Moolenaar m(); 24731ab74a5aSBram Moolenaar } 24741ab74a5aSBram Moolenaar n(); /* should be under the if () */ 24751ab74a5aSBram Moolenaar } 24761ab74a5aSBram Moolenaar 24771ab74a5aSBram Moolenaar [CODE] 24781ab74a5aSBram Moolenaar 24791ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 24801ab74a5aSBram Moolenaar enew! | close 24811ab74a5aSBram Moolenaarendfunc 24821ab74a5aSBram Moolenaar 24831ab74a5aSBram Moolenaarfunc Test_cindent_11() 24841ab74a5aSBram Moolenaar new 24851ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 24861ab74a5aSBram Moolenaar setl cino={s,fs 24871ab74a5aSBram Moolenaar 24881ab74a5aSBram Moolenaar let code =<< trim [CODE] 24891ab74a5aSBram Moolenaar void bar(void) 24901ab74a5aSBram Moolenaar { 24911ab74a5aSBram Moolenaar static array[2][2] = 24921ab74a5aSBram Moolenaar { 24931ab74a5aSBram Moolenaar { 1, 2 }, 24941ab74a5aSBram Moolenaar { 3, 4 }, 24951ab74a5aSBram Moolenaar } 24961ab74a5aSBram Moolenaar 24971ab74a5aSBram Moolenaar while (a) 24981ab74a5aSBram Moolenaar { 24991ab74a5aSBram Moolenaar foo(&a); 25001ab74a5aSBram Moolenaar } 25011ab74a5aSBram Moolenaar 25021ab74a5aSBram Moolenaar { 25031ab74a5aSBram Moolenaar int a; 25041ab74a5aSBram Moolenaar { 25051ab74a5aSBram Moolenaar a = a + 1; 25061ab74a5aSBram Moolenaar } 25071ab74a5aSBram Moolenaar } 25081ab74a5aSBram Moolenaar b = a; 25091ab74a5aSBram Moolenaar } 25101ab74a5aSBram Moolenaar 25111ab74a5aSBram Moolenaar void func(void) 25121ab74a5aSBram Moolenaar { 25131ab74a5aSBram Moolenaar a = 1; 25141ab74a5aSBram Moolenaar { 25151ab74a5aSBram Moolenaar b = 2; 25161ab74a5aSBram Moolenaar } 25171ab74a5aSBram Moolenaar c = 3; 25181ab74a5aSBram Moolenaar d = 4; 25191ab74a5aSBram Moolenaar } 25201ab74a5aSBram Moolenaar /* foo */ 25211ab74a5aSBram Moolenaar [CODE] 25221ab74a5aSBram Moolenaar 25231ab74a5aSBram Moolenaar call append(0, code) 25241ab74a5aSBram Moolenaar normal gg 25251ab74a5aSBram Moolenaar exe "normal ]]=/ foo\<CR>" 25261ab74a5aSBram Moolenaar 25271ab74a5aSBram Moolenaar let expected =<< trim [CODE] 25281ab74a5aSBram Moolenaar void bar(void) 25291ab74a5aSBram Moolenaar { 25301ab74a5aSBram Moolenaar static array[2][2] = 25311ab74a5aSBram Moolenaar { 25321ab74a5aSBram Moolenaar { 1, 2 }, 25331ab74a5aSBram Moolenaar { 3, 4 }, 25341ab74a5aSBram Moolenaar } 25351ab74a5aSBram Moolenaar 25361ab74a5aSBram Moolenaar while (a) 25371ab74a5aSBram Moolenaar { 25381ab74a5aSBram Moolenaar foo(&a); 25391ab74a5aSBram Moolenaar } 25401ab74a5aSBram Moolenaar 25411ab74a5aSBram Moolenaar { 25421ab74a5aSBram Moolenaar int a; 25431ab74a5aSBram Moolenaar { 25441ab74a5aSBram Moolenaar a = a + 1; 25451ab74a5aSBram Moolenaar } 25461ab74a5aSBram Moolenaar } 25471ab74a5aSBram Moolenaar b = a; 25481ab74a5aSBram Moolenaar } 25491ab74a5aSBram Moolenaar 25501ab74a5aSBram Moolenaar void func(void) 25511ab74a5aSBram Moolenaar { 25521ab74a5aSBram Moolenaar a = 1; 25531ab74a5aSBram Moolenaar { 25541ab74a5aSBram Moolenaar b = 2; 25551ab74a5aSBram Moolenaar } 25561ab74a5aSBram Moolenaar c = 3; 25571ab74a5aSBram Moolenaar d = 4; 25581ab74a5aSBram Moolenaar } 25591ab74a5aSBram Moolenaar /* foo */ 25601ab74a5aSBram Moolenaar 25611ab74a5aSBram Moolenaar [CODE] 25621ab74a5aSBram Moolenaar 25631ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 25641ab74a5aSBram Moolenaar enew! | close 25651ab74a5aSBram Moolenaarendfunc 25661ab74a5aSBram Moolenaar 25671ab74a5aSBram Moolenaarfunc Test_cindent_12() 25681ab74a5aSBram Moolenaar new 25691ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 25701ab74a5aSBram Moolenaar setl cino= 25711ab74a5aSBram Moolenaar 25721ab74a5aSBram Moolenaar let code =<< trim [CODE] 25731ab74a5aSBram Moolenaar a() 25741ab74a5aSBram Moolenaar { 25751ab74a5aSBram Moolenaar do { 25761ab74a5aSBram Moolenaar a = a + 25771ab74a5aSBram Moolenaar a; 25781ab74a5aSBram Moolenaar } while ( a ); /* add text under this line */ 25791ab74a5aSBram Moolenaar if ( a ) 25801ab74a5aSBram Moolenaar a; 25811ab74a5aSBram Moolenaar } 25821ab74a5aSBram Moolenaar [CODE] 25831ab74a5aSBram Moolenaar 25841ab74a5aSBram Moolenaar call append(0, code) 25851ab74a5aSBram Moolenaar normal gg 25861ab74a5aSBram Moolenaar call search('while') 25871ab74a5aSBram Moolenaar normal ohere 25881ab74a5aSBram Moolenaar 25891ab74a5aSBram Moolenaar let expected =<< trim [CODE] 25901ab74a5aSBram Moolenaar a() 25911ab74a5aSBram Moolenaar { 25921ab74a5aSBram Moolenaar do { 25931ab74a5aSBram Moolenaar a = a + 25941ab74a5aSBram Moolenaar a; 25951ab74a5aSBram Moolenaar } while ( a ); /* add text under this line */ 25961ab74a5aSBram Moolenaar here 25971ab74a5aSBram Moolenaar if ( a ) 25981ab74a5aSBram Moolenaar a; 25991ab74a5aSBram Moolenaar } 26001ab74a5aSBram Moolenaar 26011ab74a5aSBram Moolenaar [CODE] 26021ab74a5aSBram Moolenaar 26031ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 26041ab74a5aSBram Moolenaar enew! | close 26051ab74a5aSBram Moolenaarendfunc 26061ab74a5aSBram Moolenaar 26071ab74a5aSBram Moolenaarfunc Test_cindent_13() 26081ab74a5aSBram Moolenaar new 26091ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 26101ab74a5aSBram Moolenaar setl cino= com= 26111ab74a5aSBram Moolenaar 26121ab74a5aSBram Moolenaar let code =<< trim [CODE] 26131ab74a5aSBram Moolenaar a() 26141ab74a5aSBram Moolenaar { 26151ab74a5aSBram Moolenaar label1: 26161ab74a5aSBram Moolenaar /* hmm */ 26171ab74a5aSBram Moolenaar // comment 26181ab74a5aSBram Moolenaar } 26191ab74a5aSBram Moolenaar [CODE] 26201ab74a5aSBram Moolenaar 26211ab74a5aSBram Moolenaar call append(0, code) 26221ab74a5aSBram Moolenaar normal gg 26231ab74a5aSBram Moolenaar call search('comment') 26241ab74a5aSBram Moolenaar exe "normal olabel2: b();\rlabel3 /* post */:\r/* pre */ label4:\r" . 26251ab74a5aSBram Moolenaar \ "f(/*com*/);\rif (/*com*/)\rcmd();" 26261ab74a5aSBram Moolenaar 26271ab74a5aSBram Moolenaar let expected =<< trim [CODE] 26281ab74a5aSBram Moolenaar a() 26291ab74a5aSBram Moolenaar { 26301ab74a5aSBram Moolenaar label1: 26311ab74a5aSBram Moolenaar /* hmm */ 26321ab74a5aSBram Moolenaar // comment 26331ab74a5aSBram Moolenaar label2: b(); 26341ab74a5aSBram Moolenaar label3 /* post */: 26351ab74a5aSBram Moolenaar /* pre */ label4: 26361ab74a5aSBram Moolenaar f(/*com*/); 26371ab74a5aSBram Moolenaar if (/*com*/) 26381ab74a5aSBram Moolenaar cmd(); 26391ab74a5aSBram Moolenaar } 26401ab74a5aSBram Moolenaar 26411ab74a5aSBram Moolenaar [CODE] 26421ab74a5aSBram Moolenaar 26431ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 26441ab74a5aSBram Moolenaar enew! | close 26451ab74a5aSBram Moolenaarendfunc 26461ab74a5aSBram Moolenaar 26471ab74a5aSBram Moolenaarfunc Test_cindent_14() 26481ab74a5aSBram Moolenaar new 26491ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 26501ab74a5aSBram Moolenaar setl comments& comments^=s:/*,m:**,ex:*/ 26511ab74a5aSBram Moolenaar 26521ab74a5aSBram Moolenaar let code =<< trim [CODE] 26531ab74a5aSBram Moolenaar /* 26541ab74a5aSBram Moolenaar * A simple comment 26551ab74a5aSBram Moolenaar */ 26561ab74a5aSBram Moolenaar 26571ab74a5aSBram Moolenaar /* 26581ab74a5aSBram Moolenaar ** A different comment 26591ab74a5aSBram Moolenaar */ 26601ab74a5aSBram Moolenaar [CODE] 26611ab74a5aSBram Moolenaar 26621ab74a5aSBram Moolenaar call append(0, code) 26631ab74a5aSBram Moolenaar normal gg 26641ab74a5aSBram Moolenaar call search('simple') 26651ab74a5aSBram Moolenaar normal =5j 26661ab74a5aSBram Moolenaar 26671ab74a5aSBram Moolenaar let expected =<< trim [CODE] 26681ab74a5aSBram Moolenaar /* 26691ab74a5aSBram Moolenaar * A simple comment 26701ab74a5aSBram Moolenaar */ 26711ab74a5aSBram Moolenaar 26721ab74a5aSBram Moolenaar /* 26731ab74a5aSBram Moolenaar ** A different comment 26741ab74a5aSBram Moolenaar */ 26751ab74a5aSBram Moolenaar 26761ab74a5aSBram Moolenaar [CODE] 26771ab74a5aSBram Moolenaar 26781ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 26791ab74a5aSBram Moolenaar enew! | close 26801ab74a5aSBram Moolenaarendfunc 26811ab74a5aSBram Moolenaar 26821ab74a5aSBram Moolenaarfunc Test_cindent_15() 26831ab74a5aSBram Moolenaar new 26841ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 26851ab74a5aSBram Moolenaar setl cino=c0 26861ab74a5aSBram Moolenaar setl comments& comments-=s1:/* comments^=s0:/* 26871ab74a5aSBram Moolenaar 26881ab74a5aSBram Moolenaar let code =<< trim [CODE] 26891ab74a5aSBram Moolenaar void f() 26901ab74a5aSBram Moolenaar { 26911ab74a5aSBram Moolenaar 26921ab74a5aSBram Moolenaar /********* 26931ab74a5aSBram Moolenaar A comment. 26941ab74a5aSBram Moolenaar *********/ 26951ab74a5aSBram Moolenaar } 26961ab74a5aSBram Moolenaar [CODE] 26971ab74a5aSBram Moolenaar 26981ab74a5aSBram Moolenaar call append(0, code) 26991ab74a5aSBram Moolenaar normal gg 27001ab74a5aSBram Moolenaar normal ]]=][ 27011ab74a5aSBram Moolenaar 27021ab74a5aSBram Moolenaar let expected =<< trim [CODE] 27031ab74a5aSBram Moolenaar void f() 27041ab74a5aSBram Moolenaar { 27051ab74a5aSBram Moolenaar 27061ab74a5aSBram Moolenaar /********* 27071ab74a5aSBram Moolenaar A comment. 27081ab74a5aSBram Moolenaar *********/ 27091ab74a5aSBram Moolenaar } 27101ab74a5aSBram Moolenaar 27111ab74a5aSBram Moolenaar [CODE] 27121ab74a5aSBram Moolenaar 27131ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 27141ab74a5aSBram Moolenaar enew! | close 27151ab74a5aSBram Moolenaarendfunc 27161ab74a5aSBram Moolenaar 27171ab74a5aSBram Moolenaarfunc Test_cindent_16() 27181ab74a5aSBram Moolenaar new 27191ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 27201ab74a5aSBram Moolenaar setl cino=c0,C1 27211ab74a5aSBram Moolenaar setl comments& comments-=s1:/* comments^=s0:/* 27221ab74a5aSBram Moolenaar 27231ab74a5aSBram Moolenaar let code =<< trim [CODE] 27241ab74a5aSBram Moolenaar void f() 27251ab74a5aSBram Moolenaar { 27261ab74a5aSBram Moolenaar 27271ab74a5aSBram Moolenaar /********* 27281ab74a5aSBram Moolenaar A comment. 27291ab74a5aSBram Moolenaar *********/ 27301ab74a5aSBram Moolenaar } 27311ab74a5aSBram Moolenaar [CODE] 27321ab74a5aSBram Moolenaar 27331ab74a5aSBram Moolenaar call append(0, code) 27341ab74a5aSBram Moolenaar normal gg 27351ab74a5aSBram Moolenaar normal ]]=][ 27361ab74a5aSBram Moolenaar 27371ab74a5aSBram Moolenaar let expected =<< trim [CODE] 27381ab74a5aSBram Moolenaar void f() 27391ab74a5aSBram Moolenaar { 27401ab74a5aSBram Moolenaar 27411ab74a5aSBram Moolenaar /********* 27421ab74a5aSBram Moolenaar A comment. 27431ab74a5aSBram Moolenaar *********/ 27441ab74a5aSBram Moolenaar } 27451ab74a5aSBram Moolenaar 27461ab74a5aSBram Moolenaar [CODE] 27471ab74a5aSBram Moolenaar 27481ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 27491ab74a5aSBram Moolenaar enew! | close 27501ab74a5aSBram Moolenaarendfunc 27511ab74a5aSBram Moolenaar 27521ab74a5aSBram Moolenaarfunc Test_cindent_17() 27531ab74a5aSBram Moolenaar new 27541ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 27551ab74a5aSBram Moolenaar setl cino= 27561ab74a5aSBram Moolenaar 27571ab74a5aSBram Moolenaar let code =<< trim [CODE] 27581ab74a5aSBram Moolenaar void f() 27591ab74a5aSBram Moolenaar { 27601ab74a5aSBram Moolenaar c = c1 && 27611ab74a5aSBram Moolenaar ( 27621ab74a5aSBram Moolenaar c2 || 27631ab74a5aSBram Moolenaar c3 27641ab74a5aSBram Moolenaar ) && c4; 27651ab74a5aSBram Moolenaar } 27661ab74a5aSBram Moolenaar [CODE] 27671ab74a5aSBram Moolenaar 27681ab74a5aSBram Moolenaar call append(0, code) 27691ab74a5aSBram Moolenaar normal gg 27701ab74a5aSBram Moolenaar normal ]]=][ 27711ab74a5aSBram Moolenaar 27721ab74a5aSBram Moolenaar let expected =<< trim [CODE] 27731ab74a5aSBram Moolenaar void f() 27741ab74a5aSBram Moolenaar { 27751ab74a5aSBram Moolenaar c = c1 && 27761ab74a5aSBram Moolenaar ( 27771ab74a5aSBram Moolenaar c2 || 27781ab74a5aSBram Moolenaar c3 27791ab74a5aSBram Moolenaar ) && c4; 27801ab74a5aSBram Moolenaar } 27811ab74a5aSBram Moolenaar 27821ab74a5aSBram Moolenaar [CODE] 27831ab74a5aSBram Moolenaar 27841ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 27851ab74a5aSBram Moolenaar enew! | close 27861ab74a5aSBram Moolenaarendfunc 27871ab74a5aSBram Moolenaar 27881ab74a5aSBram Moolenaarfunc Test_cindent_18() 27891ab74a5aSBram Moolenaar new 27901ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 27911ab74a5aSBram Moolenaar setl cino=(s 27921ab74a5aSBram Moolenaar 27931ab74a5aSBram Moolenaar let code =<< trim [CODE] 27941ab74a5aSBram Moolenaar void f() 27951ab74a5aSBram Moolenaar { 27961ab74a5aSBram Moolenaar c = c1 && 27971ab74a5aSBram Moolenaar ( 27981ab74a5aSBram Moolenaar c2 || 27991ab74a5aSBram Moolenaar c3 28001ab74a5aSBram Moolenaar ) && c4; 28011ab74a5aSBram Moolenaar } 28021ab74a5aSBram Moolenaar [CODE] 28031ab74a5aSBram Moolenaar 28041ab74a5aSBram Moolenaar call append(0, code) 28051ab74a5aSBram Moolenaar normal gg 28061ab74a5aSBram Moolenaar normal ]]=][ 28071ab74a5aSBram Moolenaar 28081ab74a5aSBram Moolenaar let expected =<< trim [CODE] 28091ab74a5aSBram Moolenaar void f() 28101ab74a5aSBram Moolenaar { 28111ab74a5aSBram Moolenaar c = c1 && 28121ab74a5aSBram Moolenaar ( 28131ab74a5aSBram Moolenaar c2 || 28141ab74a5aSBram Moolenaar c3 28151ab74a5aSBram Moolenaar ) && c4; 28161ab74a5aSBram Moolenaar } 28171ab74a5aSBram Moolenaar 28181ab74a5aSBram Moolenaar [CODE] 28191ab74a5aSBram Moolenaar 28201ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 28211ab74a5aSBram Moolenaar enew! | close 28221ab74a5aSBram Moolenaarendfunc 28231ab74a5aSBram Moolenaar 28241ab74a5aSBram Moolenaarfunc Test_cindent_19() 28251ab74a5aSBram Moolenaar new 28261ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 28271ab74a5aSBram Moolenaar set cino=(s,U1 28281ab74a5aSBram Moolenaar 28291ab74a5aSBram Moolenaar let code =<< trim [CODE] 28301ab74a5aSBram Moolenaar void f() 28311ab74a5aSBram Moolenaar { 28321ab74a5aSBram Moolenaar c = c1 && 28331ab74a5aSBram Moolenaar ( 28341ab74a5aSBram Moolenaar c2 || 28351ab74a5aSBram Moolenaar c3 28361ab74a5aSBram Moolenaar ) && c4; 28371ab74a5aSBram Moolenaar } 28381ab74a5aSBram Moolenaar [CODE] 28391ab74a5aSBram Moolenaar 28401ab74a5aSBram Moolenaar call append(0, code) 28411ab74a5aSBram Moolenaar normal gg 28421ab74a5aSBram Moolenaar normal ]]=][ 28431ab74a5aSBram Moolenaar 28441ab74a5aSBram Moolenaar let expected =<< trim [CODE] 28451ab74a5aSBram Moolenaar void f() 28461ab74a5aSBram Moolenaar { 28471ab74a5aSBram Moolenaar c = c1 && 28481ab74a5aSBram Moolenaar ( 28491ab74a5aSBram Moolenaar c2 || 28501ab74a5aSBram Moolenaar c3 28511ab74a5aSBram Moolenaar ) && c4; 28521ab74a5aSBram Moolenaar } 28531ab74a5aSBram Moolenaar 28541ab74a5aSBram Moolenaar [CODE] 28551ab74a5aSBram Moolenaar 28561ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 28571ab74a5aSBram Moolenaar enew! | close 28581ab74a5aSBram Moolenaarendfunc 28591ab74a5aSBram Moolenaar 28601ab74a5aSBram Moolenaarfunc Test_cindent_20() 28611ab74a5aSBram Moolenaar new 28621ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 28631ab74a5aSBram Moolenaar setl cino=(0 28641ab74a5aSBram Moolenaar 28651ab74a5aSBram Moolenaar let code =<< trim [CODE] 28661ab74a5aSBram Moolenaar void f() 28671ab74a5aSBram Moolenaar { 28681ab74a5aSBram Moolenaar if ( c1 28691ab74a5aSBram Moolenaar && ( c2 28701ab74a5aSBram Moolenaar || c3)) 28711ab74a5aSBram Moolenaar foo; 28721ab74a5aSBram Moolenaar } 28731ab74a5aSBram Moolenaar [CODE] 28741ab74a5aSBram Moolenaar 28751ab74a5aSBram Moolenaar call append(0, code) 28761ab74a5aSBram Moolenaar normal gg 28771ab74a5aSBram Moolenaar normal ]]=][ 28781ab74a5aSBram Moolenaar 28791ab74a5aSBram Moolenaar let expected =<< trim [CODE] 28801ab74a5aSBram Moolenaar void f() 28811ab74a5aSBram Moolenaar { 28821ab74a5aSBram Moolenaar if ( c1 28831ab74a5aSBram Moolenaar && ( c2 28841ab74a5aSBram Moolenaar || c3)) 28851ab74a5aSBram Moolenaar foo; 28861ab74a5aSBram Moolenaar } 28871ab74a5aSBram Moolenaar 28881ab74a5aSBram Moolenaar [CODE] 28891ab74a5aSBram Moolenaar 28901ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 28911ab74a5aSBram Moolenaar enew! | close 28921ab74a5aSBram Moolenaarendfunc 28931ab74a5aSBram Moolenaar 28941ab74a5aSBram Moolenaarfunc Test_cindent_21() 28951ab74a5aSBram Moolenaar new 28961ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 28971ab74a5aSBram Moolenaar setl cino=(0,w1 28981ab74a5aSBram Moolenaar 28991ab74a5aSBram Moolenaar let code =<< trim [CODE] 29001ab74a5aSBram Moolenaar void f() 29011ab74a5aSBram Moolenaar { 29021ab74a5aSBram Moolenaar if ( c1 29031ab74a5aSBram Moolenaar && ( c2 29041ab74a5aSBram Moolenaar || c3)) 29051ab74a5aSBram Moolenaar foo; 29061ab74a5aSBram Moolenaar } 29071ab74a5aSBram Moolenaar [CODE] 29081ab74a5aSBram Moolenaar 29091ab74a5aSBram Moolenaar call append(0, code) 29101ab74a5aSBram Moolenaar normal gg 29111ab74a5aSBram Moolenaar normal ]]=][ 29121ab74a5aSBram Moolenaar 29131ab74a5aSBram Moolenaar let expected =<< trim [CODE] 29141ab74a5aSBram Moolenaar void f() 29151ab74a5aSBram Moolenaar { 29161ab74a5aSBram Moolenaar if ( c1 29171ab74a5aSBram Moolenaar && ( c2 29181ab74a5aSBram Moolenaar || c3)) 29191ab74a5aSBram Moolenaar foo; 29201ab74a5aSBram Moolenaar } 29211ab74a5aSBram Moolenaar 29221ab74a5aSBram Moolenaar [CODE] 29231ab74a5aSBram Moolenaar 29241ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 29251ab74a5aSBram Moolenaar enew! | close 29261ab74a5aSBram Moolenaarendfunc 29271ab74a5aSBram Moolenaar 29281ab74a5aSBram Moolenaarfunc Test_cindent_22() 29291ab74a5aSBram Moolenaar new 29301ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 29311ab74a5aSBram Moolenaar setl cino=(s 29321ab74a5aSBram Moolenaar 29331ab74a5aSBram Moolenaar let code =<< trim [CODE] 29341ab74a5aSBram Moolenaar void f() 29351ab74a5aSBram Moolenaar { 29361ab74a5aSBram Moolenaar c = c1 && ( 29371ab74a5aSBram Moolenaar c2 || 29381ab74a5aSBram Moolenaar c3 29391ab74a5aSBram Moolenaar ) && c4; 29401ab74a5aSBram Moolenaar if ( 29411ab74a5aSBram Moolenaar c1 && c2 29421ab74a5aSBram Moolenaar ) 29431ab74a5aSBram Moolenaar foo; 29441ab74a5aSBram Moolenaar } 29451ab74a5aSBram Moolenaar [CODE] 29461ab74a5aSBram Moolenaar 29471ab74a5aSBram Moolenaar call append(0, code) 29481ab74a5aSBram Moolenaar normal gg 29491ab74a5aSBram Moolenaar normal ]]=][ 29501ab74a5aSBram Moolenaar 29511ab74a5aSBram Moolenaar let expected =<< trim [CODE] 29521ab74a5aSBram Moolenaar void f() 29531ab74a5aSBram Moolenaar { 29541ab74a5aSBram Moolenaar c = c1 && ( 29551ab74a5aSBram Moolenaar c2 || 29561ab74a5aSBram Moolenaar c3 29571ab74a5aSBram Moolenaar ) && c4; 29581ab74a5aSBram Moolenaar if ( 29591ab74a5aSBram Moolenaar c1 && c2 29601ab74a5aSBram Moolenaar ) 29611ab74a5aSBram Moolenaar foo; 29621ab74a5aSBram Moolenaar } 29631ab74a5aSBram Moolenaar 29641ab74a5aSBram Moolenaar [CODE] 29651ab74a5aSBram Moolenaar 29661ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 29671ab74a5aSBram Moolenaar enew! | close 29681ab74a5aSBram Moolenaarendfunc 29691ab74a5aSBram Moolenaar 29701ab74a5aSBram Moolenaarfunc Test_cindent_23() 29711ab74a5aSBram Moolenaar new 29721ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 29731ab74a5aSBram Moolenaar setl cino=(s,m1 29741ab74a5aSBram Moolenaar 29751ab74a5aSBram Moolenaar let code =<< trim [CODE] 29761ab74a5aSBram Moolenaar void f() 29771ab74a5aSBram Moolenaar { 29781ab74a5aSBram Moolenaar c = c1 && ( 29791ab74a5aSBram Moolenaar c2 || 29801ab74a5aSBram Moolenaar c3 29811ab74a5aSBram Moolenaar ) && c4; 29821ab74a5aSBram Moolenaar if ( 29831ab74a5aSBram Moolenaar c1 && c2 29841ab74a5aSBram Moolenaar ) 29851ab74a5aSBram Moolenaar foo; 29861ab74a5aSBram Moolenaar } 29871ab74a5aSBram Moolenaar [CODE] 29881ab74a5aSBram Moolenaar 29891ab74a5aSBram Moolenaar call append(0, code) 29901ab74a5aSBram Moolenaar normal gg 29911ab74a5aSBram Moolenaar normal ]]=][ 29921ab74a5aSBram Moolenaar 29931ab74a5aSBram Moolenaar let expected =<< trim [CODE] 29941ab74a5aSBram Moolenaar void f() 29951ab74a5aSBram Moolenaar { 29961ab74a5aSBram Moolenaar c = c1 && ( 29971ab74a5aSBram Moolenaar c2 || 29981ab74a5aSBram Moolenaar c3 29991ab74a5aSBram Moolenaar ) && c4; 30001ab74a5aSBram Moolenaar if ( 30011ab74a5aSBram Moolenaar c1 && c2 30021ab74a5aSBram Moolenaar ) 30031ab74a5aSBram Moolenaar foo; 30041ab74a5aSBram Moolenaar } 30051ab74a5aSBram Moolenaar 30061ab74a5aSBram Moolenaar [CODE] 30071ab74a5aSBram Moolenaar 30081ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 30091ab74a5aSBram Moolenaar enew! | close 30101ab74a5aSBram Moolenaarendfunc 30111ab74a5aSBram Moolenaar 30121ab74a5aSBram Moolenaarfunc Test_cindent_24() 30131ab74a5aSBram Moolenaar new 30141ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 30151ab74a5aSBram Moolenaar setl cino=b1 30161ab74a5aSBram Moolenaar 30171ab74a5aSBram Moolenaar let code =<< trim [CODE] 30181ab74a5aSBram Moolenaar void f() 30191ab74a5aSBram Moolenaar { 30201ab74a5aSBram Moolenaar switch (x) 30211ab74a5aSBram Moolenaar { 30221ab74a5aSBram Moolenaar case 1: 30231ab74a5aSBram Moolenaar a = b; 30241ab74a5aSBram Moolenaar break; 30251ab74a5aSBram Moolenaar default: 30261ab74a5aSBram Moolenaar a = 0; 30271ab74a5aSBram Moolenaar break; 30281ab74a5aSBram Moolenaar } 30291ab74a5aSBram Moolenaar } 30301ab74a5aSBram Moolenaar [CODE] 30311ab74a5aSBram Moolenaar 30321ab74a5aSBram Moolenaar call append(0, code) 30331ab74a5aSBram Moolenaar normal gg 30341ab74a5aSBram Moolenaar normal ]]=][ 30351ab74a5aSBram Moolenaar 30361ab74a5aSBram Moolenaar let expected =<< trim [CODE] 30371ab74a5aSBram Moolenaar void f() 30381ab74a5aSBram Moolenaar { 30391ab74a5aSBram Moolenaar switch (x) 30401ab74a5aSBram Moolenaar { 30411ab74a5aSBram Moolenaar case 1: 30421ab74a5aSBram Moolenaar a = b; 30431ab74a5aSBram Moolenaar break; 30441ab74a5aSBram Moolenaar default: 30451ab74a5aSBram Moolenaar a = 0; 30461ab74a5aSBram Moolenaar break; 30471ab74a5aSBram Moolenaar } 30481ab74a5aSBram Moolenaar } 30491ab74a5aSBram Moolenaar 30501ab74a5aSBram Moolenaar [CODE] 30511ab74a5aSBram Moolenaar 30521ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 30531ab74a5aSBram Moolenaar enew! | close 30541ab74a5aSBram Moolenaarendfunc 30551ab74a5aSBram Moolenaar 30561ab74a5aSBram Moolenaarfunc Test_cindent_25() 30571ab74a5aSBram Moolenaar new 30581ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 30591ab74a5aSBram Moolenaar setl cino=(0,W5 30601ab74a5aSBram Moolenaar 30611ab74a5aSBram Moolenaar let code =<< trim [CODE] 30621ab74a5aSBram Moolenaar void f() 30631ab74a5aSBram Moolenaar { 30641ab74a5aSBram Moolenaar invokeme( 30651ab74a5aSBram Moolenaar argu, 30661ab74a5aSBram Moolenaar ment); 30671ab74a5aSBram Moolenaar invokeme( 30681ab74a5aSBram Moolenaar argu, 30691ab74a5aSBram Moolenaar ment 30701ab74a5aSBram Moolenaar ); 30711ab74a5aSBram Moolenaar invokeme(argu, 30721ab74a5aSBram Moolenaar ment 30731ab74a5aSBram Moolenaar ); 30741ab74a5aSBram Moolenaar } 30751ab74a5aSBram Moolenaar [CODE] 30761ab74a5aSBram Moolenaar 30771ab74a5aSBram Moolenaar call append(0, code) 30781ab74a5aSBram Moolenaar normal gg 30791ab74a5aSBram Moolenaar normal ]]=][ 30801ab74a5aSBram Moolenaar 30811ab74a5aSBram Moolenaar let expected =<< trim [CODE] 30821ab74a5aSBram Moolenaar void f() 30831ab74a5aSBram Moolenaar { 30841ab74a5aSBram Moolenaar invokeme( 30851ab74a5aSBram Moolenaar argu, 30861ab74a5aSBram Moolenaar ment); 30871ab74a5aSBram Moolenaar invokeme( 30881ab74a5aSBram Moolenaar argu, 30891ab74a5aSBram Moolenaar ment 30901ab74a5aSBram Moolenaar ); 30911ab74a5aSBram Moolenaar invokeme(argu, 30921ab74a5aSBram Moolenaar ment 30931ab74a5aSBram Moolenaar ); 30941ab74a5aSBram Moolenaar } 30951ab74a5aSBram Moolenaar 30961ab74a5aSBram Moolenaar [CODE] 30971ab74a5aSBram Moolenaar 30981ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 30991ab74a5aSBram Moolenaar enew! | close 31001ab74a5aSBram Moolenaarendfunc 31011ab74a5aSBram Moolenaar 31021ab74a5aSBram Moolenaarfunc Test_cindent_26() 31031ab74a5aSBram Moolenaar new 31041ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 31051ab74a5aSBram Moolenaar setl cino=/6 31061ab74a5aSBram Moolenaar 31071ab74a5aSBram Moolenaar let code =<< trim [CODE] 31081ab74a5aSBram Moolenaar void f() 31091ab74a5aSBram Moolenaar { 31101ab74a5aSBram Moolenaar statement; 31111ab74a5aSBram Moolenaar // comment 1 31121ab74a5aSBram Moolenaar // comment 2 31131ab74a5aSBram Moolenaar } 31141ab74a5aSBram Moolenaar [CODE] 31151ab74a5aSBram Moolenaar 31161ab74a5aSBram Moolenaar call append(0, code) 31171ab74a5aSBram Moolenaar normal gg 31181ab74a5aSBram Moolenaar normal ]]=][ 31191ab74a5aSBram Moolenaar 31201ab74a5aSBram Moolenaar let expected =<< trim [CODE] 31211ab74a5aSBram Moolenaar void f() 31221ab74a5aSBram Moolenaar { 31231ab74a5aSBram Moolenaar statement; 31241ab74a5aSBram Moolenaar // comment 1 31251ab74a5aSBram Moolenaar // comment 2 31261ab74a5aSBram Moolenaar } 31271ab74a5aSBram Moolenaar 31281ab74a5aSBram Moolenaar [CODE] 31291ab74a5aSBram Moolenaar 31301ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 31311ab74a5aSBram Moolenaar enew! | close 31321ab74a5aSBram Moolenaarendfunc 31331ab74a5aSBram Moolenaar 31341ab74a5aSBram Moolenaarfunc Test_cindent_27() 31351ab74a5aSBram Moolenaar new 31361ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 31371ab74a5aSBram Moolenaar setl cino= 31381ab74a5aSBram Moolenaar 31391ab74a5aSBram Moolenaar let code =<< trim [CODE] 31401ab74a5aSBram Moolenaar void f() 31411ab74a5aSBram Moolenaar { 31421ab74a5aSBram Moolenaar statement; 31431ab74a5aSBram Moolenaar // comment 1 31441ab74a5aSBram Moolenaar // comment 2 31451ab74a5aSBram Moolenaar } 31461ab74a5aSBram Moolenaar [CODE] 31471ab74a5aSBram Moolenaar 31481ab74a5aSBram Moolenaar call append(0, code) 31491ab74a5aSBram Moolenaar normal gg 31501ab74a5aSBram Moolenaar exe "normal ]]/comment 1/+1\<CR>==" 31511ab74a5aSBram Moolenaar 31521ab74a5aSBram Moolenaar let expected =<< trim [CODE] 31531ab74a5aSBram Moolenaar void f() 31541ab74a5aSBram Moolenaar { 31551ab74a5aSBram Moolenaar statement; 31561ab74a5aSBram Moolenaar // comment 1 31571ab74a5aSBram Moolenaar // comment 2 31581ab74a5aSBram Moolenaar } 31591ab74a5aSBram Moolenaar 31601ab74a5aSBram Moolenaar [CODE] 31611ab74a5aSBram Moolenaar 31621ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 31631ab74a5aSBram Moolenaar enew! | close 31641ab74a5aSBram Moolenaarendfunc 31651ab74a5aSBram Moolenaar 31661ab74a5aSBram Moolenaarfunc Test_cindent_28() 31671ab74a5aSBram Moolenaar new 31681ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 31691ab74a5aSBram Moolenaar setl cino=g0 31701ab74a5aSBram Moolenaar 31711ab74a5aSBram Moolenaar let code =<< trim [CODE] 31721ab74a5aSBram Moolenaar class CAbc 31731ab74a5aSBram Moolenaar { 31741ab74a5aSBram Moolenaar int Test() { return FALSE; } 31751ab74a5aSBram Moolenaar 31761ab74a5aSBram Moolenaar public: // comment 31771ab74a5aSBram Moolenaar void testfall(); 31781ab74a5aSBram Moolenaar protected: 31791ab74a5aSBram Moolenaar void testfall(); 31801ab74a5aSBram Moolenaar }; 31811ab74a5aSBram Moolenaar [CODE] 31821ab74a5aSBram Moolenaar 31831ab74a5aSBram Moolenaar call append(0, code) 31841ab74a5aSBram Moolenaar normal gg 31851ab74a5aSBram Moolenaar normal ]]=][ 31861ab74a5aSBram Moolenaar 31871ab74a5aSBram Moolenaar let expected =<< trim [CODE] 31881ab74a5aSBram Moolenaar class CAbc 31891ab74a5aSBram Moolenaar { 31901ab74a5aSBram Moolenaar int Test() { return FALSE; } 31911ab74a5aSBram Moolenaar 31921ab74a5aSBram Moolenaar public: // comment 31931ab74a5aSBram Moolenaar void testfall(); 31941ab74a5aSBram Moolenaar protected: 31951ab74a5aSBram Moolenaar void testfall(); 31961ab74a5aSBram Moolenaar }; 31971ab74a5aSBram Moolenaar 31981ab74a5aSBram Moolenaar [CODE] 31991ab74a5aSBram Moolenaar 32001ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 32011ab74a5aSBram Moolenaar enew! | close 32021ab74a5aSBram Moolenaarendfunc 32031ab74a5aSBram Moolenaar 32041ab74a5aSBram Moolenaarfunc Test_cindent_29() 32051ab74a5aSBram Moolenaar new 32061ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 32071ab74a5aSBram Moolenaar setl cino=(0,gs,hs 32081ab74a5aSBram Moolenaar 32091ab74a5aSBram Moolenaar let code =<< trim [CODE] 32101ab74a5aSBram Moolenaar class Foo : public Bar 32111ab74a5aSBram Moolenaar { 32121ab74a5aSBram Moolenaar public: 32131ab74a5aSBram Moolenaar virtual void method1(void) = 0; 32141ab74a5aSBram Moolenaar virtual void method2(int arg1, 32151ab74a5aSBram Moolenaar int arg2, 32161ab74a5aSBram Moolenaar int arg3) = 0; 32171ab74a5aSBram Moolenaar }; 32181ab74a5aSBram Moolenaar [CODE] 32191ab74a5aSBram Moolenaar 32201ab74a5aSBram Moolenaar call append(0, code) 32211ab74a5aSBram Moolenaar normal gg 32221ab74a5aSBram Moolenaar normal ]]=][ 32231ab74a5aSBram Moolenaar 32241ab74a5aSBram Moolenaar let expected =<< trim [CODE] 32251ab74a5aSBram Moolenaar class Foo : public Bar 32261ab74a5aSBram Moolenaar { 32271ab74a5aSBram Moolenaar public: 32281ab74a5aSBram Moolenaar virtual void method1(void) = 0; 32291ab74a5aSBram Moolenaar virtual void method2(int arg1, 32301ab74a5aSBram Moolenaar int arg2, 32311ab74a5aSBram Moolenaar int arg3) = 0; 32321ab74a5aSBram Moolenaar }; 32331ab74a5aSBram Moolenaar 32341ab74a5aSBram Moolenaar [CODE] 32351ab74a5aSBram Moolenaar 32361ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 32371ab74a5aSBram Moolenaar enew! | close 32381ab74a5aSBram Moolenaarendfunc 32391ab74a5aSBram Moolenaar 32401ab74a5aSBram Moolenaarfunc Test_cindent_30() 32411ab74a5aSBram Moolenaar new 32421ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 32431ab74a5aSBram Moolenaar setl cino=+20 32441ab74a5aSBram Moolenaar 3245e7eb9270SBram Moolenaar let code =<< [CODE] 32461ab74a5aSBram Moolenaar void 32471ab74a5aSBram Moolenaarfoo() 32481ab74a5aSBram Moolenaar{ 32491ab74a5aSBram Moolenaar if (a) 32501ab74a5aSBram Moolenaar { 32511ab74a5aSBram Moolenaar } else 32521ab74a5aSBram Moolenaar asdf; 32531ab74a5aSBram Moolenaar} 32541ab74a5aSBram Moolenaar[CODE] 32551ab74a5aSBram Moolenaar 32561ab74a5aSBram Moolenaar call append(0, code) 32571ab74a5aSBram Moolenaar normal gg 32581ab74a5aSBram Moolenaar normal ]]=][ 32591ab74a5aSBram Moolenaar 3260e7eb9270SBram Moolenaar let expected =<< [CODE] 32611ab74a5aSBram Moolenaar void 32621ab74a5aSBram Moolenaarfoo() 32631ab74a5aSBram Moolenaar{ 32641ab74a5aSBram Moolenaar if (a) 32651ab74a5aSBram Moolenaar { 32661ab74a5aSBram Moolenaar } else 32671ab74a5aSBram Moolenaar asdf; 32681ab74a5aSBram Moolenaar} 32691ab74a5aSBram Moolenaar 32701ab74a5aSBram Moolenaar[CODE] 32711ab74a5aSBram Moolenaar 32721ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 32731ab74a5aSBram Moolenaar enew! | close 32741ab74a5aSBram Moolenaarendfunc 32751ab74a5aSBram Moolenaar 32761ab74a5aSBram Moolenaarfunc Test_cindent_31() 32771ab74a5aSBram Moolenaar new 32781ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 32791ab74a5aSBram Moolenaar setl cino=(0,W2s 32801ab74a5aSBram Moolenaar 32811ab74a5aSBram Moolenaar let code =<< trim [CODE] 32821ab74a5aSBram Moolenaar 32831ab74a5aSBram Moolenaar { 32841ab74a5aSBram Moolenaar averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd( 32851ab74a5aSBram Moolenaar asdasdf, 32861ab74a5aSBram Moolenaar func(asdf, 32871ab74a5aSBram Moolenaar asdfadsf), 32881ab74a5aSBram Moolenaar asdfasdf 32891ab74a5aSBram Moolenaar ); 32901ab74a5aSBram Moolenaar 32911ab74a5aSBram Moolenaar /* those are ugly, but consequent */ 32921ab74a5aSBram Moolenaar 32931ab74a5aSBram Moolenaar func()->asd(asdasdf, 32941ab74a5aSBram Moolenaar averylongfunctionname( 32951ab74a5aSBram Moolenaar abc, 32961ab74a5aSBram Moolenaar dec)->averylongfunctionname( 32971ab74a5aSBram Moolenaar asdfadsf, 32981ab74a5aSBram Moolenaar asdfasdf, 32991ab74a5aSBram Moolenaar asdfasdf, 33001ab74a5aSBram Moolenaar ), 33011ab74a5aSBram Moolenaar func(asdfadf, 33021ab74a5aSBram Moolenaar asdfasdf 33031ab74a5aSBram Moolenaar ), 33041ab74a5aSBram Moolenaar asdasdf 33051ab74a5aSBram Moolenaar ); 33061ab74a5aSBram Moolenaar 33071ab74a5aSBram Moolenaar averylongfunctionnameaverylongfunctionnameavery()->asd(fasdf( 33081ab74a5aSBram Moolenaar abc, 33091ab74a5aSBram Moolenaar dec)->asdfasdfasdf( 33101ab74a5aSBram Moolenaar asdfadsf, 33111ab74a5aSBram Moolenaar asdfasdf, 33121ab74a5aSBram Moolenaar asdfasdf, 33131ab74a5aSBram Moolenaar ), 33141ab74a5aSBram Moolenaar func(asdfadf, 33151ab74a5aSBram Moolenaar asdfasdf), 33161ab74a5aSBram Moolenaar asdasdf 33171ab74a5aSBram Moolenaar ); 33181ab74a5aSBram Moolenaar } 33191ab74a5aSBram Moolenaar [CODE] 33201ab74a5aSBram Moolenaar 33211ab74a5aSBram Moolenaar call append(0, code) 33221ab74a5aSBram Moolenaar normal gg 33231ab74a5aSBram Moolenaar normal ]]=][ 33241ab74a5aSBram Moolenaar 33251ab74a5aSBram Moolenaar let expected =<< trim [CODE] 33261ab74a5aSBram Moolenaar 33271ab74a5aSBram Moolenaar { 33281ab74a5aSBram Moolenaar averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd( 33291ab74a5aSBram Moolenaar asdasdf, 33301ab74a5aSBram Moolenaar func(asdf, 33311ab74a5aSBram Moolenaar asdfadsf), 33321ab74a5aSBram Moolenaar asdfasdf 33331ab74a5aSBram Moolenaar ); 33341ab74a5aSBram Moolenaar 33351ab74a5aSBram Moolenaar /* those are ugly, but consequent */ 33361ab74a5aSBram Moolenaar 33371ab74a5aSBram Moolenaar func()->asd(asdasdf, 33381ab74a5aSBram Moolenaar averylongfunctionname( 33391ab74a5aSBram Moolenaar abc, 33401ab74a5aSBram Moolenaar dec)->averylongfunctionname( 33411ab74a5aSBram Moolenaar asdfadsf, 33421ab74a5aSBram Moolenaar asdfasdf, 33431ab74a5aSBram Moolenaar asdfasdf, 33441ab74a5aSBram Moolenaar ), 33451ab74a5aSBram Moolenaar func(asdfadf, 33461ab74a5aSBram Moolenaar asdfasdf 33471ab74a5aSBram Moolenaar ), 33481ab74a5aSBram Moolenaar asdasdf 33491ab74a5aSBram Moolenaar ); 33501ab74a5aSBram Moolenaar 33511ab74a5aSBram Moolenaar averylongfunctionnameaverylongfunctionnameavery()->asd(fasdf( 33521ab74a5aSBram Moolenaar abc, 33531ab74a5aSBram Moolenaar dec)->asdfasdfasdf( 33541ab74a5aSBram Moolenaar asdfadsf, 33551ab74a5aSBram Moolenaar asdfasdf, 33561ab74a5aSBram Moolenaar asdfasdf, 33571ab74a5aSBram Moolenaar ), 33581ab74a5aSBram Moolenaar func(asdfadf, 33591ab74a5aSBram Moolenaar asdfasdf), 33601ab74a5aSBram Moolenaar asdasdf 33611ab74a5aSBram Moolenaar ); 33621ab74a5aSBram Moolenaar } 33631ab74a5aSBram Moolenaar 33641ab74a5aSBram Moolenaar [CODE] 33651ab74a5aSBram Moolenaar 33661ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 33671ab74a5aSBram Moolenaar enew! | close 33681ab74a5aSBram Moolenaarendfunc 33691ab74a5aSBram Moolenaar 33701ab74a5aSBram Moolenaarfunc Test_cindent_32() 33711ab74a5aSBram Moolenaar new 33721ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 33731ab74a5aSBram Moolenaar setl cino=M1 33741ab74a5aSBram Moolenaar 33751ab74a5aSBram Moolenaar let code =<< trim [CODE] 33761ab74a5aSBram Moolenaar int main () 33771ab74a5aSBram Moolenaar { 33781ab74a5aSBram Moolenaar if (cond1 && 33791ab74a5aSBram Moolenaar cond2 33801ab74a5aSBram Moolenaar ) 33811ab74a5aSBram Moolenaar foo; 33821ab74a5aSBram Moolenaar } 33831ab74a5aSBram Moolenaar [CODE] 33841ab74a5aSBram Moolenaar 33851ab74a5aSBram Moolenaar call append(0, code) 33861ab74a5aSBram Moolenaar normal gg 33871ab74a5aSBram Moolenaar normal ]]=][ 33881ab74a5aSBram Moolenaar 33891ab74a5aSBram Moolenaar let expected =<< trim [CODE] 33901ab74a5aSBram Moolenaar int main () 33911ab74a5aSBram Moolenaar { 33921ab74a5aSBram Moolenaar if (cond1 && 33931ab74a5aSBram Moolenaar cond2 33941ab74a5aSBram Moolenaar ) 33951ab74a5aSBram Moolenaar foo; 33961ab74a5aSBram Moolenaar } 33971ab74a5aSBram Moolenaar 33981ab74a5aSBram Moolenaar [CODE] 33991ab74a5aSBram Moolenaar 34001ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 34011ab74a5aSBram Moolenaar enew! | close 34021ab74a5aSBram Moolenaarendfunc 34031ab74a5aSBram Moolenaar 34041ab74a5aSBram Moolenaarfunc Test_cindent_33() 34051ab74a5aSBram Moolenaar new 34061ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 34071ab74a5aSBram Moolenaar setl cino=(0,ts 34081ab74a5aSBram Moolenaar 34091ab74a5aSBram Moolenaar let code =<< trim [CODE] 34101ab74a5aSBram Moolenaar void func(int a 34111ab74a5aSBram Moolenaar #if defined(FOO) 34121ab74a5aSBram Moolenaar , int b 34131ab74a5aSBram Moolenaar , int c 34141ab74a5aSBram Moolenaar #endif 34151ab74a5aSBram Moolenaar ) 34161ab74a5aSBram Moolenaar { 34171ab74a5aSBram Moolenaar } 34181ab74a5aSBram Moolenaar [CODE] 34191ab74a5aSBram Moolenaar 34201ab74a5aSBram Moolenaar call append(0, code) 34211ab74a5aSBram Moolenaar normal gg 34221ab74a5aSBram Moolenaar normal 2j=][ 34231ab74a5aSBram Moolenaar 34241ab74a5aSBram Moolenaar let expected =<< trim [CODE] 34251ab74a5aSBram Moolenaar void func(int a 34261ab74a5aSBram Moolenaar #if defined(FOO) 34271ab74a5aSBram Moolenaar , int b 34281ab74a5aSBram Moolenaar , int c 34291ab74a5aSBram Moolenaar #endif 34301ab74a5aSBram Moolenaar ) 34311ab74a5aSBram Moolenaar { 34321ab74a5aSBram Moolenaar } 34331ab74a5aSBram Moolenaar 34341ab74a5aSBram Moolenaar [CODE] 34351ab74a5aSBram Moolenaar 34361ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 34371ab74a5aSBram Moolenaar enew! | close 34381ab74a5aSBram Moolenaarendfunc 34391ab74a5aSBram Moolenaar 34401ab74a5aSBram Moolenaarfunc Test_cindent_34() 34411ab74a5aSBram Moolenaar new 34421ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 34431ab74a5aSBram Moolenaar setl cino=(0 34441ab74a5aSBram Moolenaar 34451ab74a5aSBram Moolenaar let code =<< trim [CODE] 34461ab74a5aSBram Moolenaar 34471ab74a5aSBram Moolenaar void 34481ab74a5aSBram Moolenaar func(int a 34491ab74a5aSBram Moolenaar #if defined(FOO) 34501ab74a5aSBram Moolenaar , int b 34511ab74a5aSBram Moolenaar , int c 34521ab74a5aSBram Moolenaar #endif 34531ab74a5aSBram Moolenaar ) 34541ab74a5aSBram Moolenaar { 34551ab74a5aSBram Moolenaar } 34561ab74a5aSBram Moolenaar [CODE] 34571ab74a5aSBram Moolenaar 34581ab74a5aSBram Moolenaar call append(0, code) 34591ab74a5aSBram Moolenaar normal gg 34601ab74a5aSBram Moolenaar normal =][ 34611ab74a5aSBram Moolenaar 34621ab74a5aSBram Moolenaar let expected =<< trim [CODE] 34631ab74a5aSBram Moolenaar 34641ab74a5aSBram Moolenaar void 34651ab74a5aSBram Moolenaar func(int a 34661ab74a5aSBram Moolenaar #if defined(FOO) 34671ab74a5aSBram Moolenaar , int b 34681ab74a5aSBram Moolenaar , int c 34691ab74a5aSBram Moolenaar #endif 34701ab74a5aSBram Moolenaar ) 34711ab74a5aSBram Moolenaar { 34721ab74a5aSBram Moolenaar } 34731ab74a5aSBram Moolenaar 34741ab74a5aSBram Moolenaar [CODE] 34751ab74a5aSBram Moolenaar 34761ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 34771ab74a5aSBram Moolenaar enew! | close 34781ab74a5aSBram Moolenaarendfunc 34791ab74a5aSBram Moolenaar 34801ab74a5aSBram Moolenaarfunc Test_cindent_35() 34811ab74a5aSBram Moolenaar new 34821ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 34831ab74a5aSBram Moolenaar setl cino& 34841ab74a5aSBram Moolenaar 34851ab74a5aSBram Moolenaar let code =<< trim [CODE] 34861ab74a5aSBram Moolenaar void func(void) 34871ab74a5aSBram Moolenaar { 34881ab74a5aSBram Moolenaar if(x==y) 34891ab74a5aSBram Moolenaar if(y==z) 34901ab74a5aSBram Moolenaar foo=1; 34911ab74a5aSBram Moolenaar else { bar=1; 34921ab74a5aSBram Moolenaar baz=2; 34931ab74a5aSBram Moolenaar } 34941ab74a5aSBram Moolenaar printf("Foo!\n"); 34951ab74a5aSBram Moolenaar } 34961ab74a5aSBram Moolenaar 34971ab74a5aSBram Moolenaar void func1(void) 34981ab74a5aSBram Moolenaar { 34991ab74a5aSBram Moolenaar char* tab[] = {"foo", "bar", 35001ab74a5aSBram Moolenaar "baz", "quux", 35011ab74a5aSBram Moolenaar "this line used", "to be indented incorrectly"}; 35021ab74a5aSBram Moolenaar foo(); 35031ab74a5aSBram Moolenaar } 35041ab74a5aSBram Moolenaar 35051ab74a5aSBram Moolenaar void func2(void) 35061ab74a5aSBram Moolenaar { 35071ab74a5aSBram Moolenaar int tab[] = 35081ab74a5aSBram Moolenaar {1, 2, 35091ab74a5aSBram Moolenaar 3, 4, 35101ab74a5aSBram Moolenaar 5, 6}; 35111ab74a5aSBram Moolenaar 35121ab74a5aSBram Moolenaar printf("This line used to be indented incorrectly.\n"); 35131ab74a5aSBram Moolenaar } 35141ab74a5aSBram Moolenaar 35151ab74a5aSBram Moolenaar int foo[] 35161ab74a5aSBram Moolenaar #ifdef BAR 35171ab74a5aSBram Moolenaar 35181ab74a5aSBram Moolenaar = { 1, 2, 3, 35191ab74a5aSBram Moolenaar 4, 5, 6 } 35201ab74a5aSBram Moolenaar 35211ab74a5aSBram Moolenaar #endif 35221ab74a5aSBram Moolenaar ; 35231ab74a5aSBram Moolenaar int baz; 35241ab74a5aSBram Moolenaar 35251ab74a5aSBram Moolenaar void func3(void) 35261ab74a5aSBram Moolenaar { 35271ab74a5aSBram Moolenaar int tab[] = { 35281ab74a5aSBram Moolenaar 1, 2, 35291ab74a5aSBram Moolenaar 3, 4, 35301ab74a5aSBram Moolenaar 5, 6}; 35311ab74a5aSBram Moolenaar 35321ab74a5aSBram Moolenaar printf("Don't you dare indent this line incorrectly!\n"); 35331ab74a5aSBram Moolenaar } 35341ab74a5aSBram Moolenaar 35351ab74a5aSBram Moolenaar void 35361ab74a5aSBram Moolenaar func4(a, b, 35371ab74a5aSBram Moolenaar c) 35381ab74a5aSBram Moolenaar int a; 35391ab74a5aSBram Moolenaar int b; 35401ab74a5aSBram Moolenaar int c; 35411ab74a5aSBram Moolenaar { 35421ab74a5aSBram Moolenaar } 35431ab74a5aSBram Moolenaar 35441ab74a5aSBram Moolenaar void 35451ab74a5aSBram Moolenaar func5( 35461ab74a5aSBram Moolenaar int a, 35471ab74a5aSBram Moolenaar int b) 35481ab74a5aSBram Moolenaar { 35491ab74a5aSBram Moolenaar } 35501ab74a5aSBram Moolenaar 35511ab74a5aSBram Moolenaar void 35521ab74a5aSBram Moolenaar func6( 35531ab74a5aSBram Moolenaar int a) 35541ab74a5aSBram Moolenaar { 35551ab74a5aSBram Moolenaar } 35561ab74a5aSBram Moolenaar [CODE] 35571ab74a5aSBram Moolenaar 35581ab74a5aSBram Moolenaar call append(0, code) 35591ab74a5aSBram Moolenaar normal gg 35601ab74a5aSBram Moolenaar normal ]]=7][ 35611ab74a5aSBram Moolenaar 35621ab74a5aSBram Moolenaar let expected =<< trim [CODE] 35631ab74a5aSBram Moolenaar void func(void) 35641ab74a5aSBram Moolenaar { 35651ab74a5aSBram Moolenaar if(x==y) 35661ab74a5aSBram Moolenaar if(y==z) 35671ab74a5aSBram Moolenaar foo=1; 35681ab74a5aSBram Moolenaar else { bar=1; 35691ab74a5aSBram Moolenaar baz=2; 35701ab74a5aSBram Moolenaar } 35711ab74a5aSBram Moolenaar printf("Foo!\n"); 35721ab74a5aSBram Moolenaar } 35731ab74a5aSBram Moolenaar 35741ab74a5aSBram Moolenaar void func1(void) 35751ab74a5aSBram Moolenaar { 35761ab74a5aSBram Moolenaar char* tab[] = {"foo", "bar", 35771ab74a5aSBram Moolenaar "baz", "quux", 35781ab74a5aSBram Moolenaar "this line used", "to be indented incorrectly"}; 35791ab74a5aSBram Moolenaar foo(); 35801ab74a5aSBram Moolenaar } 35811ab74a5aSBram Moolenaar 35821ab74a5aSBram Moolenaar void func2(void) 35831ab74a5aSBram Moolenaar { 35841ab74a5aSBram Moolenaar int tab[] = 35851ab74a5aSBram Moolenaar {1, 2, 35861ab74a5aSBram Moolenaar 3, 4, 35871ab74a5aSBram Moolenaar 5, 6}; 35881ab74a5aSBram Moolenaar 35891ab74a5aSBram Moolenaar printf("This line used to be indented incorrectly.\n"); 35901ab74a5aSBram Moolenaar } 35911ab74a5aSBram Moolenaar 35921ab74a5aSBram Moolenaar int foo[] 35931ab74a5aSBram Moolenaar #ifdef BAR 35941ab74a5aSBram Moolenaar 35951ab74a5aSBram Moolenaar = { 1, 2, 3, 35961ab74a5aSBram Moolenaar 4, 5, 6 } 35971ab74a5aSBram Moolenaar 35981ab74a5aSBram Moolenaar #endif 35991ab74a5aSBram Moolenaar ; 36001ab74a5aSBram Moolenaar int baz; 36011ab74a5aSBram Moolenaar 36021ab74a5aSBram Moolenaar void func3(void) 36031ab74a5aSBram Moolenaar { 36041ab74a5aSBram Moolenaar int tab[] = { 36051ab74a5aSBram Moolenaar 1, 2, 36061ab74a5aSBram Moolenaar 3, 4, 36071ab74a5aSBram Moolenaar 5, 6}; 36081ab74a5aSBram Moolenaar 36091ab74a5aSBram Moolenaar printf("Don't you dare indent this line incorrectly!\n"); 36101ab74a5aSBram Moolenaar } 36111ab74a5aSBram Moolenaar 36121ab74a5aSBram Moolenaar void 36131ab74a5aSBram Moolenaar func4(a, b, 36141ab74a5aSBram Moolenaar c) 36151ab74a5aSBram Moolenaar int a; 36161ab74a5aSBram Moolenaar int b; 36171ab74a5aSBram Moolenaar int c; 36181ab74a5aSBram Moolenaar { 36191ab74a5aSBram Moolenaar } 36201ab74a5aSBram Moolenaar 36211ab74a5aSBram Moolenaar void 36221ab74a5aSBram Moolenaar func5( 36231ab74a5aSBram Moolenaar int a, 36241ab74a5aSBram Moolenaar int b) 36251ab74a5aSBram Moolenaar { 36261ab74a5aSBram Moolenaar } 36271ab74a5aSBram Moolenaar 36281ab74a5aSBram Moolenaar void 36291ab74a5aSBram Moolenaar func6( 36301ab74a5aSBram Moolenaar int a) 36311ab74a5aSBram Moolenaar { 36321ab74a5aSBram Moolenaar } 36331ab74a5aSBram Moolenaar 36341ab74a5aSBram Moolenaar [CODE] 36351ab74a5aSBram Moolenaar 36361ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 36371ab74a5aSBram Moolenaar enew! | close 36381ab74a5aSBram Moolenaarendfunc 36391ab74a5aSBram Moolenaar 36401ab74a5aSBram Moolenaarfunc Test_cindent_36() 36411ab74a5aSBram Moolenaar new 36421ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 36431ab74a5aSBram Moolenaar setl cino& 36441ab74a5aSBram Moolenaar setl cino+=l1 36451ab74a5aSBram Moolenaar 36461ab74a5aSBram Moolenaar let code =<< trim [CODE] 36471ab74a5aSBram Moolenaar void func(void) 36481ab74a5aSBram Moolenaar { 36491ab74a5aSBram Moolenaar int tab[] = 36501ab74a5aSBram Moolenaar { 36511ab74a5aSBram Moolenaar 1, 2, 3, 36521ab74a5aSBram Moolenaar 4, 5, 6}; 36531ab74a5aSBram Moolenaar 36541ab74a5aSBram Moolenaar printf("Indent this line correctly!\n"); 36551ab74a5aSBram Moolenaar 36561ab74a5aSBram Moolenaar switch (foo) 36571ab74a5aSBram Moolenaar { 36581ab74a5aSBram Moolenaar case bar: 36591ab74a5aSBram Moolenaar printf("bar"); 36601ab74a5aSBram Moolenaar break; 36611ab74a5aSBram Moolenaar case baz: { 36621ab74a5aSBram Moolenaar printf("baz"); 36631ab74a5aSBram Moolenaar break; 36641ab74a5aSBram Moolenaar } 36651ab74a5aSBram Moolenaar case quux: 36661ab74a5aSBram Moolenaar printf("But don't break the indentation of this instruction\n"); 36671ab74a5aSBram Moolenaar break; 36681ab74a5aSBram Moolenaar } 36691ab74a5aSBram Moolenaar } 36701ab74a5aSBram Moolenaar [CODE] 36711ab74a5aSBram Moolenaar 36721ab74a5aSBram Moolenaar call append(0, code) 36731ab74a5aSBram Moolenaar normal gg 36741ab74a5aSBram Moolenaar normal ]]=][ 36751ab74a5aSBram Moolenaar 36761ab74a5aSBram Moolenaar let expected =<< trim [CODE] 36771ab74a5aSBram Moolenaar void func(void) 36781ab74a5aSBram Moolenaar { 36791ab74a5aSBram Moolenaar int tab[] = 36801ab74a5aSBram Moolenaar { 36811ab74a5aSBram Moolenaar 1, 2, 3, 36821ab74a5aSBram Moolenaar 4, 5, 6}; 36831ab74a5aSBram Moolenaar 36841ab74a5aSBram Moolenaar printf("Indent this line correctly!\n"); 36851ab74a5aSBram Moolenaar 36861ab74a5aSBram Moolenaar switch (foo) 36871ab74a5aSBram Moolenaar { 36881ab74a5aSBram Moolenaar case bar: 36891ab74a5aSBram Moolenaar printf("bar"); 36901ab74a5aSBram Moolenaar break; 36911ab74a5aSBram Moolenaar case baz: { 36921ab74a5aSBram Moolenaar printf("baz"); 36931ab74a5aSBram Moolenaar break; 36941ab74a5aSBram Moolenaar } 36951ab74a5aSBram Moolenaar case quux: 36961ab74a5aSBram Moolenaar printf("But don't break the indentation of this instruction\n"); 36971ab74a5aSBram Moolenaar break; 36981ab74a5aSBram Moolenaar } 36991ab74a5aSBram Moolenaar } 37001ab74a5aSBram Moolenaar 37011ab74a5aSBram Moolenaar [CODE] 37021ab74a5aSBram Moolenaar 37031ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 37041ab74a5aSBram Moolenaar enew! | close 37051ab74a5aSBram Moolenaarendfunc 37061ab74a5aSBram Moolenaar 37071ab74a5aSBram Moolenaarfunc Test_cindent_37() 37081ab74a5aSBram Moolenaar new 37091ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 37101ab74a5aSBram Moolenaar setl cino& 37111ab74a5aSBram Moolenaar 37121ab74a5aSBram Moolenaar let code =<< trim [CODE] 37131ab74a5aSBram Moolenaar void func(void) 37141ab74a5aSBram Moolenaar { 37151ab74a5aSBram Moolenaar cout << "a" 37161ab74a5aSBram Moolenaar << "b" 37171ab74a5aSBram Moolenaar << ") :" 37181ab74a5aSBram Moolenaar << "c"; 37191ab74a5aSBram Moolenaar } 37201ab74a5aSBram Moolenaar [CODE] 37211ab74a5aSBram Moolenaar 37221ab74a5aSBram Moolenaar call append(0, code) 37231ab74a5aSBram Moolenaar normal gg 37241ab74a5aSBram Moolenaar normal ]]=][ 37251ab74a5aSBram Moolenaar 37261ab74a5aSBram Moolenaar let expected =<< trim [CODE] 37271ab74a5aSBram Moolenaar void func(void) 37281ab74a5aSBram Moolenaar { 37291ab74a5aSBram Moolenaar cout << "a" 37301ab74a5aSBram Moolenaar << "b" 37311ab74a5aSBram Moolenaar << ") :" 37321ab74a5aSBram Moolenaar << "c"; 37331ab74a5aSBram Moolenaar } 37341ab74a5aSBram Moolenaar 37351ab74a5aSBram Moolenaar [CODE] 37361ab74a5aSBram Moolenaar 37371ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 37381ab74a5aSBram Moolenaar enew! | close 37391ab74a5aSBram Moolenaarendfunc 37401ab74a5aSBram Moolenaar 37411ab74a5aSBram Moolenaarfunc Test_cindent_38() 37421ab74a5aSBram Moolenaar new 37431ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 37441ab74a5aSBram Moolenaar setl com=s1:/*,m:*,ex:*/ 37451ab74a5aSBram Moolenaar 37461ab74a5aSBram Moolenaar let code =<< trim [CODE] 37471ab74a5aSBram Moolenaar void func(void) 37481ab74a5aSBram Moolenaar { 37491ab74a5aSBram Moolenaar /* 37501ab74a5aSBram Moolenaar * This is a comment. 37511ab74a5aSBram Moolenaar */ 37521ab74a5aSBram Moolenaar } 37531ab74a5aSBram Moolenaar [CODE] 37541ab74a5aSBram Moolenaar 37551ab74a5aSBram Moolenaar call append(0, code) 37561ab74a5aSBram Moolenaar normal gg 37571ab74a5aSBram Moolenaar normal ]]3jofoo(); 37581ab74a5aSBram Moolenaar 37591ab74a5aSBram Moolenaar let expected =<< trim [CODE] 37601ab74a5aSBram Moolenaar void func(void) 37611ab74a5aSBram Moolenaar { 37621ab74a5aSBram Moolenaar /* 37631ab74a5aSBram Moolenaar * This is a comment. 37641ab74a5aSBram Moolenaar */ 37651ab74a5aSBram Moolenaar foo(); 37661ab74a5aSBram Moolenaar } 37671ab74a5aSBram Moolenaar 37681ab74a5aSBram Moolenaar [CODE] 37691ab74a5aSBram Moolenaar 37701ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 37711ab74a5aSBram Moolenaar enew! | close 37721ab74a5aSBram Moolenaarendfunc 37731ab74a5aSBram Moolenaar 37741ab74a5aSBram Moolenaarfunc Test_cindent_39() 37751ab74a5aSBram Moolenaar new 37761ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 37771ab74a5aSBram Moolenaar setl cino& 37781ab74a5aSBram Moolenaar 37791ab74a5aSBram Moolenaar let code =<< trim [CODE] 37801ab74a5aSBram Moolenaar void func(void) 37811ab74a5aSBram Moolenaar { 37821ab74a5aSBram Moolenaar for (int i = 0; i < 10; ++i) 37831ab74a5aSBram Moolenaar if (i & 1) { 37841ab74a5aSBram Moolenaar foo(1); 37851ab74a5aSBram Moolenaar } else 37861ab74a5aSBram Moolenaar foo(0); 37871ab74a5aSBram Moolenaar baz(); 37881ab74a5aSBram Moolenaar } 37891ab74a5aSBram Moolenaar [CODE] 37901ab74a5aSBram Moolenaar 37911ab74a5aSBram Moolenaar call append(0, code) 37921ab74a5aSBram Moolenaar normal gg 37931ab74a5aSBram Moolenaar normal ]]=][ 37941ab74a5aSBram Moolenaar 37951ab74a5aSBram Moolenaar let expected =<< trim [CODE] 37961ab74a5aSBram Moolenaar void func(void) 37971ab74a5aSBram Moolenaar { 37981ab74a5aSBram Moolenaar for (int i = 0; i < 10; ++i) 37991ab74a5aSBram Moolenaar if (i & 1) { 38001ab74a5aSBram Moolenaar foo(1); 38011ab74a5aSBram Moolenaar } else 38021ab74a5aSBram Moolenaar foo(0); 38031ab74a5aSBram Moolenaar baz(); 38041ab74a5aSBram Moolenaar } 38051ab74a5aSBram Moolenaar 38061ab74a5aSBram Moolenaar [CODE] 38071ab74a5aSBram Moolenaar 38081ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 38091ab74a5aSBram Moolenaar enew! | close 38101ab74a5aSBram Moolenaarendfunc 38111ab74a5aSBram Moolenaar 38121ab74a5aSBram Moolenaarfunc Test_cindent_40() 38131ab74a5aSBram Moolenaar new 38141ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 38151ab74a5aSBram Moolenaar setl cino=k2s,(0 38161ab74a5aSBram Moolenaar 38171ab74a5aSBram Moolenaar let code =<< trim [CODE] 38181ab74a5aSBram Moolenaar void func(void) 38191ab74a5aSBram Moolenaar { 38201ab74a5aSBram Moolenaar if (condition1 38211ab74a5aSBram Moolenaar && condition2) 38221ab74a5aSBram Moolenaar action(); 38231ab74a5aSBram Moolenaar function(argument1 38241ab74a5aSBram Moolenaar && argument2); 38251ab74a5aSBram Moolenaar 38261ab74a5aSBram Moolenaar if (c1 && (c2 || 38271ab74a5aSBram Moolenaar c3)) 38281ab74a5aSBram Moolenaar foo; 38291ab74a5aSBram Moolenaar if (c1 && 38301ab74a5aSBram Moolenaar (c2 || c3)) 38311ab74a5aSBram Moolenaar { 38321ab74a5aSBram Moolenaar } 38331ab74a5aSBram Moolenaar 38341ab74a5aSBram Moolenaar if ( c1 38351ab74a5aSBram Moolenaar && ( c2 38361ab74a5aSBram Moolenaar || c3)) 38371ab74a5aSBram Moolenaar foo; 38381ab74a5aSBram Moolenaar func( c1 38391ab74a5aSBram Moolenaar && ( c2 38401ab74a5aSBram Moolenaar || c3)) 38411ab74a5aSBram Moolenaar foo; 38421ab74a5aSBram Moolenaar } 38431ab74a5aSBram Moolenaar [CODE] 38441ab74a5aSBram Moolenaar 38451ab74a5aSBram Moolenaar call append(0, code) 38461ab74a5aSBram Moolenaar normal gg 38471ab74a5aSBram Moolenaar normal ]]=][ 38481ab74a5aSBram Moolenaar 38491ab74a5aSBram Moolenaar let expected =<< trim [CODE] 38501ab74a5aSBram Moolenaar void func(void) 38511ab74a5aSBram Moolenaar { 38521ab74a5aSBram Moolenaar if (condition1 38531ab74a5aSBram Moolenaar && condition2) 38541ab74a5aSBram Moolenaar action(); 38551ab74a5aSBram Moolenaar function(argument1 38561ab74a5aSBram Moolenaar && argument2); 38571ab74a5aSBram Moolenaar 38581ab74a5aSBram Moolenaar if (c1 && (c2 || 38591ab74a5aSBram Moolenaar c3)) 38601ab74a5aSBram Moolenaar foo; 38611ab74a5aSBram Moolenaar if (c1 && 38621ab74a5aSBram Moolenaar (c2 || c3)) 38631ab74a5aSBram Moolenaar { 38641ab74a5aSBram Moolenaar } 38651ab74a5aSBram Moolenaar 38661ab74a5aSBram Moolenaar if ( c1 38671ab74a5aSBram Moolenaar && ( c2 38681ab74a5aSBram Moolenaar || c3)) 38691ab74a5aSBram Moolenaar foo; 38701ab74a5aSBram Moolenaar func( c1 38711ab74a5aSBram Moolenaar && ( c2 38721ab74a5aSBram Moolenaar || c3)) 38731ab74a5aSBram Moolenaar foo; 38741ab74a5aSBram Moolenaar } 38751ab74a5aSBram Moolenaar 38761ab74a5aSBram Moolenaar [CODE] 38771ab74a5aSBram Moolenaar 38781ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 38791ab74a5aSBram Moolenaar enew! | close 38801ab74a5aSBram Moolenaarendfunc 38811ab74a5aSBram Moolenaar 38821ab74a5aSBram Moolenaarfunc Test_cindent_41() 38831ab74a5aSBram Moolenaar new 38841ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 38851ab74a5aSBram Moolenaar setl cino=k2s,(s 38861ab74a5aSBram Moolenaar 38871ab74a5aSBram Moolenaar let code =<< trim [CODE] 38881ab74a5aSBram Moolenaar void func(void) 38891ab74a5aSBram Moolenaar { 38901ab74a5aSBram Moolenaar if (condition1 38911ab74a5aSBram Moolenaar && condition2) 38921ab74a5aSBram Moolenaar action(); 38931ab74a5aSBram Moolenaar function(argument1 38941ab74a5aSBram Moolenaar && argument2); 38951ab74a5aSBram Moolenaar 38961ab74a5aSBram Moolenaar if (c1 && (c2 || 38971ab74a5aSBram Moolenaar c3)) 38981ab74a5aSBram Moolenaar foo; 38991ab74a5aSBram Moolenaar if (c1 && 39001ab74a5aSBram Moolenaar (c2 || c3)) 39011ab74a5aSBram Moolenaar { 39021ab74a5aSBram Moolenaar } 39031ab74a5aSBram Moolenaar 39041ab74a5aSBram Moolenaar if ( c1 39051ab74a5aSBram Moolenaar && ( c2 39061ab74a5aSBram Moolenaar || c3)) 39071ab74a5aSBram Moolenaar foo; 39081ab74a5aSBram Moolenaar func( c1 39091ab74a5aSBram Moolenaar && ( c2 39101ab74a5aSBram Moolenaar || c3)) 39111ab74a5aSBram Moolenaar foo; 39121ab74a5aSBram Moolenaar } 39131ab74a5aSBram Moolenaar [CODE] 39141ab74a5aSBram Moolenaar 39151ab74a5aSBram Moolenaar call append(0, code) 39161ab74a5aSBram Moolenaar normal gg 39171ab74a5aSBram Moolenaar normal ]]=][ 39181ab74a5aSBram Moolenaar 39191ab74a5aSBram Moolenaar let expected =<< trim [CODE] 39201ab74a5aSBram Moolenaar void func(void) 39211ab74a5aSBram Moolenaar { 39221ab74a5aSBram Moolenaar if (condition1 39231ab74a5aSBram Moolenaar && condition2) 39241ab74a5aSBram Moolenaar action(); 39251ab74a5aSBram Moolenaar function(argument1 39261ab74a5aSBram Moolenaar && argument2); 39271ab74a5aSBram Moolenaar 39281ab74a5aSBram Moolenaar if (c1 && (c2 || 39291ab74a5aSBram Moolenaar c3)) 39301ab74a5aSBram Moolenaar foo; 39311ab74a5aSBram Moolenaar if (c1 && 39321ab74a5aSBram Moolenaar (c2 || c3)) 39331ab74a5aSBram Moolenaar { 39341ab74a5aSBram Moolenaar } 39351ab74a5aSBram Moolenaar 39361ab74a5aSBram Moolenaar if ( c1 39371ab74a5aSBram Moolenaar && ( c2 39381ab74a5aSBram Moolenaar || c3)) 39391ab74a5aSBram Moolenaar foo; 39401ab74a5aSBram Moolenaar func( c1 39411ab74a5aSBram Moolenaar && ( c2 39421ab74a5aSBram Moolenaar || c3)) 39431ab74a5aSBram Moolenaar foo; 39441ab74a5aSBram Moolenaar } 39451ab74a5aSBram Moolenaar 39461ab74a5aSBram Moolenaar [CODE] 39471ab74a5aSBram Moolenaar 39481ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 39491ab74a5aSBram Moolenaar enew! | close 39501ab74a5aSBram Moolenaarendfunc 39511ab74a5aSBram Moolenaar 39521ab74a5aSBram Moolenaarfunc Test_cindent_42() 39531ab74a5aSBram Moolenaar new 39541ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 39551ab74a5aSBram Moolenaar setl cino=k2s,(s,U1 39561ab74a5aSBram Moolenaar 39571ab74a5aSBram Moolenaar let code =<< trim [CODE] 39581ab74a5aSBram Moolenaar void func(void) 39591ab74a5aSBram Moolenaar { 39601ab74a5aSBram Moolenaar if (condition1 39611ab74a5aSBram Moolenaar && condition2) 39621ab74a5aSBram Moolenaar action(); 39631ab74a5aSBram Moolenaar function(argument1 39641ab74a5aSBram Moolenaar && argument2); 39651ab74a5aSBram Moolenaar 39661ab74a5aSBram Moolenaar if (c1 && (c2 || 39671ab74a5aSBram Moolenaar c3)) 39681ab74a5aSBram Moolenaar foo; 39691ab74a5aSBram Moolenaar if (c1 && 39701ab74a5aSBram Moolenaar (c2 || c3)) 39711ab74a5aSBram Moolenaar { 39721ab74a5aSBram Moolenaar } 39731ab74a5aSBram Moolenaar if (c123456789 39741ab74a5aSBram Moolenaar && (c22345 39751ab74a5aSBram Moolenaar || c3)) 39761ab74a5aSBram Moolenaar printf("foo\n"); 39771ab74a5aSBram Moolenaar 39781ab74a5aSBram Moolenaar c = c1 && 39791ab74a5aSBram Moolenaar ( 39801ab74a5aSBram Moolenaar c2 || 39811ab74a5aSBram Moolenaar c3 39821ab74a5aSBram Moolenaar ) && c4; 39831ab74a5aSBram Moolenaar } 39841ab74a5aSBram Moolenaar [CODE] 39851ab74a5aSBram Moolenaar 39861ab74a5aSBram Moolenaar call append(0, code) 39871ab74a5aSBram Moolenaar normal gg 39881ab74a5aSBram Moolenaar normal ]]=][ 39891ab74a5aSBram Moolenaar 39901ab74a5aSBram Moolenaar let expected =<< trim [CODE] 39911ab74a5aSBram Moolenaar void func(void) 39921ab74a5aSBram Moolenaar { 39931ab74a5aSBram Moolenaar if (condition1 39941ab74a5aSBram Moolenaar && condition2) 39951ab74a5aSBram Moolenaar action(); 39961ab74a5aSBram Moolenaar function(argument1 39971ab74a5aSBram Moolenaar && argument2); 39981ab74a5aSBram Moolenaar 39991ab74a5aSBram Moolenaar if (c1 && (c2 || 40001ab74a5aSBram Moolenaar c3)) 40011ab74a5aSBram Moolenaar foo; 40021ab74a5aSBram Moolenaar if (c1 && 40031ab74a5aSBram Moolenaar (c2 || c3)) 40041ab74a5aSBram Moolenaar { 40051ab74a5aSBram Moolenaar } 40061ab74a5aSBram Moolenaar if (c123456789 40071ab74a5aSBram Moolenaar && (c22345 40081ab74a5aSBram Moolenaar || c3)) 40091ab74a5aSBram Moolenaar printf("foo\n"); 40101ab74a5aSBram Moolenaar 40111ab74a5aSBram Moolenaar c = c1 && 40121ab74a5aSBram Moolenaar ( 40131ab74a5aSBram Moolenaar c2 || 40141ab74a5aSBram Moolenaar c3 40151ab74a5aSBram Moolenaar ) && c4; 40161ab74a5aSBram Moolenaar } 40171ab74a5aSBram Moolenaar 40181ab74a5aSBram Moolenaar [CODE] 40191ab74a5aSBram Moolenaar 40201ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 40211ab74a5aSBram Moolenaar enew! | close 40221ab74a5aSBram Moolenaarendfunc 40231ab74a5aSBram Moolenaar 40241ab74a5aSBram Moolenaarfunc Test_cindent_43() 40251ab74a5aSBram Moolenaar new 40261ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 40271ab74a5aSBram Moolenaar setl cino=k2s,(0,W4 40281ab74a5aSBram Moolenaar 40291ab74a5aSBram Moolenaar let code =<< trim [CODE] 40301ab74a5aSBram Moolenaar void func(void) 40311ab74a5aSBram Moolenaar { 40321ab74a5aSBram Moolenaar if (condition1 40331ab74a5aSBram Moolenaar && condition2) 40341ab74a5aSBram Moolenaar action(); 40351ab74a5aSBram Moolenaar function(argument1 40361ab74a5aSBram Moolenaar && argument2); 40371ab74a5aSBram Moolenaar 40381ab74a5aSBram Moolenaar if (c1 && (c2 || 40391ab74a5aSBram Moolenaar c3)) 40401ab74a5aSBram Moolenaar foo; 40411ab74a5aSBram Moolenaar if (c1 && 40421ab74a5aSBram Moolenaar (c2 || c3)) 40431ab74a5aSBram Moolenaar { 40441ab74a5aSBram Moolenaar } 40451ab74a5aSBram Moolenaar if (c123456789 40461ab74a5aSBram Moolenaar && (c22345 40471ab74a5aSBram Moolenaar || c3)) 40481ab74a5aSBram Moolenaar printf("foo\n"); 40491ab74a5aSBram Moolenaar 40501ab74a5aSBram Moolenaar if ( c1 40511ab74a5aSBram Moolenaar && ( c2 40521ab74a5aSBram Moolenaar || c3)) 40531ab74a5aSBram Moolenaar foo; 40541ab74a5aSBram Moolenaar 40551ab74a5aSBram Moolenaar a_long_line( 40561ab74a5aSBram Moolenaar argument, 40571ab74a5aSBram Moolenaar argument); 40581ab74a5aSBram Moolenaar a_short_line(argument, 40591ab74a5aSBram Moolenaar argument); 40601ab74a5aSBram Moolenaar } 40611ab74a5aSBram Moolenaar [CODE] 40621ab74a5aSBram Moolenaar 40631ab74a5aSBram Moolenaar call append(0, code) 40641ab74a5aSBram Moolenaar normal gg 40651ab74a5aSBram Moolenaar normal ]]=][ 40661ab74a5aSBram Moolenaar 40671ab74a5aSBram Moolenaar let expected =<< trim [CODE] 40681ab74a5aSBram Moolenaar void func(void) 40691ab74a5aSBram Moolenaar { 40701ab74a5aSBram Moolenaar if (condition1 40711ab74a5aSBram Moolenaar && condition2) 40721ab74a5aSBram Moolenaar action(); 40731ab74a5aSBram Moolenaar function(argument1 40741ab74a5aSBram Moolenaar && argument2); 40751ab74a5aSBram Moolenaar 40761ab74a5aSBram Moolenaar if (c1 && (c2 || 40771ab74a5aSBram Moolenaar c3)) 40781ab74a5aSBram Moolenaar foo; 40791ab74a5aSBram Moolenaar if (c1 && 40801ab74a5aSBram Moolenaar (c2 || c3)) 40811ab74a5aSBram Moolenaar { 40821ab74a5aSBram Moolenaar } 40831ab74a5aSBram Moolenaar if (c123456789 40841ab74a5aSBram Moolenaar && (c22345 40851ab74a5aSBram Moolenaar || c3)) 40861ab74a5aSBram Moolenaar printf("foo\n"); 40871ab74a5aSBram Moolenaar 40881ab74a5aSBram Moolenaar if ( c1 40891ab74a5aSBram Moolenaar && ( c2 40901ab74a5aSBram Moolenaar || c3)) 40911ab74a5aSBram Moolenaar foo; 40921ab74a5aSBram Moolenaar 40931ab74a5aSBram Moolenaar a_long_line( 40941ab74a5aSBram Moolenaar argument, 40951ab74a5aSBram Moolenaar argument); 40961ab74a5aSBram Moolenaar a_short_line(argument, 40971ab74a5aSBram Moolenaar argument); 40981ab74a5aSBram Moolenaar } 40991ab74a5aSBram Moolenaar 41001ab74a5aSBram Moolenaar [CODE] 41011ab74a5aSBram Moolenaar 41021ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 41031ab74a5aSBram Moolenaar enew! | close 41041ab74a5aSBram Moolenaarendfunc 41051ab74a5aSBram Moolenaar 41061ab74a5aSBram Moolenaarfunc Test_cindent_44() 41071ab74a5aSBram Moolenaar new 41081ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 41091ab74a5aSBram Moolenaar setl cino=k2s,u2 41101ab74a5aSBram Moolenaar 41111ab74a5aSBram Moolenaar let code =<< trim [CODE] 41121ab74a5aSBram Moolenaar void func(void) 41131ab74a5aSBram Moolenaar { 41141ab74a5aSBram Moolenaar if (condition1 41151ab74a5aSBram Moolenaar && condition2) 41161ab74a5aSBram Moolenaar action(); 41171ab74a5aSBram Moolenaar function(argument1 41181ab74a5aSBram Moolenaar && argument2); 41191ab74a5aSBram Moolenaar 41201ab74a5aSBram Moolenaar if (c1 && (c2 || 41211ab74a5aSBram Moolenaar c3)) 41221ab74a5aSBram Moolenaar foo; 41231ab74a5aSBram Moolenaar if (c1 && 41241ab74a5aSBram Moolenaar (c2 || c3)) 41251ab74a5aSBram Moolenaar { 41261ab74a5aSBram Moolenaar } 41271ab74a5aSBram Moolenaar if (c123456789 41281ab74a5aSBram Moolenaar && (c22345 41291ab74a5aSBram Moolenaar || c3)) 41301ab74a5aSBram Moolenaar printf("foo\n"); 41311ab74a5aSBram Moolenaar } 41321ab74a5aSBram Moolenaar [CODE] 41331ab74a5aSBram Moolenaar 41341ab74a5aSBram Moolenaar call append(0, code) 41351ab74a5aSBram Moolenaar normal gg 41361ab74a5aSBram Moolenaar normal ]]=][ 41371ab74a5aSBram Moolenaar 41381ab74a5aSBram Moolenaar let expected =<< trim [CODE] 41391ab74a5aSBram Moolenaar void func(void) 41401ab74a5aSBram Moolenaar { 41411ab74a5aSBram Moolenaar if (condition1 41421ab74a5aSBram Moolenaar && condition2) 41431ab74a5aSBram Moolenaar action(); 41441ab74a5aSBram Moolenaar function(argument1 41451ab74a5aSBram Moolenaar && argument2); 41461ab74a5aSBram Moolenaar 41471ab74a5aSBram Moolenaar if (c1 && (c2 || 41481ab74a5aSBram Moolenaar c3)) 41491ab74a5aSBram Moolenaar foo; 41501ab74a5aSBram Moolenaar if (c1 && 41511ab74a5aSBram Moolenaar (c2 || c3)) 41521ab74a5aSBram Moolenaar { 41531ab74a5aSBram Moolenaar } 41541ab74a5aSBram Moolenaar if (c123456789 41551ab74a5aSBram Moolenaar && (c22345 41561ab74a5aSBram Moolenaar || c3)) 41571ab74a5aSBram Moolenaar printf("foo\n"); 41581ab74a5aSBram Moolenaar } 41591ab74a5aSBram Moolenaar 41601ab74a5aSBram Moolenaar [CODE] 41611ab74a5aSBram Moolenaar 41621ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 41631ab74a5aSBram Moolenaar enew! | close 41641ab74a5aSBram Moolenaarendfunc 41651ab74a5aSBram Moolenaar 41661ab74a5aSBram Moolenaarfunc Test_cindent_45() 41671ab74a5aSBram Moolenaar new 41681ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 41691ab74a5aSBram Moolenaar setl cino=k2s,(0,w1 41701ab74a5aSBram Moolenaar 41711ab74a5aSBram Moolenaar let code =<< trim [CODE] 41721ab74a5aSBram Moolenaar void func(void) 41731ab74a5aSBram Moolenaar { 41741ab74a5aSBram Moolenaar if (condition1 41751ab74a5aSBram Moolenaar && condition2) 41761ab74a5aSBram Moolenaar action(); 41771ab74a5aSBram Moolenaar function(argument1 41781ab74a5aSBram Moolenaar && argument2); 41791ab74a5aSBram Moolenaar 41801ab74a5aSBram Moolenaar if (c1 && (c2 || 41811ab74a5aSBram Moolenaar c3)) 41821ab74a5aSBram Moolenaar foo; 41831ab74a5aSBram Moolenaar if (c1 && 41841ab74a5aSBram Moolenaar (c2 || c3)) 41851ab74a5aSBram Moolenaar { 41861ab74a5aSBram Moolenaar } 41871ab74a5aSBram Moolenaar if (c123456789 41881ab74a5aSBram Moolenaar && (c22345 41891ab74a5aSBram Moolenaar || c3)) 41901ab74a5aSBram Moolenaar printf("foo\n"); 41911ab74a5aSBram Moolenaar 41921ab74a5aSBram Moolenaar if ( c1 41931ab74a5aSBram Moolenaar && ( c2 41941ab74a5aSBram Moolenaar || c3)) 41951ab74a5aSBram Moolenaar foo; 41961ab74a5aSBram Moolenaar func( c1 41971ab74a5aSBram Moolenaar && ( c2 41981ab74a5aSBram Moolenaar || c3)) 41991ab74a5aSBram Moolenaar foo; 42001ab74a5aSBram Moolenaar } 42011ab74a5aSBram Moolenaar [CODE] 42021ab74a5aSBram Moolenaar 42031ab74a5aSBram Moolenaar call append(0, code) 42041ab74a5aSBram Moolenaar normal gg 42051ab74a5aSBram Moolenaar normal ]]=][ 42061ab74a5aSBram Moolenaar 42071ab74a5aSBram Moolenaar let expected =<< trim [CODE] 42081ab74a5aSBram Moolenaar void func(void) 42091ab74a5aSBram Moolenaar { 42101ab74a5aSBram Moolenaar if (condition1 42111ab74a5aSBram Moolenaar && condition2) 42121ab74a5aSBram Moolenaar action(); 42131ab74a5aSBram Moolenaar function(argument1 42141ab74a5aSBram Moolenaar && argument2); 42151ab74a5aSBram Moolenaar 42161ab74a5aSBram Moolenaar if (c1 && (c2 || 42171ab74a5aSBram Moolenaar c3)) 42181ab74a5aSBram Moolenaar foo; 42191ab74a5aSBram Moolenaar if (c1 && 42201ab74a5aSBram Moolenaar (c2 || c3)) 42211ab74a5aSBram Moolenaar { 42221ab74a5aSBram Moolenaar } 42231ab74a5aSBram Moolenaar if (c123456789 42241ab74a5aSBram Moolenaar && (c22345 42251ab74a5aSBram Moolenaar || c3)) 42261ab74a5aSBram Moolenaar printf("foo\n"); 42271ab74a5aSBram Moolenaar 42281ab74a5aSBram Moolenaar if ( c1 42291ab74a5aSBram Moolenaar && ( c2 42301ab74a5aSBram Moolenaar || c3)) 42311ab74a5aSBram Moolenaar foo; 42321ab74a5aSBram Moolenaar func( c1 42331ab74a5aSBram Moolenaar && ( c2 42341ab74a5aSBram Moolenaar || c3)) 42351ab74a5aSBram Moolenaar foo; 42361ab74a5aSBram Moolenaar } 42371ab74a5aSBram Moolenaar 42381ab74a5aSBram Moolenaar [CODE] 42391ab74a5aSBram Moolenaar 42401ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 42411ab74a5aSBram Moolenaar enew! | close 42421ab74a5aSBram Moolenaarendfunc 42431ab74a5aSBram Moolenaar 42441ab74a5aSBram Moolenaarfunc Test_cindent_46() 42451ab74a5aSBram Moolenaar new 42461ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 42471ab74a5aSBram Moolenaar setl cino=k2,(s 42481ab74a5aSBram Moolenaar 42491ab74a5aSBram Moolenaar let code =<< trim [CODE] 42501ab74a5aSBram Moolenaar void func(void) 42511ab74a5aSBram Moolenaar { 42521ab74a5aSBram Moolenaar if (condition1 42531ab74a5aSBram Moolenaar && condition2) 42541ab74a5aSBram Moolenaar action(); 42551ab74a5aSBram Moolenaar function(argument1 42561ab74a5aSBram Moolenaar && argument2); 42571ab74a5aSBram Moolenaar 42581ab74a5aSBram Moolenaar if (c1 && (c2 || 42591ab74a5aSBram Moolenaar c3)) 42601ab74a5aSBram Moolenaar foo; 42611ab74a5aSBram Moolenaar if (c1 && 42621ab74a5aSBram Moolenaar (c2 || c3)) 42631ab74a5aSBram Moolenaar { 42641ab74a5aSBram Moolenaar } 42651ab74a5aSBram Moolenaar } 42661ab74a5aSBram Moolenaar [CODE] 42671ab74a5aSBram Moolenaar 42681ab74a5aSBram Moolenaar call append(0, code) 42691ab74a5aSBram Moolenaar normal gg 42701ab74a5aSBram Moolenaar normal ]]=][ 42711ab74a5aSBram Moolenaar 42721ab74a5aSBram Moolenaar let expected =<< trim [CODE] 42731ab74a5aSBram Moolenaar void func(void) 42741ab74a5aSBram Moolenaar { 42751ab74a5aSBram Moolenaar if (condition1 42761ab74a5aSBram Moolenaar && condition2) 42771ab74a5aSBram Moolenaar action(); 42781ab74a5aSBram Moolenaar function(argument1 42791ab74a5aSBram Moolenaar && argument2); 42801ab74a5aSBram Moolenaar 42811ab74a5aSBram Moolenaar if (c1 && (c2 || 42821ab74a5aSBram Moolenaar c3)) 42831ab74a5aSBram Moolenaar foo; 42841ab74a5aSBram Moolenaar if (c1 && 42851ab74a5aSBram Moolenaar (c2 || c3)) 42861ab74a5aSBram Moolenaar { 42871ab74a5aSBram Moolenaar } 42881ab74a5aSBram Moolenaar } 42891ab74a5aSBram Moolenaar 42901ab74a5aSBram Moolenaar [CODE] 42911ab74a5aSBram Moolenaar 42921ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 42931ab74a5aSBram Moolenaar enew! | close 42941ab74a5aSBram Moolenaarendfunc 42951ab74a5aSBram Moolenaar 42961ab74a5aSBram Moolenaarfunc Test_cindent_47() 42971ab74a5aSBram Moolenaar new 42981ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 42991ab74a5aSBram Moolenaar setl cino=N-s 43001ab74a5aSBram Moolenaar 43011ab74a5aSBram Moolenaar let code =<< trim [CODE] 43021ab74a5aSBram Moolenaar NAMESPACESTART 43031ab74a5aSBram Moolenaar /* valid namespaces with normal indent */ 43041ab74a5aSBram Moolenaar namespace 43051ab74a5aSBram Moolenaar { 43061ab74a5aSBram Moolenaar { 43071ab74a5aSBram Moolenaar 111111111111; 43081ab74a5aSBram Moolenaar } 43091ab74a5aSBram Moolenaar } 43101ab74a5aSBram Moolenaar namespace /* test */ 43111ab74a5aSBram Moolenaar { 43121ab74a5aSBram Moolenaar 11111111111111111; 43131ab74a5aSBram Moolenaar } 43141ab74a5aSBram Moolenaar namespace // test 43151ab74a5aSBram Moolenaar { 43161ab74a5aSBram Moolenaar 111111111111111111; 43171ab74a5aSBram Moolenaar } 43181ab74a5aSBram Moolenaar namespace 43191ab74a5aSBram Moolenaar { 43201ab74a5aSBram Moolenaar 111111111111111111; 43211ab74a5aSBram Moolenaar } 43221ab74a5aSBram Moolenaar namespace test 43231ab74a5aSBram Moolenaar { 43241ab74a5aSBram Moolenaar 111111111111111111; 43251ab74a5aSBram Moolenaar } 43261ab74a5aSBram Moolenaar namespace test::cpp17 43271ab74a5aSBram Moolenaar { 43281ab74a5aSBram Moolenaar 111111111111111111; 43291ab74a5aSBram Moolenaar } 43301ab74a5aSBram Moolenaar namespace ::incorrectcpp17 43311ab74a5aSBram Moolenaar { 43321ab74a5aSBram Moolenaar 111111111111111111; 43331ab74a5aSBram Moolenaar } 43341ab74a5aSBram Moolenaar namespace test::incorrectcpp17:: 43351ab74a5aSBram Moolenaar { 43361ab74a5aSBram Moolenaar 111111111111111111; 43371ab74a5aSBram Moolenaar } 43381ab74a5aSBram Moolenaar namespace test:incorrectcpp17 43391ab74a5aSBram Moolenaar { 43401ab74a5aSBram Moolenaar 111111111111111111; 43411ab74a5aSBram Moolenaar } 43421ab74a5aSBram Moolenaar namespace test:::incorrectcpp17 43431ab74a5aSBram Moolenaar { 43441ab74a5aSBram Moolenaar 111111111111111111; 43451ab74a5aSBram Moolenaar } 43461ab74a5aSBram Moolenaar namespace{ 43471ab74a5aSBram Moolenaar 111111111111111111; 43481ab74a5aSBram Moolenaar } 43491ab74a5aSBram Moolenaar namespace test{ 43501ab74a5aSBram Moolenaar 111111111111111111; 43511ab74a5aSBram Moolenaar } 43521ab74a5aSBram Moolenaar namespace { 43531ab74a5aSBram Moolenaar 111111111111111111; 43541ab74a5aSBram Moolenaar } 43551ab74a5aSBram Moolenaar namespace test { 43561ab74a5aSBram Moolenaar 111111111111111111; 43571ab74a5aSBram Moolenaar namespace test2 { 43581ab74a5aSBram Moolenaar 22222222222222222; 43591ab74a5aSBram Moolenaar } 43601ab74a5aSBram Moolenaar } 43611ab74a5aSBram Moolenaar 43621ab74a5aSBram Moolenaar /* invalid namespaces use block indent */ 43631ab74a5aSBram Moolenaar namespace test test2 { 43641ab74a5aSBram Moolenaar 111111111111111111111; 43651ab74a5aSBram Moolenaar } 43661ab74a5aSBram Moolenaar namespace11111111111 { 43671ab74a5aSBram Moolenaar 111111111111; 43681ab74a5aSBram Moolenaar } 43691ab74a5aSBram Moolenaar namespace() { 43701ab74a5aSBram Moolenaar 1111111111111; 43711ab74a5aSBram Moolenaar } 43721ab74a5aSBram Moolenaar namespace() 43731ab74a5aSBram Moolenaar { 43741ab74a5aSBram Moolenaar 111111111111111111; 43751ab74a5aSBram Moolenaar } 43761ab74a5aSBram Moolenaar namespace test test2 43771ab74a5aSBram Moolenaar { 43781ab74a5aSBram Moolenaar 1111111111111111111; 43791ab74a5aSBram Moolenaar } 43801ab74a5aSBram Moolenaar namespace111111111 43811ab74a5aSBram Moolenaar { 43821ab74a5aSBram Moolenaar 111111111111111111; 43831ab74a5aSBram Moolenaar } 43841ab74a5aSBram Moolenaar NAMESPACEEND 43851ab74a5aSBram Moolenaar [CODE] 43861ab74a5aSBram Moolenaar 43871ab74a5aSBram Moolenaar call append(0, code) 43881ab74a5aSBram Moolenaar normal gg 43891ab74a5aSBram Moolenaar call search('^NAMESPACESTART') 43901ab74a5aSBram Moolenaar exe "normal =/^NAMESPACEEND\n" 43911ab74a5aSBram Moolenaar 43921ab74a5aSBram Moolenaar let expected =<< trim [CODE] 43931ab74a5aSBram Moolenaar NAMESPACESTART 43941ab74a5aSBram Moolenaar /* valid namespaces with normal indent */ 43951ab74a5aSBram Moolenaar namespace 43961ab74a5aSBram Moolenaar { 43971ab74a5aSBram Moolenaar { 43981ab74a5aSBram Moolenaar 111111111111; 43991ab74a5aSBram Moolenaar } 44001ab74a5aSBram Moolenaar } 44011ab74a5aSBram Moolenaar namespace /* test */ 44021ab74a5aSBram Moolenaar { 44031ab74a5aSBram Moolenaar 11111111111111111; 44041ab74a5aSBram Moolenaar } 44051ab74a5aSBram Moolenaar namespace // test 44061ab74a5aSBram Moolenaar { 44071ab74a5aSBram Moolenaar 111111111111111111; 44081ab74a5aSBram Moolenaar } 44091ab74a5aSBram Moolenaar namespace 44101ab74a5aSBram Moolenaar { 44111ab74a5aSBram Moolenaar 111111111111111111; 44121ab74a5aSBram Moolenaar } 44131ab74a5aSBram Moolenaar namespace test 44141ab74a5aSBram Moolenaar { 44151ab74a5aSBram Moolenaar 111111111111111111; 44161ab74a5aSBram Moolenaar } 44171ab74a5aSBram Moolenaar namespace test::cpp17 44181ab74a5aSBram Moolenaar { 44191ab74a5aSBram Moolenaar 111111111111111111; 44201ab74a5aSBram Moolenaar } 44211ab74a5aSBram Moolenaar namespace ::incorrectcpp17 44221ab74a5aSBram Moolenaar { 44231ab74a5aSBram Moolenaar 111111111111111111; 44241ab74a5aSBram Moolenaar } 44251ab74a5aSBram Moolenaar namespace test::incorrectcpp17:: 44261ab74a5aSBram Moolenaar { 44271ab74a5aSBram Moolenaar 111111111111111111; 44281ab74a5aSBram Moolenaar } 44291ab74a5aSBram Moolenaar namespace test:incorrectcpp17 44301ab74a5aSBram Moolenaar { 44311ab74a5aSBram Moolenaar 111111111111111111; 44321ab74a5aSBram Moolenaar } 44331ab74a5aSBram Moolenaar namespace test:::incorrectcpp17 44341ab74a5aSBram Moolenaar { 44351ab74a5aSBram Moolenaar 111111111111111111; 44361ab74a5aSBram Moolenaar } 44371ab74a5aSBram Moolenaar namespace{ 44381ab74a5aSBram Moolenaar 111111111111111111; 44391ab74a5aSBram Moolenaar } 44401ab74a5aSBram Moolenaar namespace test{ 44411ab74a5aSBram Moolenaar 111111111111111111; 44421ab74a5aSBram Moolenaar } 44431ab74a5aSBram Moolenaar namespace { 44441ab74a5aSBram Moolenaar 111111111111111111; 44451ab74a5aSBram Moolenaar } 44461ab74a5aSBram Moolenaar namespace test { 44471ab74a5aSBram Moolenaar 111111111111111111; 44481ab74a5aSBram Moolenaar namespace test2 { 44491ab74a5aSBram Moolenaar 22222222222222222; 44501ab74a5aSBram Moolenaar } 44511ab74a5aSBram Moolenaar } 44521ab74a5aSBram Moolenaar 44531ab74a5aSBram Moolenaar /* invalid namespaces use block indent */ 44541ab74a5aSBram Moolenaar namespace test test2 { 44551ab74a5aSBram Moolenaar 111111111111111111111; 44561ab74a5aSBram Moolenaar } 44571ab74a5aSBram Moolenaar namespace11111111111 { 44581ab74a5aSBram Moolenaar 111111111111; 44591ab74a5aSBram Moolenaar } 44601ab74a5aSBram Moolenaar namespace() { 44611ab74a5aSBram Moolenaar 1111111111111; 44621ab74a5aSBram Moolenaar } 44631ab74a5aSBram Moolenaar namespace() 44641ab74a5aSBram Moolenaar { 44651ab74a5aSBram Moolenaar 111111111111111111; 44661ab74a5aSBram Moolenaar } 44671ab74a5aSBram Moolenaar namespace test test2 44681ab74a5aSBram Moolenaar { 44691ab74a5aSBram Moolenaar 1111111111111111111; 44701ab74a5aSBram Moolenaar } 44711ab74a5aSBram Moolenaar namespace111111111 44721ab74a5aSBram Moolenaar { 44731ab74a5aSBram Moolenaar 111111111111111111; 44741ab74a5aSBram Moolenaar } 44751ab74a5aSBram Moolenaar NAMESPACEEND 44761ab74a5aSBram Moolenaar 44771ab74a5aSBram Moolenaar [CODE] 44781ab74a5aSBram Moolenaar 44791ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 44801ab74a5aSBram Moolenaar enew! | close 44811ab74a5aSBram Moolenaarendfunc 44821ab74a5aSBram Moolenaar 44831ab74a5aSBram Moolenaarfunc Test_cindent_48() 44841ab74a5aSBram Moolenaar new 44851ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 44861ab74a5aSBram Moolenaar setl cino=j1,J1 44871ab74a5aSBram Moolenaar 44881ab74a5aSBram Moolenaar let code =<< trim [CODE] 44891ab74a5aSBram Moolenaar JSSTART 44901ab74a5aSBram Moolenaar var bar = { 44911ab74a5aSBram Moolenaar foo: { 44921ab74a5aSBram Moolenaar that: this, 44931ab74a5aSBram Moolenaar some: ok, 44941ab74a5aSBram Moolenaar }, 44951ab74a5aSBram Moolenaar "bar":{ 44961ab74a5aSBram Moolenaar a : 2, 44971ab74a5aSBram Moolenaar b: "123abc", 44981ab74a5aSBram Moolenaar x: 4, 44991ab74a5aSBram Moolenaar "y": 5 45001ab74a5aSBram Moolenaar } 45011ab74a5aSBram Moolenaar } 45021ab74a5aSBram Moolenaar JSEND 45031ab74a5aSBram Moolenaar [CODE] 45041ab74a5aSBram Moolenaar 45051ab74a5aSBram Moolenaar call append(0, code) 45061ab74a5aSBram Moolenaar normal gg 45071ab74a5aSBram Moolenaar call search('^JSSTART') 45081ab74a5aSBram Moolenaar exe "normal =/^JSEND\n" 45091ab74a5aSBram Moolenaar 45101ab74a5aSBram Moolenaar let expected =<< trim [CODE] 45111ab74a5aSBram Moolenaar JSSTART 45121ab74a5aSBram Moolenaar var bar = { 45131ab74a5aSBram Moolenaar foo: { 45141ab74a5aSBram Moolenaar that: this, 45151ab74a5aSBram Moolenaar some: ok, 45161ab74a5aSBram Moolenaar }, 45171ab74a5aSBram Moolenaar "bar":{ 45181ab74a5aSBram Moolenaar a : 2, 45191ab74a5aSBram Moolenaar b: "123abc", 45201ab74a5aSBram Moolenaar x: 4, 45211ab74a5aSBram Moolenaar "y": 5 45221ab74a5aSBram Moolenaar } 45231ab74a5aSBram Moolenaar } 45241ab74a5aSBram Moolenaar JSEND 45251ab74a5aSBram Moolenaar 45261ab74a5aSBram Moolenaar [CODE] 45271ab74a5aSBram Moolenaar 45281ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 45291ab74a5aSBram Moolenaar enew! | close 45301ab74a5aSBram Moolenaarendfunc 45311ab74a5aSBram Moolenaar 45321ab74a5aSBram Moolenaarfunc Test_cindent_49() 45331ab74a5aSBram Moolenaar new 45341ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 45351ab74a5aSBram Moolenaar setl cino=j1,J1 45361ab74a5aSBram Moolenaar 45371ab74a5aSBram Moolenaar let code =<< trim [CODE] 45381ab74a5aSBram Moolenaar JSSTART 45391ab74a5aSBram Moolenaar var foo = [ 45401ab74a5aSBram Moolenaar 1, 45411ab74a5aSBram Moolenaar 2, 45421ab74a5aSBram Moolenaar 3 45431ab74a5aSBram Moolenaar ]; 45441ab74a5aSBram Moolenaar JSEND 45451ab74a5aSBram Moolenaar [CODE] 45461ab74a5aSBram Moolenaar 45471ab74a5aSBram Moolenaar call append(0, code) 45481ab74a5aSBram Moolenaar normal gg 45491ab74a5aSBram Moolenaar call search('^JSSTART') 45501ab74a5aSBram Moolenaar exe "normal =/^JSEND\n" 45511ab74a5aSBram Moolenaar 45521ab74a5aSBram Moolenaar let expected =<< trim [CODE] 45531ab74a5aSBram Moolenaar JSSTART 45541ab74a5aSBram Moolenaar var foo = [ 45551ab74a5aSBram Moolenaar 1, 45561ab74a5aSBram Moolenaar 2, 45571ab74a5aSBram Moolenaar 3 45581ab74a5aSBram Moolenaar ]; 45591ab74a5aSBram Moolenaar JSEND 45601ab74a5aSBram Moolenaar 45611ab74a5aSBram Moolenaar [CODE] 45621ab74a5aSBram Moolenaar 45631ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 45641ab74a5aSBram Moolenaar enew! | close 45651ab74a5aSBram Moolenaarendfunc 45661ab74a5aSBram Moolenaar 45671ab74a5aSBram Moolenaarfunc Test_cindent_50() 45681ab74a5aSBram Moolenaar new 45691ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 45701ab74a5aSBram Moolenaar setl cino=j1,J1 45711ab74a5aSBram Moolenaar 45721ab74a5aSBram Moolenaar let code =<< trim [CODE] 45731ab74a5aSBram Moolenaar JSSTART 45741ab74a5aSBram Moolenaar function bar() { 45751ab74a5aSBram Moolenaar var foo = [ 45761ab74a5aSBram Moolenaar 1, 45771ab74a5aSBram Moolenaar 2, 45781ab74a5aSBram Moolenaar 3 45791ab74a5aSBram Moolenaar ]; 45801ab74a5aSBram Moolenaar } 45811ab74a5aSBram Moolenaar JSEND 45821ab74a5aSBram Moolenaar [CODE] 45831ab74a5aSBram Moolenaar 45841ab74a5aSBram Moolenaar call append(0, code) 45851ab74a5aSBram Moolenaar normal gg 45861ab74a5aSBram Moolenaar call search('^JSSTART') 45871ab74a5aSBram Moolenaar exe "normal =/^JSEND\n" 45881ab74a5aSBram Moolenaar 45891ab74a5aSBram Moolenaar let expected =<< trim [CODE] 45901ab74a5aSBram Moolenaar JSSTART 45911ab74a5aSBram Moolenaar function bar() { 45921ab74a5aSBram Moolenaar var foo = [ 45931ab74a5aSBram Moolenaar 1, 45941ab74a5aSBram Moolenaar 2, 45951ab74a5aSBram Moolenaar 3 45961ab74a5aSBram Moolenaar ]; 45971ab74a5aSBram Moolenaar } 45981ab74a5aSBram Moolenaar JSEND 45991ab74a5aSBram Moolenaar 46001ab74a5aSBram Moolenaar [CODE] 46011ab74a5aSBram Moolenaar 46021ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 46031ab74a5aSBram Moolenaar enew! | close 46041ab74a5aSBram Moolenaarendfunc 46051ab74a5aSBram Moolenaar 46061ab74a5aSBram Moolenaarfunc Test_cindent_51() 46071ab74a5aSBram Moolenaar new 46081ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 46091ab74a5aSBram Moolenaar setl cino=j1,J1 46101ab74a5aSBram Moolenaar 46111ab74a5aSBram Moolenaar let code =<< trim [CODE] 46121ab74a5aSBram Moolenaar JSSTART 46131ab74a5aSBram Moolenaar (function($){ 46141ab74a5aSBram Moolenaar 46151ab74a5aSBram Moolenaar if (cond && 46161ab74a5aSBram Moolenaar cond) { 46171ab74a5aSBram Moolenaar stmt; 46181ab74a5aSBram Moolenaar } 46191ab74a5aSBram Moolenaar window.something.left = 46201ab74a5aSBram Moolenaar (width - 50 + offset) + "px"; 46211ab74a5aSBram Moolenaar var class_name='myclass'; 46221ab74a5aSBram Moolenaar 46231ab74a5aSBram Moolenaar function private_method() { 46241ab74a5aSBram Moolenaar } 46251ab74a5aSBram Moolenaar 46261ab74a5aSBram Moolenaar var public_method={ 46271ab74a5aSBram Moolenaar method: function(options,args){ 46281ab74a5aSBram Moolenaar private_method(); 46291ab74a5aSBram Moolenaar } 46301ab74a5aSBram Moolenaar } 46311ab74a5aSBram Moolenaar 46321ab74a5aSBram Moolenaar function init(options) { 46331ab74a5aSBram Moolenaar 46341ab74a5aSBram Moolenaar $(this).data(class_name+'_public',$.extend({},{ 46351ab74a5aSBram Moolenaar foo: 'bar', 46361ab74a5aSBram Moolenaar bar: 2, 46371ab74a5aSBram Moolenaar foobar: [ 46381ab74a5aSBram Moolenaar 1, 46391ab74a5aSBram Moolenaar 2, 46401ab74a5aSBram Moolenaar 3 46411ab74a5aSBram Moolenaar ], 46421ab74a5aSBram Moolenaar callback: function(){ 46431ab74a5aSBram Moolenaar return true; 46441ab74a5aSBram Moolenaar } 46451ab74a5aSBram Moolenaar }, options||{})); 46461ab74a5aSBram Moolenaar } 46471ab74a5aSBram Moolenaar 46481ab74a5aSBram Moolenaar $.fn[class_name]=function() { 46491ab74a5aSBram Moolenaar 46501ab74a5aSBram Moolenaar var _arguments=arguments; 46511ab74a5aSBram Moolenaar return this.each(function(){ 46521ab74a5aSBram Moolenaar 46531ab74a5aSBram Moolenaar var options=$(this).data(class_name+'_public'); 46541ab74a5aSBram Moolenaar if (!options) { 46551ab74a5aSBram Moolenaar init.apply(this,_arguments); 46561ab74a5aSBram Moolenaar 46571ab74a5aSBram Moolenaar } else { 46581ab74a5aSBram Moolenaar var method=public_method[_arguments[0]]; 46591ab74a5aSBram Moolenaar 46601ab74a5aSBram Moolenaar if (typeof(method)!='function') { 46611ab74a5aSBram Moolenaar console.log(class_name+' has no method "'+_arguments[0]+'"'); 46621ab74a5aSBram Moolenaar return false; 46631ab74a5aSBram Moolenaar } 46641ab74a5aSBram Moolenaar _arguments[0]=options; 46651ab74a5aSBram Moolenaar method.apply(this,_arguments); 46661ab74a5aSBram Moolenaar } 46671ab74a5aSBram Moolenaar }); 46681ab74a5aSBram Moolenaar } 46691ab74a5aSBram Moolenaar 46701ab74a5aSBram Moolenaar })(jQuery); 46711ab74a5aSBram Moolenaar JSEND 46721ab74a5aSBram Moolenaar [CODE] 46731ab74a5aSBram Moolenaar 46741ab74a5aSBram Moolenaar call append(0, code) 46751ab74a5aSBram Moolenaar normal gg 46761ab74a5aSBram Moolenaar call search('^JSSTART') 46771ab74a5aSBram Moolenaar exe "normal =/^JSEND\n" 46781ab74a5aSBram Moolenaar 46791ab74a5aSBram Moolenaar let expected =<< trim [CODE] 46801ab74a5aSBram Moolenaar JSSTART 46811ab74a5aSBram Moolenaar (function($){ 46821ab74a5aSBram Moolenaar 46831ab74a5aSBram Moolenaar if (cond && 46841ab74a5aSBram Moolenaar cond) { 46851ab74a5aSBram Moolenaar stmt; 46861ab74a5aSBram Moolenaar } 46871ab74a5aSBram Moolenaar window.something.left = 46881ab74a5aSBram Moolenaar (width - 50 + offset) + "px"; 46891ab74a5aSBram Moolenaar var class_name='myclass'; 46901ab74a5aSBram Moolenaar 46911ab74a5aSBram Moolenaar function private_method() { 46921ab74a5aSBram Moolenaar } 46931ab74a5aSBram Moolenaar 46941ab74a5aSBram Moolenaar var public_method={ 46951ab74a5aSBram Moolenaar method: function(options,args){ 46961ab74a5aSBram Moolenaar private_method(); 46971ab74a5aSBram Moolenaar } 46981ab74a5aSBram Moolenaar } 46991ab74a5aSBram Moolenaar 47001ab74a5aSBram Moolenaar function init(options) { 47011ab74a5aSBram Moolenaar 47021ab74a5aSBram Moolenaar $(this).data(class_name+'_public',$.extend({},{ 47031ab74a5aSBram Moolenaar foo: 'bar', 47041ab74a5aSBram Moolenaar bar: 2, 47051ab74a5aSBram Moolenaar foobar: [ 47061ab74a5aSBram Moolenaar 1, 47071ab74a5aSBram Moolenaar 2, 47081ab74a5aSBram Moolenaar 3 47091ab74a5aSBram Moolenaar ], 47101ab74a5aSBram Moolenaar callback: function(){ 47111ab74a5aSBram Moolenaar return true; 47121ab74a5aSBram Moolenaar } 47131ab74a5aSBram Moolenaar }, options||{})); 47141ab74a5aSBram Moolenaar } 47151ab74a5aSBram Moolenaar 47161ab74a5aSBram Moolenaar $.fn[class_name]=function() { 47171ab74a5aSBram Moolenaar 47181ab74a5aSBram Moolenaar var _arguments=arguments; 47191ab74a5aSBram Moolenaar return this.each(function(){ 47201ab74a5aSBram Moolenaar 47211ab74a5aSBram Moolenaar var options=$(this).data(class_name+'_public'); 47221ab74a5aSBram Moolenaar if (!options) { 47231ab74a5aSBram Moolenaar init.apply(this,_arguments); 47241ab74a5aSBram Moolenaar 47251ab74a5aSBram Moolenaar } else { 47261ab74a5aSBram Moolenaar var method=public_method[_arguments[0]]; 47271ab74a5aSBram Moolenaar 47281ab74a5aSBram Moolenaar if (typeof(method)!='function') { 47291ab74a5aSBram Moolenaar console.log(class_name+' has no method "'+_arguments[0]+'"'); 47301ab74a5aSBram Moolenaar return false; 47311ab74a5aSBram Moolenaar } 47321ab74a5aSBram Moolenaar _arguments[0]=options; 47331ab74a5aSBram Moolenaar method.apply(this,_arguments); 47341ab74a5aSBram Moolenaar } 47351ab74a5aSBram Moolenaar }); 47361ab74a5aSBram Moolenaar } 47371ab74a5aSBram Moolenaar 47381ab74a5aSBram Moolenaar })(jQuery); 47391ab74a5aSBram Moolenaar JSEND 47401ab74a5aSBram Moolenaar 47411ab74a5aSBram Moolenaar [CODE] 47421ab74a5aSBram Moolenaar 47431ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 47441ab74a5aSBram Moolenaar enew! | close 47451ab74a5aSBram Moolenaarendfunc 47461ab74a5aSBram Moolenaar 47471ab74a5aSBram Moolenaarfunc Test_cindent_52() 47481ab74a5aSBram Moolenaar new 47491ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 47501ab74a5aSBram Moolenaar setl cino=j1,J1 47511ab74a5aSBram Moolenaar 47521ab74a5aSBram Moolenaar let code =<< trim [CODE] 47531ab74a5aSBram Moolenaar JSSTART 47541ab74a5aSBram Moolenaar function init(options) { 47551ab74a5aSBram Moolenaar $(this).data(class_name+'_public',$.extend({},{ 47561ab74a5aSBram Moolenaar foo: 'bar', 47571ab74a5aSBram Moolenaar bar: 2, 47581ab74a5aSBram Moolenaar foobar: [ 47591ab74a5aSBram Moolenaar 1, 47601ab74a5aSBram Moolenaar 2, 47611ab74a5aSBram Moolenaar 3 47621ab74a5aSBram Moolenaar ], 47631ab74a5aSBram Moolenaar callback: function(){ 47641ab74a5aSBram Moolenaar return true; 47651ab74a5aSBram Moolenaar } 47661ab74a5aSBram Moolenaar }, options||{})); 47671ab74a5aSBram Moolenaar } 47681ab74a5aSBram Moolenaar JSEND 47691ab74a5aSBram Moolenaar [CODE] 47701ab74a5aSBram Moolenaar 47711ab74a5aSBram Moolenaar call append(0, code) 47721ab74a5aSBram Moolenaar normal gg 47731ab74a5aSBram Moolenaar call search('^JSSTART') 47741ab74a5aSBram Moolenaar exe "normal =/^JSEND\n" 47751ab74a5aSBram Moolenaar 47761ab74a5aSBram Moolenaar let expected =<< trim [CODE] 47771ab74a5aSBram Moolenaar JSSTART 47781ab74a5aSBram Moolenaar function init(options) { 47791ab74a5aSBram Moolenaar $(this).data(class_name+'_public',$.extend({},{ 47801ab74a5aSBram Moolenaar foo: 'bar', 47811ab74a5aSBram Moolenaar bar: 2, 47821ab74a5aSBram Moolenaar foobar: [ 47831ab74a5aSBram Moolenaar 1, 47841ab74a5aSBram Moolenaar 2, 47851ab74a5aSBram Moolenaar 3 47861ab74a5aSBram Moolenaar ], 47871ab74a5aSBram Moolenaar callback: function(){ 47881ab74a5aSBram Moolenaar return true; 47891ab74a5aSBram Moolenaar } 47901ab74a5aSBram Moolenaar }, options||{})); 47911ab74a5aSBram Moolenaar } 47921ab74a5aSBram Moolenaar JSEND 47931ab74a5aSBram Moolenaar 47941ab74a5aSBram Moolenaar [CODE] 47951ab74a5aSBram Moolenaar 47961ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 47971ab74a5aSBram Moolenaar enew! | close 47981ab74a5aSBram Moolenaarendfunc 47991ab74a5aSBram Moolenaar 48001ab74a5aSBram Moolenaarfunc Test_cindent_53() 48011ab74a5aSBram Moolenaar new 48021ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 48031ab74a5aSBram Moolenaar setl cino=j1,J1 48041ab74a5aSBram Moolenaar 48051ab74a5aSBram Moolenaar let code =<< trim [CODE] 48061ab74a5aSBram Moolenaar JSSTART 48071ab74a5aSBram Moolenaar (function($){ 48081ab74a5aSBram Moolenaar function init(options) { 48091ab74a5aSBram Moolenaar $(this).data(class_name+'_public',$.extend({},{ 48101ab74a5aSBram Moolenaar foo: 'bar', 48111ab74a5aSBram Moolenaar bar: 2, 48121ab74a5aSBram Moolenaar foobar: [ 48131ab74a5aSBram Moolenaar 1, 48141ab74a5aSBram Moolenaar 2, 48151ab74a5aSBram Moolenaar 3 48161ab74a5aSBram Moolenaar ], 48171ab74a5aSBram Moolenaar callback: function(){ 48181ab74a5aSBram Moolenaar return true; 48191ab74a5aSBram Moolenaar } 48201ab74a5aSBram Moolenaar }, options||{})); 48211ab74a5aSBram Moolenaar } 48221ab74a5aSBram Moolenaar })(jQuery); 48231ab74a5aSBram Moolenaar JSEND 48241ab74a5aSBram Moolenaar [CODE] 48251ab74a5aSBram Moolenaar 48261ab74a5aSBram Moolenaar call append(0, code) 48271ab74a5aSBram Moolenaar normal gg 48281ab74a5aSBram Moolenaar call search('^JSSTART') 48291ab74a5aSBram Moolenaar exe "normal =/^JSEND\n" 48301ab74a5aSBram Moolenaar 48311ab74a5aSBram Moolenaar let expected =<< trim [CODE] 48321ab74a5aSBram Moolenaar JSSTART 48331ab74a5aSBram Moolenaar (function($){ 48341ab74a5aSBram Moolenaar function init(options) { 48351ab74a5aSBram Moolenaar $(this).data(class_name+'_public',$.extend({},{ 48361ab74a5aSBram Moolenaar foo: 'bar', 48371ab74a5aSBram Moolenaar bar: 2, 48381ab74a5aSBram Moolenaar foobar: [ 48391ab74a5aSBram Moolenaar 1, 48401ab74a5aSBram Moolenaar 2, 48411ab74a5aSBram Moolenaar 3 48421ab74a5aSBram Moolenaar ], 48431ab74a5aSBram Moolenaar callback: function(){ 48441ab74a5aSBram Moolenaar return true; 48451ab74a5aSBram Moolenaar } 48461ab74a5aSBram Moolenaar }, options||{})); 48471ab74a5aSBram Moolenaar } 48481ab74a5aSBram Moolenaar })(jQuery); 48491ab74a5aSBram Moolenaar JSEND 48501ab74a5aSBram Moolenaar 48511ab74a5aSBram Moolenaar [CODE] 48521ab74a5aSBram Moolenaar 48531ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 48541ab74a5aSBram Moolenaar enew! | close 48551ab74a5aSBram Moolenaarendfunc 48561ab74a5aSBram Moolenaar 48571ab74a5aSBram Moolenaarfunc Test_cindent_54() 48581ab74a5aSBram Moolenaar new 48591ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 48601ab74a5aSBram Moolenaar setl cino=j1,J1,+2 48611ab74a5aSBram Moolenaar 48621ab74a5aSBram Moolenaar let code =<< trim [CODE] 48631ab74a5aSBram Moolenaar JSSTART 48641ab74a5aSBram Moolenaar // Results of JavaScript indent 48651ab74a5aSBram Moolenaar // 1 48661ab74a5aSBram Moolenaar (function(){ 48671ab74a5aSBram Moolenaar var a = [ 48681ab74a5aSBram Moolenaar 'a', 48691ab74a5aSBram Moolenaar 'b', 48701ab74a5aSBram Moolenaar 'c', 48711ab74a5aSBram Moolenaar 'd', 48721ab74a5aSBram Moolenaar 'e', 48731ab74a5aSBram Moolenaar 'f', 48741ab74a5aSBram Moolenaar 'g', 48751ab74a5aSBram Moolenaar 'h', 48761ab74a5aSBram Moolenaar 'i' 48771ab74a5aSBram Moolenaar ]; 48781ab74a5aSBram Moolenaar }()) 48791ab74a5aSBram Moolenaar 48801ab74a5aSBram Moolenaar // 2 48811ab74a5aSBram Moolenaar (function(){ 48821ab74a5aSBram Moolenaar var a = [ 48831ab74a5aSBram Moolenaar 0 + 48841ab74a5aSBram Moolenaar 5 * 48851ab74a5aSBram Moolenaar 9 * 48861ab74a5aSBram Moolenaar 'a', 48871ab74a5aSBram Moolenaar 'b', 48881ab74a5aSBram Moolenaar 0 + 48891ab74a5aSBram Moolenaar 5 * 48901ab74a5aSBram Moolenaar 9 * 48911ab74a5aSBram Moolenaar 'c', 48921ab74a5aSBram Moolenaar 'd', 48931ab74a5aSBram Moolenaar 'e', 48941ab74a5aSBram Moolenaar 'f', 48951ab74a5aSBram Moolenaar 'g', 48961ab74a5aSBram Moolenaar 'h', 48971ab74a5aSBram Moolenaar 'i' 48981ab74a5aSBram Moolenaar ]; 48991ab74a5aSBram Moolenaar }()) 49001ab74a5aSBram Moolenaar 49011ab74a5aSBram Moolenaar // 3 49021ab74a5aSBram Moolenaar (function(){ 49031ab74a5aSBram Moolenaar var a = [ 49041ab74a5aSBram Moolenaar 0 + 49051ab74a5aSBram Moolenaar // comment 1 49061ab74a5aSBram Moolenaar 5 * 49071ab74a5aSBram Moolenaar /* comment 2 */ 49081ab74a5aSBram Moolenaar 9 * 49091ab74a5aSBram Moolenaar 'a', 49101ab74a5aSBram Moolenaar 'b', 49111ab74a5aSBram Moolenaar 0 + 49121ab74a5aSBram Moolenaar 5 * 49131ab74a5aSBram Moolenaar 9 * 49141ab74a5aSBram Moolenaar 'c', 49151ab74a5aSBram Moolenaar 'd', 49161ab74a5aSBram Moolenaar 'e', 49171ab74a5aSBram Moolenaar 'f', 49181ab74a5aSBram Moolenaar 'g', 49191ab74a5aSBram Moolenaar 'h', 49201ab74a5aSBram Moolenaar 'i' 49211ab74a5aSBram Moolenaar ]; 49221ab74a5aSBram Moolenaar }()) 49231ab74a5aSBram Moolenaar 49241ab74a5aSBram Moolenaar // 4 49251ab74a5aSBram Moolenaar { 49261ab74a5aSBram Moolenaar var a = [ 49271ab74a5aSBram Moolenaar 0, 49281ab74a5aSBram Moolenaar 1 49291ab74a5aSBram Moolenaar ]; 49301ab74a5aSBram Moolenaar var b; 49311ab74a5aSBram Moolenaar var c; 49321ab74a5aSBram Moolenaar } 49331ab74a5aSBram Moolenaar 49341ab74a5aSBram Moolenaar // 5 49351ab74a5aSBram Moolenaar { 49361ab74a5aSBram Moolenaar var a = [ 49371ab74a5aSBram Moolenaar [ 49381ab74a5aSBram Moolenaar 0 49391ab74a5aSBram Moolenaar ], 49401ab74a5aSBram Moolenaar 2, 49411ab74a5aSBram Moolenaar 3 49421ab74a5aSBram Moolenaar ]; 49431ab74a5aSBram Moolenaar } 49441ab74a5aSBram Moolenaar 49451ab74a5aSBram Moolenaar // 6 49461ab74a5aSBram Moolenaar { 49471ab74a5aSBram Moolenaar var a = [ 49481ab74a5aSBram Moolenaar [ 49491ab74a5aSBram Moolenaar 0, 49501ab74a5aSBram Moolenaar 1 49511ab74a5aSBram Moolenaar ], 49521ab74a5aSBram Moolenaar 2, 49531ab74a5aSBram Moolenaar 3 49541ab74a5aSBram Moolenaar ]; 49551ab74a5aSBram Moolenaar } 49561ab74a5aSBram Moolenaar 49571ab74a5aSBram Moolenaar // 7 49581ab74a5aSBram Moolenaar { 49591ab74a5aSBram Moolenaar var a = [ 49601ab74a5aSBram Moolenaar // [ 49611ab74a5aSBram Moolenaar 0, 49621ab74a5aSBram Moolenaar // 1 49631ab74a5aSBram Moolenaar // ], 49641ab74a5aSBram Moolenaar 2, 49651ab74a5aSBram Moolenaar 3 49661ab74a5aSBram Moolenaar ]; 49671ab74a5aSBram Moolenaar } 49681ab74a5aSBram Moolenaar 49691ab74a5aSBram Moolenaar // 8 49701ab74a5aSBram Moolenaar var x = [ 49711ab74a5aSBram Moolenaar (function(){ 49721ab74a5aSBram Moolenaar var a, 49731ab74a5aSBram Moolenaar b, 49741ab74a5aSBram Moolenaar c, 49751ab74a5aSBram Moolenaar d, 49761ab74a5aSBram Moolenaar e, 49771ab74a5aSBram Moolenaar f, 49781ab74a5aSBram Moolenaar g, 49791ab74a5aSBram Moolenaar h, 49801ab74a5aSBram Moolenaar i; 49811ab74a5aSBram Moolenaar }) 49821ab74a5aSBram Moolenaar ]; 49831ab74a5aSBram Moolenaar 49841ab74a5aSBram Moolenaar // 9 49851ab74a5aSBram Moolenaar var a = [ 49861ab74a5aSBram Moolenaar 0 + 49871ab74a5aSBram Moolenaar 5 * 49881ab74a5aSBram Moolenaar 9 * 49891ab74a5aSBram Moolenaar 'a', 49901ab74a5aSBram Moolenaar 'b', 49911ab74a5aSBram Moolenaar 0 + 49921ab74a5aSBram Moolenaar 5 * 49931ab74a5aSBram Moolenaar 9 * 49941ab74a5aSBram Moolenaar 'c', 49951ab74a5aSBram Moolenaar 'd', 49961ab74a5aSBram Moolenaar 'e', 49971ab74a5aSBram Moolenaar 'f', 49981ab74a5aSBram Moolenaar 'g', 49991ab74a5aSBram Moolenaar 'h', 50001ab74a5aSBram Moolenaar 'i' 50011ab74a5aSBram Moolenaar ]; 50021ab74a5aSBram Moolenaar 50031ab74a5aSBram Moolenaar // 10 50041ab74a5aSBram Moolenaar var a, 50051ab74a5aSBram Moolenaar b, 50061ab74a5aSBram Moolenaar c, 50071ab74a5aSBram Moolenaar d, 50081ab74a5aSBram Moolenaar e, 50091ab74a5aSBram Moolenaar f, 50101ab74a5aSBram Moolenaar g, 50111ab74a5aSBram Moolenaar h, 50121ab74a5aSBram Moolenaar i; 50131ab74a5aSBram Moolenaar JSEND 50141ab74a5aSBram Moolenaar [CODE] 50151ab74a5aSBram Moolenaar 50161ab74a5aSBram Moolenaar call append(0, code) 50171ab74a5aSBram Moolenaar normal gg 50181ab74a5aSBram Moolenaar call search('^JSSTART') 50191ab74a5aSBram Moolenaar exe "normal =/^JSEND\n" 50201ab74a5aSBram Moolenaar 50211ab74a5aSBram Moolenaar let expected =<< trim [CODE] 50221ab74a5aSBram Moolenaar JSSTART 50231ab74a5aSBram Moolenaar // Results of JavaScript indent 50241ab74a5aSBram Moolenaar // 1 50251ab74a5aSBram Moolenaar (function(){ 50261ab74a5aSBram Moolenaar var a = [ 50271ab74a5aSBram Moolenaar 'a', 50281ab74a5aSBram Moolenaar 'b', 50291ab74a5aSBram Moolenaar 'c', 50301ab74a5aSBram Moolenaar 'd', 50311ab74a5aSBram Moolenaar 'e', 50321ab74a5aSBram Moolenaar 'f', 50331ab74a5aSBram Moolenaar 'g', 50341ab74a5aSBram Moolenaar 'h', 50351ab74a5aSBram Moolenaar 'i' 50361ab74a5aSBram Moolenaar ]; 50371ab74a5aSBram Moolenaar }()) 50381ab74a5aSBram Moolenaar 50391ab74a5aSBram Moolenaar // 2 50401ab74a5aSBram Moolenaar (function(){ 50411ab74a5aSBram Moolenaar var a = [ 50421ab74a5aSBram Moolenaar 0 + 50431ab74a5aSBram Moolenaar 5 * 50441ab74a5aSBram Moolenaar 9 * 50451ab74a5aSBram Moolenaar 'a', 50461ab74a5aSBram Moolenaar 'b', 50471ab74a5aSBram Moolenaar 0 + 50481ab74a5aSBram Moolenaar 5 * 50491ab74a5aSBram Moolenaar 9 * 50501ab74a5aSBram Moolenaar 'c', 50511ab74a5aSBram Moolenaar 'd', 50521ab74a5aSBram Moolenaar 'e', 50531ab74a5aSBram Moolenaar 'f', 50541ab74a5aSBram Moolenaar 'g', 50551ab74a5aSBram Moolenaar 'h', 50561ab74a5aSBram Moolenaar 'i' 50571ab74a5aSBram Moolenaar ]; 50581ab74a5aSBram Moolenaar }()) 50591ab74a5aSBram Moolenaar 50601ab74a5aSBram Moolenaar // 3 50611ab74a5aSBram Moolenaar (function(){ 50621ab74a5aSBram Moolenaar var a = [ 50631ab74a5aSBram Moolenaar 0 + 50641ab74a5aSBram Moolenaar // comment 1 50651ab74a5aSBram Moolenaar 5 * 50661ab74a5aSBram Moolenaar /* comment 2 */ 50671ab74a5aSBram Moolenaar 9 * 50681ab74a5aSBram Moolenaar 'a', 50691ab74a5aSBram Moolenaar 'b', 50701ab74a5aSBram Moolenaar 0 + 50711ab74a5aSBram Moolenaar 5 * 50721ab74a5aSBram Moolenaar 9 * 50731ab74a5aSBram Moolenaar 'c', 50741ab74a5aSBram Moolenaar 'd', 50751ab74a5aSBram Moolenaar 'e', 50761ab74a5aSBram Moolenaar 'f', 50771ab74a5aSBram Moolenaar 'g', 50781ab74a5aSBram Moolenaar 'h', 50791ab74a5aSBram Moolenaar 'i' 50801ab74a5aSBram Moolenaar ]; 50811ab74a5aSBram Moolenaar }()) 50821ab74a5aSBram Moolenaar 50831ab74a5aSBram Moolenaar // 4 50841ab74a5aSBram Moolenaar { 50851ab74a5aSBram Moolenaar var a = [ 50861ab74a5aSBram Moolenaar 0, 50871ab74a5aSBram Moolenaar 1 50881ab74a5aSBram Moolenaar ]; 50891ab74a5aSBram Moolenaar var b; 50901ab74a5aSBram Moolenaar var c; 50911ab74a5aSBram Moolenaar } 50921ab74a5aSBram Moolenaar 50931ab74a5aSBram Moolenaar // 5 50941ab74a5aSBram Moolenaar { 50951ab74a5aSBram Moolenaar var a = [ 50961ab74a5aSBram Moolenaar [ 50971ab74a5aSBram Moolenaar 0 50981ab74a5aSBram Moolenaar ], 50991ab74a5aSBram Moolenaar 2, 51001ab74a5aSBram Moolenaar 3 51011ab74a5aSBram Moolenaar ]; 51021ab74a5aSBram Moolenaar } 51031ab74a5aSBram Moolenaar 51041ab74a5aSBram Moolenaar // 6 51051ab74a5aSBram Moolenaar { 51061ab74a5aSBram Moolenaar var a = [ 51071ab74a5aSBram Moolenaar [ 51081ab74a5aSBram Moolenaar 0, 51091ab74a5aSBram Moolenaar 1 51101ab74a5aSBram Moolenaar ], 51111ab74a5aSBram Moolenaar 2, 51121ab74a5aSBram Moolenaar 3 51131ab74a5aSBram Moolenaar ]; 51141ab74a5aSBram Moolenaar } 51151ab74a5aSBram Moolenaar 51161ab74a5aSBram Moolenaar // 7 51171ab74a5aSBram Moolenaar { 51181ab74a5aSBram Moolenaar var a = [ 51191ab74a5aSBram Moolenaar // [ 51201ab74a5aSBram Moolenaar 0, 51211ab74a5aSBram Moolenaar // 1 51221ab74a5aSBram Moolenaar // ], 51231ab74a5aSBram Moolenaar 2, 51241ab74a5aSBram Moolenaar 3 51251ab74a5aSBram Moolenaar ]; 51261ab74a5aSBram Moolenaar } 51271ab74a5aSBram Moolenaar 51281ab74a5aSBram Moolenaar // 8 51291ab74a5aSBram Moolenaar var x = [ 51301ab74a5aSBram Moolenaar (function(){ 51311ab74a5aSBram Moolenaar var a, 51321ab74a5aSBram Moolenaar b, 51331ab74a5aSBram Moolenaar c, 51341ab74a5aSBram Moolenaar d, 51351ab74a5aSBram Moolenaar e, 51361ab74a5aSBram Moolenaar f, 51371ab74a5aSBram Moolenaar g, 51381ab74a5aSBram Moolenaar h, 51391ab74a5aSBram Moolenaar i; 51401ab74a5aSBram Moolenaar }) 51411ab74a5aSBram Moolenaar ]; 51421ab74a5aSBram Moolenaar 51431ab74a5aSBram Moolenaar // 9 51441ab74a5aSBram Moolenaar var a = [ 51451ab74a5aSBram Moolenaar 0 + 51461ab74a5aSBram Moolenaar 5 * 51471ab74a5aSBram Moolenaar 9 * 51481ab74a5aSBram Moolenaar 'a', 51491ab74a5aSBram Moolenaar 'b', 51501ab74a5aSBram Moolenaar 0 + 51511ab74a5aSBram Moolenaar 5 * 51521ab74a5aSBram Moolenaar 9 * 51531ab74a5aSBram Moolenaar 'c', 51541ab74a5aSBram Moolenaar 'd', 51551ab74a5aSBram Moolenaar 'e', 51561ab74a5aSBram Moolenaar 'f', 51571ab74a5aSBram Moolenaar 'g', 51581ab74a5aSBram Moolenaar 'h', 51591ab74a5aSBram Moolenaar 'i' 51601ab74a5aSBram Moolenaar ]; 51611ab74a5aSBram Moolenaar 51621ab74a5aSBram Moolenaar // 10 51631ab74a5aSBram Moolenaar var a, 51641ab74a5aSBram Moolenaar b, 51651ab74a5aSBram Moolenaar c, 51661ab74a5aSBram Moolenaar d, 51671ab74a5aSBram Moolenaar e, 51681ab74a5aSBram Moolenaar f, 51691ab74a5aSBram Moolenaar g, 51701ab74a5aSBram Moolenaar h, 51711ab74a5aSBram Moolenaar i; 51721ab74a5aSBram Moolenaar JSEND 51731ab74a5aSBram Moolenaar 51741ab74a5aSBram Moolenaar [CODE] 51751ab74a5aSBram Moolenaar 51761ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 51771ab74a5aSBram Moolenaar enew! | close 51781ab74a5aSBram Moolenaarendfunc 51791ab74a5aSBram Moolenaar 51801ab74a5aSBram Moolenaarfunc Test_cindent_55() 51811ab74a5aSBram Moolenaar new 51821ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 51831ab74a5aSBram Moolenaar setl cino& 51841ab74a5aSBram Moolenaar 51851ab74a5aSBram Moolenaar let code =<< trim [CODE] 51861ab74a5aSBram Moolenaar /* start of define */ 51871ab74a5aSBram Moolenaar { 51881ab74a5aSBram Moolenaar } 51891ab74a5aSBram Moolenaar #define AAA \ 51901ab74a5aSBram Moolenaar BBB\ 51911ab74a5aSBram Moolenaar CCC 51921ab74a5aSBram Moolenaar 51931ab74a5aSBram Moolenaar #define CNT \ 51941ab74a5aSBram Moolenaar 1 + \ 51951ab74a5aSBram Moolenaar 2 + \ 51961ab74a5aSBram Moolenaar 4 51971ab74a5aSBram Moolenaar /* end of define */ 51981ab74a5aSBram Moolenaar [CODE] 51991ab74a5aSBram Moolenaar 52001ab74a5aSBram Moolenaar call append(0, code) 52011ab74a5aSBram Moolenaar normal gg 52021ab74a5aSBram Moolenaar call search('start of define') 52031ab74a5aSBram Moolenaar exe "normal =/end of define\n" 52041ab74a5aSBram Moolenaar 52051ab74a5aSBram Moolenaar let expected =<< trim [CODE] 52061ab74a5aSBram Moolenaar /* start of define */ 52071ab74a5aSBram Moolenaar { 52081ab74a5aSBram Moolenaar } 52091ab74a5aSBram Moolenaar #define AAA \ 52101ab74a5aSBram Moolenaar BBB\ 52111ab74a5aSBram Moolenaar CCC 52121ab74a5aSBram Moolenaar 52131ab74a5aSBram Moolenaar #define CNT \ 52141ab74a5aSBram Moolenaar 1 + \ 52151ab74a5aSBram Moolenaar 2 + \ 52161ab74a5aSBram Moolenaar 4 52171ab74a5aSBram Moolenaar /* end of define */ 52181ab74a5aSBram Moolenaar 52191ab74a5aSBram Moolenaar [CODE] 52201ab74a5aSBram Moolenaar 52211ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 52221ab74a5aSBram Moolenaar enew! | close 52231ab74a5aSBram Moolenaarendfunc 52241ab74a5aSBram Moolenaar 52251ab74a5aSBram Moolenaarfunc Test_cindent_56() 52261ab74a5aSBram Moolenaar new 52271ab74a5aSBram Moolenaar setl cindent ts=4 sw=4 52281ab74a5aSBram Moolenaar setl cino& 52291ab74a5aSBram Moolenaar 52301ab74a5aSBram Moolenaar let code =<< trim [CODE] 52311ab74a5aSBram Moolenaar { 52321ab74a5aSBram Moolenaar a = second/*bug*/*line; 52331ab74a5aSBram Moolenaar } 52341ab74a5aSBram Moolenaar [CODE] 52351ab74a5aSBram Moolenaar 52361ab74a5aSBram Moolenaar call append(0, code) 52371ab74a5aSBram Moolenaar normal gg 52381ab74a5aSBram Moolenaar call search('a = second') 52391ab74a5aSBram Moolenaar normal ox 52401ab74a5aSBram Moolenaar 52411ab74a5aSBram Moolenaar let expected =<< trim [CODE] 52421ab74a5aSBram Moolenaar { 52431ab74a5aSBram Moolenaar a = second/*bug*/*line; 52441ab74a5aSBram Moolenaar x 52451ab74a5aSBram Moolenaar } 52461ab74a5aSBram Moolenaar 52471ab74a5aSBram Moolenaar [CODE] 52481ab74a5aSBram Moolenaar 52491ab74a5aSBram Moolenaar call assert_equal(expected, getline(1, '$')) 52501ab74a5aSBram Moolenaar enew! | close 52511ab74a5aSBram Moolenaarendfunc 52521ab74a5aSBram Moolenaar 525302ad4639SBram Moolenaar" this was going beyond the end of the line. 525402ad4639SBram Moolenaarfunc Test_cindent_case() 525502ad4639SBram Moolenaar new 52564b96df5aSBram Moolenaar call setline(1, 'case x: // x') 525702ad4639SBram Moolenaar set cindent 525802ad4639SBram Moolenaar norm! f:a: 52594b96df5aSBram Moolenaar call assert_equal('case x:: // x', getline(1)) 52604b96df5aSBram Moolenaar set cindent& 526102ad4639SBram Moolenaar bwipe! 526202ad4639SBram Moolenaarendfunc 526302ad4639SBram Moolenaar 5264f5f1e10dSBram Moolenaar" Test for changing multiple lines (using c) with cindent 5265f5f1e10dSBram Moolenaarfunc Test_cindent_change_multline() 5266f5f1e10dSBram Moolenaar new 5267f5f1e10dSBram Moolenaar setlocal cindent 5268f5f1e10dSBram Moolenaar call setline(1, ['if (a)', '{', ' i = 1;', '}']) 5269f5f1e10dSBram Moolenaar normal! jc3jm = 2; 5270f5f1e10dSBram Moolenaar call assert_equal("\tm = 2;", getline(2)) 5271f5f1e10dSBram Moolenaar close! 5272f5f1e10dSBram Moolenaarendfunc 5273f5f1e10dSBram Moolenaar 5274d881b516SBram Moolenaarfunc Test_cindent_pragma() 5275d881b516SBram Moolenaar new 5276d881b516SBram Moolenaar setl cindent ts=4 sw=4 5277d881b516SBram Moolenaar setl cino=Ps 5278d881b516SBram Moolenaar 5279d881b516SBram Moolenaar let code =<< trim [CODE] 5280d881b516SBram Moolenaar { 5281d881b516SBram Moolenaar #pragma omp parallel 5282d881b516SBram Moolenaar { 5283d881b516SBram Moolenaar #pragma omp task 5284d881b516SBram Moolenaar foo(); 5285d881b516SBram Moolenaar # pragma omp taskwait 5286d881b516SBram Moolenaar } 5287d881b516SBram Moolenaar } 5288d881b516SBram Moolenaar [CODE] 5289d881b516SBram Moolenaar 5290d881b516SBram Moolenaar call append(0, code) 5291d881b516SBram Moolenaar normal gg 5292d881b516SBram Moolenaar normal =G 5293d881b516SBram Moolenaar 5294d881b516SBram Moolenaar let expected =<< trim [CODE] 5295d881b516SBram Moolenaar { 5296d881b516SBram Moolenaar #pragma omp parallel 5297d881b516SBram Moolenaar { 5298d881b516SBram Moolenaar #pragma omp task 5299d881b516SBram Moolenaar foo(); 5300d881b516SBram Moolenaar # pragma omp taskwait 5301d881b516SBram Moolenaar } 5302d881b516SBram Moolenaar } 5303d881b516SBram Moolenaar 5304d881b516SBram Moolenaar [CODE] 5305d881b516SBram Moolenaar 5306d881b516SBram Moolenaar call assert_equal(expected, getline(1, '$')) 5307d881b516SBram Moolenaar enew! | close 5308d881b516SBram Moolenaarendfunc 5309d881b516SBram Moolenaar 531078e0fa4cSBram Moolenaarfunc Test_backslash_at_end_of_line() 531178e0fa4cSBram Moolenaar new 531278e0fa4cSBram Moolenaar exe "norm v>O'\\\<C-m>-" 531378e0fa4cSBram Moolenaar exe "norm \<C-q>=" 531478e0fa4cSBram Moolenaar bwipe! 531578e0fa4cSBram Moolenaarendfunc 531678e0fa4cSBram Moolenaar 5317*2de9b7c7SBram Moolenaarfunc Test_find_brace_backwards() 5318*2de9b7c7SBram Moolenaar " this was looking beyond the end of the line 5319*2de9b7c7SBram Moolenaar new 5320*2de9b7c7SBram Moolenaar norm R/* 5321*2de9b7c7SBram Moolenaar norm o0{ 5322*2de9b7c7SBram Moolenaar norm o// 5323*2de9b7c7SBram Moolenaar norm V{= 5324*2de9b7c7SBram Moolenaar call assert_equal(['/*', ' 0{', '//'], getline(1, 3)) 5325*2de9b7c7SBram Moolenaar bwipe! 5326*2de9b7c7SBram Moolenaarendfunc 5327*2de9b7c7SBram Moolenaar 5328*2de9b7c7SBram Moolenaar 53297720ba85SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 5330