diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:44:24 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 02:44:24 +0000 |
commit | 8baab3c8d7a6f22888bd581cd5c6098fd2e4b5a8 (patch) | |
tree | 3537e168b860f2742f6029d70501b5ed7d15d345 /src/testdir/test3.in | |
parent | Initial commit. (diff) | |
download | vim-8baab3c8d7a6f22888bd581cd5c6098fd2e4b5a8.tar.xz vim-8baab3c8d7a6f22888bd581cd5c6098fd2e4b5a8.zip |
Adding upstream version 2:8.1.0875.upstream/2%8.1.0875upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/testdir/test3.in')
-rw-r--r-- | src/testdir/test3.in | 2354 |
1 files changed, 2354 insertions, 0 deletions
diff --git a/src/testdir/test3.in b/src/testdir/test3.in new file mode 100644 index 0000000..646fbb3 --- /dev/null +++ b/src/testdir/test3.in @@ -0,0 +1,2354 @@ +/* vim: set cin ts=4 sw=4 : */ + +Test for 'cindent'. +For new tests, consider putting them in test_cindent.vim. + +STARTTEST +:so small.vim +:set nocompatible viminfo+=nviminfo modeline +:edit " read modeline +/start of AUTO +=/end of AUTO +ENDTEST + +/* start of AUTO matically checked vim: set ts=4 : */ +{ + if (test) + cmd1; + cmd2; +} + +{ + if (test) + cmd1; + else + cmd2; +} + +{ + if (test) + { + cmd1; + cmd2; + } +} + +{ + if (test) + { + cmd1; + else + } +} + +{ + while (this) + if (test) + cmd1; + cmd2; +} + +{ + while (this) + if (test) + cmd1; + else + cmd2; +} + +{ + if (test) + { + cmd; + } + + if (test) + cmd; +} + +{ + if (test) { + cmd; + } + + if (test) cmd; +} + +{ + cmd1; + for (blah) + while (this) + if (test) + cmd2; + cmd3; +} + +{ + cmd1; + for (blah) + while (this) + if (test) + cmd2; + cmd3; + + if (test) + { + cmd1; + cmd2; + cmd3; + } +} + + +/* Test for 'cindent' do/while mixed with if/else: */ + +{ + do + if (asdf) + asdfasd; + while (cond); + + do + if (asdf) + while (asdf) + asdf; + while (asdf); +} + +/* Test for 'cindent' with two ) on a continuation line */ +{ + if (asdfasdf;asldkfj asdlkfj as;ldkfj sal;d + aal;sdkjf ( ;asldfkja;sldfk + al;sdjfka ;slkdf ) sa;ldkjfsa dlk;) + line up here; +} + + +/* C++ tests: */ + +// foo() these three lines should remain in column 0 +// { +// } + +/* Test for continuation and unterminated lines: */ +{ + i = 99 + 14325 + + 21345 + + 21345 + + 21345 + ( 21345 + + 21345) + + 2345 + + 1234; + c = 1; +} + +/* + testje for indent with empty line + + here */ + +{ + if (testing && + not a joke || + line up here) + hay; + if (testing && + (not a joke || testing + )line up here) + hay; + if (testing && + (not a joke || testing + line up here)) + hay; +} + + +{ + switch (c) + { + case xx: + do + if (asdf) + do + asdfasdf; + while (asdf); + else + asdfasdf; + while (cond); + case yy: + case xx: + case zz: + testing; + } +} + +{ + if (cond) { + foo; + } + else + { + bar; + } +} + +{ + if (alskdfj ;alsdkfjal;skdjf (;sadlkfsa ;dlkf j;alksdfj ;alskdjf + alsdkfj (asldk;fj + awith cino=(0 ;lf this one goes to below the paren with == + ;laksjfd ;lsakdjf ;alskdf asd) + asdfasdf;))) + asdfasdf; +} + + int +func(a, b) + int a; + int c; +{ + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3) + ) +} + +{ + while (asd) + { + if (asdf) + if (test) + if (that) + { + if (asdf) + do + cdasd; + while (as + df); + } + else + if (asdf) + asdf; + else + asdf; + asdf; + } +} + +{ + s = "/*"; b = ';' + s = "/*"; b = ';'; + a = b; +} + +{ + switch (a) + { + case a: + switch (t) + { + case 1: + cmd; + break; + case 2: + cmd; + break; + } + cmd; + break; + case b: + { + int i; + cmd; + } + break; + case c: { + int i; + cmd; + } + case d: if (cond && + test) { /* this line doesn't work right */ + int i; + cmd; + } + break; + } +} + +{ + if (!(vim_strchr(p_cpo, CPO_BUFOPTGLOB) != NULL && entering) && + (bp_to->b_p_initialized || + (!entering && vim_strchr(p_cpo, CPO_BUFOPT) != NULL))) + return; +label : + asdf = asdf ? + asdf : asdf; + asdf = asdf ? + asdf: asdf; +} + +/* Special Comments : This function has the added complexity (compared */ +/* : to addtolist) of having to check for a detail */ +/* : texture and add that to the list first. */ + +char *(array[100]) = { + "testje", + "foo", + "bar", +} + +enum soppie +{ +yes = 0, +no, +maybe +}; + +typedef enum soppie +{ +yes = 0, +no, +maybe +}; + +static enum +{ +yes = 0, +no, +maybe +} soppie; + +public static enum +{ +yes = 0, +no, +maybe +} soppie; + +static private enum +{ +yes = 0, +no, +maybe +} soppie; + +{ + int a, + b; +} + +{ + struct Type + { + int i; + char *str; + } var[] = + { + 0, "zero", + 1, "one", + 2, "two", + 3, "three" + }; + + float matrix[3][3] = + { + { + 0, + 1, + 2 + }, + { + 3, + 4, + 5 + }, + { + 6, + 7, + 8 + } + }; +} + +{ + /* blah ( blah */ + /* where does this go? */ + + /* blah ( blah */ + cmd; + + func(arg1, + /* comment */ + arg2); + a; + { + b; + { + c; /* Hey, NOW it indents?! */ + } + } + + { + func(arg1, + arg2, + arg3); + /* Hey, what am I doing here? Is this coz of the ","? */ + } +} + +main () +{ + if (cond) + { + a = b; + } + if (cond) { + a = c; + } + if (cond) + a = d; + return; +} + +{ + case 2: if (asdf && + asdfasdf) + aasdf; + a = 9; + case 3: if (asdf) + aasdf; + a = 9; + case 4: x = 1; + y = 2; + +label: if (asdf) + here; + +label: if (asdf && + asdfasdf) + { + } + +label: if (asdf && + asdfasdf) { + there; + } + +label: if (asdf && + asdfasdf) + there; +} + +{ + /* + hello with ":set comments= cino=c5" + */ + + /* + hello with ":set comments= cino=" + */ +} + + +{ + if (a < b) { + a = a + 1; + } else + a = a + 2; + + if (a) + do { + testing; + } while (asdfasdf); + a = b + 1; + asdfasdf +} + +{ +for ( int i = 0; + i < 10; i++ ) +{ +} + i = 0; +} + +class bob +{ + int foo() {return 1;} + int bar; +} + +main() +{ +while(1) +if (foo) +{ +bar; +} +else { +asdf; +} +misplacedline; +} + +{ + if (clipboard.state == SELECT_DONE + && ((row == clipboard.start.lnum + && col >= clipboard.start.col) + || row > clipboard.start.lnum)) +} + +{ +if (1) {i += 4;} +where_am_i; +return 0; +} + +{ +{ +} // sdf(asdf +if (asdf) +asd; +} + +{ +label1: +label2: +} + +{ +int fooRet = foo(pBar1, false /*fKB*/, + true /*fPTB*/, 3 /*nT*/, false /*fDF*/); +f() { +for ( i = 0; + i < m; + /* c */ i++ ) { +a = b; +} +} +} + +{ + f1(/*comment*/); + f2(); +} + +{ +do { +if (foo) { +} else +; +} while (foo); +foo(); // was wrong +} + +int x; // no extra indent because of the ; +void func() +{ +} + +char *tab[] = {"aaa", + "};", /* }; */ NULL} + int indented; +{} + +char *a[] = {"aaa", "bbb", + "ccc", NULL}; +// here + +char *tab[] = {"aaa", + "xx", /* xx */}; /* asdf */ +int not_indented; + +{ + do { + switch (bla) + { + case 1: if (foo) + bar; + } + } while (boo); + wrong; +} + +int foo, + bar; +int foo; + +#if defined(foo) \ + && defined(bar) +char * xx = "asdf\ + foo\ + bor"; +int x; + +char *foo = "asdf\ + asdf\ + asdf", + *bar; + +void f() +{ +#if defined(foo) \ + && defined(bar) +char *foo = "asdf\ + asdf\ + asdf", + *bar; + { + int i; +char *foo = "asdf\ + asdf\ + asdf", + *bar; + } +#endif +} +#endif + +int y; // comment + // comment + + // comment + +{ + Constructor(int a, + int b ) : BaseClass(a) + { + } +} + +void foo() +{ + char one, + two; + struct bla piet, + jan; + enum foo kees, + jannie; + static unsigned sdf, + krap; + unsigned int piet, + jan; + int + kees, + jan; +} + +{ + t(int f, + int d); // ) + d(); +} + +Constructor::Constructor(int a, + int b + ) : + BaseClass(a, + b, + c), + mMember(b), +{ +} + +Constructor::Constructor(int a, + int b ) : + BaseClass(a) +{ +} + +Constructor::Constructor(int a, + int b ) /*x*/ : /*x*/ BaseClass(a), + member(b) +{ +} + +A::A(int a, int b) +: aa(a), +bb(b), +cc(c) +{ +} + +class CAbc : + public BaseClass1, + protected BaseClass2 +{ + int Test() { return FALSE; } + int Test1() { return TRUE; } + + CAbc(int a, int b ) : + BaseClass(a) + { + switch(xxx) + { + case abc: + asdf(); + break; + + case 999: + baer(); + break; + } + } + +public: // <-- this was incoreectly indented before!! + void testfall(); +protected: + void testfall(); +}; + +class CAbc : public BaseClass1, + protected BaseClass2 +{ +}; + +static struct +{ + int a; + int b; +} variable[COUNT] = +{ + { + 123, + 456 + }, + { + 123, + 456 + } +}; + +static struct +{ + int a; + int b; +} variable[COUNT] = +{ + { 123, 456 }, + { 123, 456 } +}; + +void asdf() /* ind_maxparen may cause trouble here */ +{ + if ((0 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1 + && 1)) break; +} + +foo() +{ + a = cond ? foo() : asdf + + asdf; + + a = cond ? + foo() : asdf + + asdf; +} + +int main(void) +{ + if (a) + if (b) + 2; + else 3; + next_line_of_code(); +} + +barry() +{ + Foo::Foo (int one, + int two) + : something(4) + {} +} + +barry() +{ + Foo::Foo (int one, int two) + : something(4) + {} +} + +Constructor::Constructor(int a, + int b + ) : + BaseClass(a, + b, + c), + mMember(b) +{ +} + int main () + { + if (lala) + do + ++(*lolo); + while (lili + && lele); + lulu; + } + +int main () +{ +switch (c) +{ +case 'c': if (cond) +{ +} +} +} + +main() +{ + (void) MyFancyFuasdfadsfnction( + argument); +} + +main() +{ + char foo[] = "/*"; + /* as + df */ + hello +} + +/* valid namespaces with normal indent */ +namespace +{ +{ + 111111111111; +} +} +namespace /* test */ +{ + 11111111111111111; +} +namespace // test +{ + 111111111111111111; +} +namespace +{ + 111111111111111111; +} +namespace test +{ + 111111111111111111; +} +namespace{ + 111111111111111111; +} +namespace test{ + 111111111111111111; +} +namespace { + 111111111111111111; +} +namespace test { + 111111111111111111; +namespace test2 { + 22222222222222222; +} +} + +/* invalid namespaces use block indent */ +namespace test test2 { + 111111111111111111111; +} +namespace11111111111 { + 111111111111; +} +namespace() { + 1111111111111; +} +namespace() +{ + 111111111111111111; +} +namespace test test2 +{ + 1111111111111111111; +} +namespace111111111 +{ + 111111111111111111; +} + +void getstring() { +/* Raw strings */ +const char* s = R"( + test { + # comment + field: 123 + } + )"; + } + +void getstring() { +const char* s = R"foo( + test { + # comment + field: 123 + } + )foo"; + } + +{ +int a[4] = { +[0] = 0, +[1] = 1, +[2] = 2, +[3] = 3, +}; +} + +{ +a = b[2] ++ 3; +} + +{ +if (1) +/* aaaaa +* bbbbb +*/ +a = 1; +} + +void func() +{ +switch (foo) +{ +case (bar): +if (baz()) +quux(); +break; +case (shmoo): +if (!bar) +{ +} +case (foo1): +switch (bar) +{ +case baz: +baz_f(); +break; +} +break; +default: +baz(); +baz(); +break; +} +} + +/* end of AUTO */ + +STARTTEST +:set tw=0 noai fo=croq +:let &wm = &columns - 20 +/serious/e +a about life, the universe, and the rest +ENDTEST + +{ + +/* this is + * a real serious important big + * comment + */ + /* insert " about life, the universe, and the rest" after "serious" */ +} + +STARTTEST +:set nocin +/comments +joabout life/happens +jothere/below +oline/this +Ohello +ENDTEST + +{ + /* + * Testing for comments, without 'cin' set + */ + +/* +* what happens here? +*/ + + /* + the end of the comment, try inserting a line below */ + + /* how about + this one */ +} + +STARTTEST +:set cin +/vec2 +== +ENDTEST + +{ + var = this + that + vec[0] * vec[0] + + vec[1] * vec[1] + + vec2[2] * vec[2]; +} + +STARTTEST +:set cin +:set cino=}4 +/testing1 +k2==/testing2 +k2== +ENDTEST + +{ + asdf asdflkajds f; + if (tes & ting) { + asdf asdf asdf ; + asdfa sdf asdf; + } + testing1; + if (tes & ting) + { + asdf asdf asdf ; + asdfa sdf asdf; + } + testing2; +} + +STARTTEST +:set cin +:set cino=(0,)20 +/main +=][ +ENDTEST + +main ( int first_par, /* + * Comment for + * first par + */ + int second_par /* + * Comment for + * second par + */ + ) +{ + func( first_par, /* + * Comment for + * first par + */ + second_par /* + * Comment for + * second par + */ + ); + +} + +STARTTEST +:set cin +:set cino=es,n0s +/main +=][ +ENDTEST + +main(void) +{ + /* Make sure that cino=X0s is not parsed like cino=Xs. */ + if (cond) + foo(); + else + { + bar(); + } +} + +STARTTEST +:set cin +:set cino= +]]=][ +ENDTEST + +{ + do + { + if () + { + if () + asdf; + else + asdf; + } + } while (); + cmd; /* this should go under the } */ +} + +STARTTEST +]]=][ +ENDTEST + +void f() +{ + if ( k() ) { + l(); + + } else { /* Start (two words) end */ + m(); + } + + n(); +} + +STARTTEST +:set cino={s,e-s +]]=][ +ENDTEST + +void f() +{ + if ( k() ) + { + l(); + } else { /* Start (two words) end */ + m(); + } + n(); /* should be under the if () */ +} + +STARTTEST +:set cino={s,fs +]]=/ foo +ENDTEST + +void bar(void) +{ + static array[2][2] = + { + { 1, 2 }, + { 3, 4 }, + } + + while (a) + { + foo(&a); + } + + { + int a; + { + a = a + 1; + } + } + b = a; + } + +void func(void) + { + a = 1; + { + b = 2; + } + c = 3; + d = 4; + } +/* foo */ + +STARTTEST +:set cino= +/while +ohere +ENDTEST + +a() +{ + do { + a = a + + a; + } while ( a ); /* add text under this line */ + if ( a ) + a; +} + +STARTTEST +:set cino= com= +/comment +olabel2: b();
label3 /* post */:
/* pre */ label4:
f(/*com*/);
if (/*com*/)
cmd(); +ENDTEST + +a() +{ +label1: + /* hmm */ + // comment +} + +STARTTEST +:set comments& comments^=s:/*,m:**,ex:*/ +/simple +=5j +ENDTEST + +/* + * A simple comment + */ + +/* + ** A different comment + */ + +STARTTEST +:set cino=c0 +:set comments& comments-=s1:/* comments^=s0:/* +2kdd]]=][ +ENDTEST + +void f() +{ + + /********* + A comment. +*********/ +} + +STARTTEST +:set cino=c0,C1 +:set comments& comments-=s1:/* comments^=s0:/* +2kdd]]=][ +ENDTEST + +void f() +{ + + /********* + A comment. +*********/ +} + +STARTTEST +:set cino= +]]=][ +ENDTEST + +void f() +{ + c = c1 && + ( + c2 || + c3 + ) && c4; +} + +STARTTEST +:set cino=(s +2kdd]]=][ +ENDTEST + +void f() +{ + c = c1 && + ( + c2 || + c3 + ) && c4; +} + +STARTTEST +:set cino=(s,U1 +2kdd]]=][ +ENDTEST + +void f() +{ + c = c1 && + ( + c2 || + c3 + ) && c4; +} + +STARTTEST +:set cino=(0 +2kdd]]=][ +ENDTEST + +void f() +{ + if ( c1 + && ( c2 + || c3)) + foo; +} + +STARTTEST +:set cino=(0,w1 +2kdd]]=][ +ENDTEST + +void f() +{ + if ( c1 + && ( c2 + || c3)) + foo; +} + +STARTTEST +:set cino=(s +2kdd]]=][ +ENDTEST + +void f() +{ + c = c1 && ( + c2 || + c3 + ) && c4; + if ( + c1 && c2 + ) + foo; +} + +STARTTEST +:set cino=(s,m1 +2kdd]]=][ +ENDTEST + +void f() +{ + c = c1 && ( + c2 || + c3 + ) && c4; + if ( + c1 && c2 + ) + foo; +} + +STARTTEST +:set cino=b1 +2kdd]]=][ +ENDTEST + +void f() +{ + switch (x) + { + case 1: + a = b; + break; + default: + a = 0; + break; + } +} + +STARTTEST +:set cino=(0,W5 +2kdd]]=][ +ENDTEST + +void f() +{ + invokeme( + argu, + ment); + invokeme( + argu, + ment + ); + invokeme(argu, + ment + ); +} + +STARTTEST +:set cino=/6 +2kdd]]=][ +ENDTEST + +void f() +{ + statement; + // comment 1 + // comment 2 +} + +STARTTEST +:set cino= +2kdd]]/comment 1/+1 +== +ENDTEST + +void f() +{ + statement; + // comment 1 + // comment 2 +} + +STARTTEST +:set cino=g0 +2kdd]]=][ +ENDTEST + +class CAbc +{ + int Test() { return FALSE; } + +public: // comment + void testfall(); +protected: + void testfall(); +}; + +STARTTEST +:set cino=(0,gs,hs +2kdd]]=][ +ENDTEST + +class Foo : public Bar +{ +public: +virtual void method1(void) = 0; +virtual void method2(int arg1, +int arg2, +int arg3) = 0; +}; + +STARTTEST +:set cino=+20 +2kdd]]=][ +ENDTEST + + void +foo() +{ + if (a) + { + } else + asdf; +} + +STARTTEST +:set cino=(0,W2s +2kdd]]=][ +ENDTEST + +{ + averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd( + asdasdf, + func(asdf, + asdfadsf), + asdfasdf + ); + + /* those are ugly, but consequent */ + + func()->asd(asdasdf, + averylongfunctionname( + abc, + dec)->averylongfunctionname( + asdfadsf, + asdfasdf, + asdfasdf, + ), + func(asdfadf, + asdfasdf + ), + asdasdf + ); + + averylongfunctionnameaverylongfunctionnameavery()->asd(fasdf( + abc, + dec)->asdfasdfasdf( + asdfadsf, + asdfasdf, + asdfasdf, + ), + func(asdfadf, + asdfasdf), + asdasdf + ); +} + +STARTTEST +:set cino=M1 +2kdd]]=][ +ENDTEST + +int main () +{ + if (cond1 && + cond2 + ) + foo; +} + +STARTTEST +:set cino=(0,ts +2kdd2j=][ +ENDTEST + +void func(int a +#if defined(FOO) + , int b + , int c +#endif + ) +{ +} + +STARTTEST +:set cino=(0 +2kdd2j=][ +ENDTEST + +void +func(int a +#if defined(FOO) + , int b + , int c +#endif + ) +{ +} + +STARTTEST +:set cino& +2kdd2j=7][ +ENDTEST + +void func(void) +{ + if(x==y) + if(y==z) + foo=1; + else { bar=1; + baz=2; + } + printf("Foo!\n"); +} + +void func1(void) +{ + char* tab[] = {"foo", "bar", + "baz", "quux", + "this line used", "to be indented incorrectly"}; + foo(); +} + +void func2(void) +{ + int tab[] = + {1, 2, + 3, 4, + 5, 6}; + + printf("This line used to be indented incorrectly.\n"); +} + +int foo[] +#ifdef BAR + += { 1, 2, 3, + 4, 5, 6 } + +#endif +; + int baz; + +void func3(void) +{ + int tab[] = { + 1, 2, + 3, 4, + 5, 6}; + +printf("Don't you dare indent this line incorrectly!\n"); +} + +void +func4(a, b, + c) +int a; +int b; +int c; +{ +} + +void +func5( + int a, + int b) +{ +} + +void +func6( + int a) +{ +} + +STARTTEST +:set cino& +:set cino+=l1 +2kdd2j=][ +ENDTEST + +void func(void) +{ + int tab[] = + { + 1, 2, 3, + 4, 5, 6}; + + printf("Indent this line correctly!\n"); + + switch (foo) + { + case bar: + printf("bar"); + break; + case baz: { + printf("baz"); + break; + } + case quux: +printf("But don't break the indentation of this instruction\n"); +break; + } +} + +STARTTEST +:set cino& +2kdd2j=][ +ENDTEST + +void func(void) +{ + cout << "a" + << "b" + << ") :" + << "c"; +} + +STARTTEST +:set com=s1:/*,m:*,ex:*/ +]]3jofoo(); +ENDTEST + +void func(void) +{ + /* + * This is a comment. + */ +} + +STARTTEST +:set cino& +2kdd2j=][ +ENDTEST + +void func(void) +{ + for (int i = 0; i < 10; ++i) + if (i & 1) { + foo(1); + } else + foo(0); +baz(); +} + +STARTTEST +:set cino=k2s,(0 +2kdd3j=][ +ENDTEST + +void func(void) +{ + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; +} + +STARTTEST +:set cino=k2s,(s +2kdd3j=][ +ENDTEST + +void func(void) +{ + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; +} + +STARTTEST +:set cino=k2s,(s,U1 +2kdd3j=][ +ENDTEST + +void func(void) +{ + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + c = c1 && + ( + c2 || + c3 + ) && c4; +} + +STARTTEST +:set cino=k2s,(0,W4 +2kdd3j=][ +ENDTEST + +void func(void) +{ + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + if ( c1 + && ( c2 + || c3)) + foo; + + a_long_line( + argument, + argument); + a_short_line(argument, + argument); +} + +STARTTEST +:set cino=k2s,u2 +2kdd3j=][ +ENDTEST + +void func(void) +{ + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); +} + +STARTTEST +:set cino=k2s,(0,w1 +2kdd3j=][ +ENDTEST + +void func(void) +{ + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } + if (c123456789 + && (c22345 + || c3)) + printf("foo\n"); + + if ( c1 + && ( c2 + || c3)) + foo; + func( c1 + && ( c2 + || c3)) + foo; +} + +STARTTEST +:set cino=k2,(s +2kdd3j=][ +ENDTEST + +void func(void) +{ + if (condition1 + && condition2) + action(); + function(argument1 + && argument2); + + if (c1 && (c2 || + c3)) + foo; + if (c1 && + (c2 || c3)) + { + } +} + +STARTTEST +:set cino=N-s +/^NAMESPACESTART +=/^NAMESPACEEND +ENDTEST + +NAMESPACESTART +/* valid namespaces with normal indent */ +namespace +{ + { + 111111111111; +} +} +namespace /* test */ +{ + 11111111111111111; +} +namespace // test +{ + 111111111111111111; +} +namespace +{ + 111111111111111111; +} +namespace test +{ + 111111111111111111; +} +namespace test::cpp17 +{ + 111111111111111111; +} +namespace ::incorrectcpp17 +{ + 111111111111111111; +} +namespace test::incorrectcpp17:: +{ + 111111111111111111; +} +namespace test:incorrectcpp17 +{ + 111111111111111111; +} +namespace test:::incorrectcpp17 +{ + 111111111111111111; +} +namespace{ + 111111111111111111; +} +namespace test{ + 111111111111111111; +} +namespace { + 111111111111111111; +} +namespace test { + 111111111111111111; +namespace test2 { + 22222222222222222; +} +} + +/* invalid namespaces use block indent */ +namespace test test2 { + 111111111111111111111; +} +namespace11111111111 { + 111111111111; +} +namespace() { + 1111111111111; +} +namespace() +{ + 111111111111111111; +} +namespace test test2 +{ + 1111111111111111111; +} +namespace111111111 +{ + 111111111111111111; +} +NAMESPACEEND + + +STARTTEST +:set cino=j1,J1 +/^JSSTART +=/^JSEND +ENDTEST + +JSSTART +var bar = { +foo: { +that: this, +some: ok, +}, +"bar":{ +a : 2, +b: "123abc", +x: 4, +"y": 5 +} +} +JSEND + +STARTTEST +:set cino=j1,J1 +/^JSSTART +=/^JSEND +ENDTEST + +JSSTART +var foo = [ +1, +2, +3 +]; +JSEND + +STARTTEST +:set cino=j1,J1 +/^JSSTART +=/^JSEND +ENDTEST + +JSSTART +function bar() { +var foo = [ +1, +2, +3 +]; +} +JSEND + +STARTTEST +:set cino=j1,J1 +/^JSSTART +=/^JSEND +ENDTEST + +JSSTART +(function($){ + +if (cond && +cond) { +stmt; +} +window.something.left = +(width - 50 + offset) + "px"; +var class_name='myclass'; + +function private_method() { +} + +var public_method={ +method: function(options,args){ +private_method(); +} +} + +function init(options) { + +$(this).data(class_name+'_public',$.extend({},{ +foo: 'bar', +bar: 2, +foobar: [ +1, +2, +3 +], +callback: function(){ +return true; +} +}, options||{})); +} + +$.fn[class_name]=function() { + +var _arguments=arguments; +return this.each(function(){ + +var options=$(this).data(class_name+'_public'); +if (!options) { +init.apply(this,_arguments); + +} else { +var method=public_method[_arguments[0]]; + +if (typeof(method)!='function') { +console.log(class_name+' has no method "'+_arguments[0]+'"'); +return false; +} +_arguments[0]=options; +method.apply(this,_arguments); +} +}); +} + +})(jQuery); +JSEND + +STARTTEST +:set cino=j1,J1 +/^JSSTART +=/^JSEND +ENDTEST + +JSSTART +function init(options) { +$(this).data(class_name+'_public',$.extend({},{ +foo: 'bar', +bar: 2, +foobar: [ +1, +2, +3 +], +callback: function(){ +return true; +} +}, options||{})); +} +JSEND + +STARTTEST +:set cino=j1,J1 +/^JSSTART +=/^JSEND +ENDTEST + +JSSTART +(function($){ +function init(options) { +$(this).data(class_name+'_public',$.extend({},{ +foo: 'bar', +bar: 2, +foobar: [ +1, +2, +3 +], +callback: function(){ +return true; +} +}, options||{})); +} +})(jQuery); +JSEND + +STARTTEST +:set cino=j1,J1,+2 +/^JSSTART +=/^JSEND +ENDTEST + +JSSTART +// Results of JavaScript indent +// 1 +(function(){ +var a = [ +'a', +'b', +'c', +'d', +'e', +'f', +'g', +'h', +'i' +]; +}()) + +// 2 +(function(){ +var a = [ +0 + +5 * +9 * +'a', +'b', +0 + +5 * +9 * +'c', +'d', +'e', +'f', +'g', +'h', +'i' +]; +}()) + +// 3 +(function(){ +var a = [ +0 + +// comment 1 +5 * +/* comment 2 */ +9 * +'a', +'b', +0 + +5 * +9 * +'c', +'d', +'e', +'f', +'g', +'h', +'i' +]; +}()) + +// 4 +{ +var a = [ +0, +1 +]; +var b; +var c; +} + +// 5 +{ +var a = [ +[ +0 +], +2, +3 +]; +} + +// 6 +{ +var a = [ +[ +0, +1 +], +2, +3 +]; +} + +// 7 +{ +var a = [ +// [ +0, +// 1 +// ], +2, +3 +]; +} + +// 8 +var x = [ +(function(){ +var a, +b, +c, +d, +e, +f, +g, +h, +i; +}) +]; + +// 9 +var a = [ +0 + +5 * +9 * +'a', +'b', +0 + +5 * +9 * +'c', +'d', +'e', +'f', +'g', +'h', +'i' +]; + +// 10 +var a, +b, +c, +d, +e, +f, +g, +h, +i; +JSEND + +STARTTEST +:set cin cino& +/start of define +=/end of define +ENDTEST + +/* start of define */ +{ +} +#define AAA \ +BBB\ +CCC + +#define CNT \ +1 + \ +2 + \ +4 +/* end of define */ + +STARTTEST +:set cin cino& +/a = second +ox +ENDTEST + +{ + a = second/*bug*/*line; +} + +STARTTEST +:g/^STARTTEST/.,/^ENDTEST/d +:1;/start of AUTO/,$wq! test.out +ENDTEST |