diff options
Diffstat (limited to 'data/vim/patches/8.1.1434')
-rw-r--r-- | data/vim/patches/8.1.1434 | 9687 |
1 files changed, 9687 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1434 b/data/vim/patches/8.1.1434 new file mode 100644 index 000000000..12f9f9c92 --- /dev/null +++ b/data/vim/patches/8.1.1434 @@ -0,0 +1,9687 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1434 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.1434 +Problem: Test 3 is old style. +Solution: Turn into a new style test. (Yegappan Lakshmanan, closes #4460) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test3.in, src/testdir/test3.ok, + src/testdir/test_cindent.vim + + +*** ../vim-8.1.1433/src/Makefile 2019-05-27 22:21:41.309951907 +0200 +--- src/Makefile 2019-05-31 19:57:21.037036126 +0200 +*************** +*** 2181,2187 **** + # These do not depend on the executable, compile it when needed. + test1 \ + test_eval \ +- test3 \ + test39 \ + test42 test44 test48 test49 \ + test52 test59 \ +--- 2182,2187 ---- +*** ../vim-8.1.1433/src/testdir/Make_all.mak 2019-05-27 22:21:41.309951907 +0200 +--- src/testdir/Make_all.mak 2019-05-31 19:57:21.037036126 +0200 +*************** +*** 13,19 **** + + # Tests that run on all systems. + SCRIPTS_ALL = \ +- test3.out \ + test39.out \ + test42.out \ + test44.out \ +--- 13,18 ---- +*** ../vim-8.1.1433/src/testdir/Make_vms.mms 2019-05-27 22:21:41.309951907 +0200 +--- src/testdir/Make_vms.mms 2019-05-31 20:01:11.583773931 +0200 +*************** +*** 73,79 **** + + .SUFFIXES : .out .in + +! SCRIPT = test1.out test3.out \ + test39.out \ + test42.out test44.out test48.out test49.out \ + test64.out test69.out \ +--- 73,79 ---- + + .SUFFIXES : .out .in + +! SCRIPT = test1.out \ + test39.out \ + test42.out test44.out test48.out test49.out \ + test64.out test69.out \ +*** ../vim-8.1.1433/src/testdir/test3.in 2017-11-12 15:15:37.000000000 +0100 +--- src/testdir/test3.in 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 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 +--- 0 ---- +*** ../vim-8.1.1433/src/testdir/test3.ok 2017-11-12 15:32:20.000000000 +0100 +--- src/testdir/test3.ok 1970-01-01 01:00:00.000000000 +0100 +*************** +*** 1,2102 **** +- /* 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 */ +- +- +- { +- +- /* this is +- * a real serious +- * about life, the +- * universe, and the +- * rest important big +- * comment +- */ +- /* insert " about life, the universe, and the rest" after "serious" */ +- } +- +- +- { +- /* +- * Testing for comments, without 'cin' set +- */ +- about life +- +- /* +- * what happens here? +- */ +- there +- +- /* +- the end of the comment, try inserting a line below */ +- line +- +- /* how about +- hello +- this one */ +- } +- +- +- { +- var = this + that + vec[0] * vec[0] +- + vec[1] * vec[1] +- + vec2[2] * vec[2]; +- } +- +- +- { +- asdf asdflkajds f; +- if (tes & ting) { +- asdf asdf asdf ; +- asdfa sdf asdf; +- } +- testing1; +- if (tes & ting) +- { +- asdf asdf asdf ; +- asdfa sdf asdf; +- } +- testing2; +- } +- +- +- 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 +- */ +- ); +- +- } +- +- +- main(void) +- { +- /* Make sure that cino=X0s is not parsed like cino=Xs. */ +- if (cond) +- foo(); +- else +- { +- bar(); +- } +- } +- +- +- { +- do +- { +- if () +- { +- if () +- asdf; +- else +- asdf; +- } +- } while (); +- cmd; /* this should go under the } */ +- } +- +- +- void f() +- { +- if ( k() ) { +- l(); +- +- } else { /* Start (two words) end */ +- m(); +- } +- +- n(); +- } +- +- +- void f() +- { +- if ( k() ) +- { +- l(); +- } else { /* Start (two words) end */ +- m(); +- } +- n(); /* should be under the if () */ +- } +- +- +- 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 */ +- +- +- a() +- { +- do { +- a = a + +- a; +- } while ( a ); /* add text under this line */ +- here +- if ( a ) +- a; +- } +- +- +- a() +- { +- label1: +- /* hmm */ +- // comment +- label2: b(); +- label3 /* post */: +- /* pre */ label4: +- f(/*com*/); +- if (/*com*/) +- cmd(); +- } +- +- +- /* +- * A simple comment +- */ +- +- /* +- ** A different comment +- */ +- +- +- void f() +- { +- +- /********* +- A comment. +- *********/ +- } +- +- +- void f() +- { +- +- /********* +- A comment. +- *********/ +- } +- +- +- void f() +- { +- c = c1 && +- ( +- c2 || +- c3 +- ) && c4; +- } +- +- +- void f() +- { +- c = c1 && +- ( +- c2 || +- c3 +- ) && c4; +- } +- +- +- void f() +- { +- c = c1 && +- ( +- c2 || +- c3 +- ) && c4; +- } +- +- +- void f() +- { +- if ( c1 +- && ( c2 +- || c3)) +- foo; +- } +- +- +- void f() +- { +- if ( c1 +- && ( c2 +- || c3)) +- foo; +- } +- +- +- void f() +- { +- c = c1 && ( +- c2 || +- c3 +- ) && c4; +- if ( +- c1 && c2 +- ) +- foo; +- } +- +- +- void f() +- { +- c = c1 && ( +- c2 || +- c3 +- ) && c4; +- if ( +- c1 && c2 +- ) +- foo; +- } +- +- +- void f() +- { +- switch (x) +- { +- case 1: +- a = b; +- break; +- default: +- a = 0; +- break; +- } +- } +- +- +- void f() +- { +- invokeme( +- argu, +- ment); +- invokeme( +- argu, +- ment +- ); +- invokeme(argu, +- ment +- ); +- } +- +- +- void f() +- { +- statement; +- // comment 1 +- // comment 2 +- } +- +- +- void f() +- { +- statement; +- // comment 1 +- // comment 2 +- } +- +- +- class CAbc +- { +- int Test() { return FALSE; } +- +- public: // comment +- void testfall(); +- protected: +- void testfall(); +- }; +- +- +- class Foo : public Bar +- { +- public: +- virtual void method1(void) = 0; +- virtual void method2(int arg1, +- int arg2, +- int arg3) = 0; +- }; +- +- +- void +- foo() +- { +- if (a) +- { +- } else +- asdf; +- } +- +- +- { +- 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 +- ); +- } +- +- +- int main () +- { +- if (cond1 && +- cond2 +- ) +- foo; +- } +- +- +- void func(int a +- #if defined(FOO) +- , int b +- , int c +- #endif +- ) +- { +- } +- +- +- void +- func(int a +- #if defined(FOO) +- , int b +- , int c +- #endif +- ) +- { +- } +- +- +- 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) +- { +- } +- +- +- 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; +- } +- } +- +- +- void func(void) +- { +- cout << "a" +- << "b" +- << ") :" +- << "c"; +- } +- +- +- void func(void) +- { +- /* +- * This is a comment. +- */ +- foo(); +- } +- +- +- void func(void) +- { +- for (int i = 0; i < 10; ++i) +- if (i & 1) { +- foo(1); +- } else +- foo(0); +- baz(); +- } +- +- +- 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; +- } +- +- +- 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; +- } +- +- +- 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; +- } +- +- +- 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); +- } +- +- +- 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"); +- } +- +- +- 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; +- } +- +- +- void func(void) +- { +- if (condition1 +- && condition2) +- action(); +- function(argument1 +- && argument2); +- +- if (c1 && (c2 || +- c3)) +- foo; +- if (c1 && +- (c2 || c3)) +- { +- } +- } +- +- +- 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 +- +- +- +- JSSTART +- var bar = { +- foo: { +- that: this, +- some: ok, +- }, +- "bar":{ +- a : 2, +- b: "123abc", +- x: 4, +- "y": 5 +- } +- } +- JSEND +- +- +- JSSTART +- var foo = [ +- 1, +- 2, +- 3 +- ]; +- JSEND +- +- +- JSSTART +- function bar() { +- var foo = [ +- 1, +- 2, +- 3 +- ]; +- } +- JSEND +- +- +- 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 +- +- +- JSSTART +- function init(options) { +- $(this).data(class_name+'_public',$.extend({},{ +- foo: 'bar', +- bar: 2, +- foobar: [ +- 1, +- 2, +- 3 +- ], +- callback: function(){ +- return true; +- } +- }, options||{})); +- } +- JSEND +- +- +- 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 +- +- +- 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 +- +- +- /* start of define */ +- { +- } +- #define AAA \ +- BBB\ +- CCC +- +- #define CNT \ +- 1 + \ +- 2 + \ +- 4 +- /* end of define */ +- +- +- { +- a = second/*bug*/*line; +- x +- } +- +--- 0 ---- +*** ../vim-8.1.1433/src/testdir/test_cindent.vim 2019-05-20 22:12:30.720442793 +0200 +--- src/testdir/test_cindent.vim 2019-05-31 19:57:21.037036126 +0200 +*************** +*** 1,6 **** + " Test for cinoptions and cindent + " +- " TODO: rewrite test3.in into this new style test + + func Test_cino_hash() + " Test that curbuf->b_ind_hash_comment is correctly reset +--- 1,5 ---- +*************** +*** 128,131 **** +--- 127,5254 ---- + bwipe! + endfunc + ++ func Test_cindent_1() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino& sts& ++ ++ let code =<< trim [CODE] ++ /* 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 */ ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('start of AUTO') ++ exe "normal =/end of AUTO\<CR>" ++ ++ let expected =<< trim [CODE] ++ /* 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 */ ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_2() ++ new ++ setl cindent ts=4 sw=4 ++ setl tw=0 noai fo=croq ++ let &wm = &columns - 20 ++ ++ let code =<< trim [CODE] ++ { ++ ++ /* this is ++ * a real serious important big ++ * comment ++ */ ++ /* insert " about life, the universe, and the rest" after "serious" */ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('serious', 'e') ++ normal a about life, the universe, and the rest ++ ++ let expected =<< trim [CODE] ++ { ++ ++ /* this is ++ * a real serious ++ * about life, the ++ * universe, and the ++ * rest important big ++ * comment ++ */ ++ /* insert " about life, the universe, and the rest" after "serious" */ ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ set wm& ++ enew! | close ++ endfunc ++ ++ func Test_cindent_3() ++ new ++ setl nocindent ts=4 sw=4 ++ ++ let code =<< trim [CODE] ++ { ++ /* ++ * Testing for comments, without 'cin' set ++ */ ++ ++ /* ++ * what happens here? ++ */ ++ ++ /* ++ the end of the comment, try inserting a line below */ ++ ++ /* how about ++ this one */ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('comments') ++ normal joabout life ++ call search('happens') ++ normal jothere ++ call search('below') ++ normal oline ++ call search('this') ++ normal Ohello ++ ++ let expected =<< trim [CODE] ++ { ++ /* ++ * Testing for comments, without 'cin' set ++ */ ++ about life ++ ++ /* ++ * what happens here? ++ */ ++ there ++ ++ /* ++ the end of the comment, try inserting a line below */ ++ line ++ ++ /* how about ++ hello ++ this one */ ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_4() ++ new ++ setl cindent ts=4 sw=4 ++ ++ let code =<< trim [CODE] ++ { ++ var = this + that + vec[0] * vec[0] ++ + vec[1] * vec[1] ++ + vec2[2] * vec[2]; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('vec2') ++ normal == ++ ++ let expected =<< trim [CODE] ++ { ++ var = this + that + vec[0] * vec[0] ++ + vec[1] * vec[1] ++ + vec2[2] * vec[2]; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_5() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=}4 ++ ++ let code =<< trim [CODE] ++ { ++ asdf asdflkajds f; ++ if (tes & ting) { ++ asdf asdf asdf ; ++ asdfa sdf asdf; ++ } ++ testing1; ++ if (tes & ting) ++ { ++ asdf asdf asdf ; ++ asdfa sdf asdf; ++ } ++ testing2; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('testing1') ++ exe "normal k2==/testing2\<CR>" ++ normal k2== ++ ++ let expected =<< trim [CODE] ++ { ++ asdf asdflkajds f; ++ if (tes & ting) { ++ asdf asdf asdf ; ++ asdfa sdf asdf; ++ } ++ testing1; ++ if (tes & ting) ++ { ++ asdf asdf asdf ; ++ asdfa sdf asdf; ++ } ++ testing2; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_6() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0,)20 ++ ++ let code =<< trim [CODE] ++ 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 ++ */ ++ ); ++ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('main') ++ normal =][ ++ ++ let expected =<< trim [CODE] ++ 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 ++ */ ++ ); ++ ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_7() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=es,n0s ++ ++ let code =<< trim [CODE] ++ main(void) ++ { ++ /* Make sure that cino=X0s is not parsed like cino=Xs. */ ++ if (cond) ++ foo(); ++ else ++ { ++ bar(); ++ } ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('main') ++ normal =][ ++ ++ let expected =<< trim [CODE] ++ main(void) ++ { ++ /* Make sure that cino=X0s is not parsed like cino=Xs. */ ++ if (cond) ++ foo(); ++ else ++ { ++ bar(); ++ } ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_8() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino= ++ ++ let code =<< trim [CODE] ++ ++ { ++ do ++ { ++ if () ++ { ++ if () ++ asdf; ++ else ++ asdf; ++ } ++ } while (); ++ cmd; /* this should go under the } */ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ ++ { ++ do ++ { ++ if () ++ { ++ if () ++ asdf; ++ else ++ asdf; ++ } ++ } while (); ++ cmd; /* this should go under the } */ ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_9() ++ new ++ setl cindent ts=4 sw=4 ++ ++ let code =<< trim [CODE] ++ ++ void f() ++ { ++ if ( k() ) { ++ l(); ++ ++ } else { /* Start (two words) end */ ++ m(); ++ } ++ ++ n(); ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ ++ void f() ++ { ++ if ( k() ) { ++ l(); ++ ++ } else { /* Start (two words) end */ ++ m(); ++ } ++ ++ n(); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_10() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino={s,e-s ++ ++ let code =<< trim [CODE] ++ ++ void f() ++ { ++ if ( k() ) ++ { ++ l(); ++ } else { /* Start (two words) end */ ++ m(); ++ } ++ n(); /* should be under the if () */ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ ++ void f() ++ { ++ if ( k() ) ++ { ++ l(); ++ } else { /* Start (two words) end */ ++ m(); ++ } ++ n(); /* should be under the if () */ ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_11() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino={s,fs ++ ++ let code =<< trim [CODE] ++ 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 */ ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ exe "normal ]]=/ foo\<CR>" ++ ++ let expected =<< trim [CODE] ++ 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 */ ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_12() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino= ++ ++ let code =<< trim [CODE] ++ a() ++ { ++ do { ++ a = a + ++ a; ++ } while ( a ); /* add text under this line */ ++ if ( a ) ++ a; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('while') ++ normal ohere ++ ++ let expected =<< trim [CODE] ++ a() ++ { ++ do { ++ a = a + ++ a; ++ } while ( a ); /* add text under this line */ ++ here ++ if ( a ) ++ a; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_13() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino= com= ++ ++ let code =<< trim [CODE] ++ a() ++ { ++ label1: ++ /* hmm */ ++ // comment ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('comment') ++ exe "normal olabel2: b();\rlabel3 /* post */:\r/* pre */ label4:\r" . ++ \ "f(/*com*/);\rif (/*com*/)\rcmd();" ++ ++ let expected =<< trim [CODE] ++ a() ++ { ++ label1: ++ /* hmm */ ++ // comment ++ label2: b(); ++ label3 /* post */: ++ /* pre */ label4: ++ f(/*com*/); ++ if (/*com*/) ++ cmd(); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_14() ++ new ++ setl cindent ts=4 sw=4 ++ setl comments& comments^=s:/*,m:**,ex:*/ ++ ++ let code =<< trim [CODE] ++ /* ++ * A simple comment ++ */ ++ ++ /* ++ ** A different comment ++ */ ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('simple') ++ normal =5j ++ ++ let expected =<< trim [CODE] ++ /* ++ * A simple comment ++ */ ++ ++ /* ++ ** A different comment ++ */ ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_15() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=c0 ++ setl comments& comments-=s1:/* comments^=s0:/* ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ ++ /********* ++ A comment. ++ *********/ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ ++ /********* ++ A comment. ++ *********/ ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_16() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=c0,C1 ++ setl comments& comments-=s1:/* comments^=s0:/* ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ ++ /********* ++ A comment. ++ *********/ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ ++ /********* ++ A comment. ++ *********/ ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_17() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino= ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_18() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(s ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_19() ++ new ++ setl cindent ts=4 sw=4 ++ set cino=(s,U1 ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_20() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0 ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_21() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0,w1 ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_22() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(s ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ( ++ c2 || ++ c3 ++ ) && c4; ++ if ( ++ c1 && c2 ++ ) ++ foo; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ( ++ c2 || ++ c3 ++ ) && c4; ++ if ( ++ c1 && c2 ++ ) ++ foo; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_23() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(s,m1 ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ( ++ c2 || ++ c3 ++ ) && c4; ++ if ( ++ c1 && c2 ++ ) ++ foo; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ c = c1 && ( ++ c2 || ++ c3 ++ ) && c4; ++ if ( ++ c1 && c2 ++ ) ++ foo; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_24() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=b1 ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ switch (x) ++ { ++ case 1: ++ a = b; ++ break; ++ default: ++ a = 0; ++ break; ++ } ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ switch (x) ++ { ++ case 1: ++ a = b; ++ break; ++ default: ++ a = 0; ++ break; ++ } ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_25() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0,W5 ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ invokeme( ++ argu, ++ ment); ++ invokeme( ++ argu, ++ ment ++ ); ++ invokeme(argu, ++ ment ++ ); ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ invokeme( ++ argu, ++ ment); ++ invokeme( ++ argu, ++ ment ++ ); ++ invokeme(argu, ++ ment ++ ); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_26() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=/6 ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ statement; ++ // comment 1 ++ // comment 2 ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ statement; ++ // comment 1 ++ // comment 2 ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_27() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino= ++ ++ let code =<< trim [CODE] ++ void f() ++ { ++ statement; ++ // comment 1 ++ // comment 2 ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ exe "normal ]]/comment 1/+1\<CR>==" ++ ++ let expected =<< trim [CODE] ++ void f() ++ { ++ statement; ++ // comment 1 ++ // comment 2 ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_28() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=g0 ++ ++ let code =<< trim [CODE] ++ class CAbc ++ { ++ int Test() { return FALSE; } ++ ++ public: // comment ++ void testfall(); ++ protected: ++ void testfall(); ++ }; ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ class CAbc ++ { ++ int Test() { return FALSE; } ++ ++ public: // comment ++ void testfall(); ++ protected: ++ void testfall(); ++ }; ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_29() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0,gs,hs ++ ++ let code =<< trim [CODE] ++ class Foo : public Bar ++ { ++ public: ++ virtual void method1(void) = 0; ++ virtual void method2(int arg1, ++ int arg2, ++ int arg3) = 0; ++ }; ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ class Foo : public Bar ++ { ++ public: ++ virtual void method1(void) = 0; ++ virtual void method2(int arg1, ++ int arg2, ++ int arg3) = 0; ++ }; ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_30() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=+20 ++ ++ let code =<< trim [CODE] ++ void ++ foo() ++ { ++ if (a) ++ { ++ } else ++ asdf; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void ++ foo() ++ { ++ if (a) ++ { ++ } else ++ asdf; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_31() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0,W2s ++ ++ let code =<< trim [CODE] ++ ++ { ++ 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 ++ ); ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ ++ { ++ 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 ++ ); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_32() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=M1 ++ ++ let code =<< trim [CODE] ++ int main () ++ { ++ if (cond1 && ++ cond2 ++ ) ++ foo; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ int main () ++ { ++ if (cond1 && ++ cond2 ++ ) ++ foo; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_33() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0,ts ++ ++ let code =<< trim [CODE] ++ void func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal 2j=][ ++ ++ let expected =<< trim [CODE] ++ void func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_34() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=(0 ++ ++ let code =<< trim [CODE] ++ ++ void ++ func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal =][ ++ ++ let expected =<< trim [CODE] ++ ++ void ++ func(int a ++ #if defined(FOO) ++ , int b ++ , int c ++ #endif ++ ) ++ { ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_35() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino& ++ ++ let code =<< trim [CODE] ++ 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) ++ { ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=7][ ++ ++ let expected =<< trim [CODE] ++ 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) ++ { ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_36() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino& ++ setl cino+=l1 ++ ++ let code =<< trim [CODE] ++ 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; ++ } ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ 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; ++ } ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_37() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino& ++ ++ let code =<< trim [CODE] ++ void func(void) ++ { ++ cout << "a" ++ << "b" ++ << ") :" ++ << "c"; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void func(void) ++ { ++ cout << "a" ++ << "b" ++ << ") :" ++ << "c"; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_38() ++ new ++ setl cindent ts=4 sw=4 ++ setl com=s1:/*,m:*,ex:*/ ++ ++ let code =<< trim [CODE] ++ void func(void) ++ { ++ /* ++ * This is a comment. ++ */ ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]3jofoo(); ++ ++ let expected =<< trim [CODE] ++ void func(void) ++ { ++ /* ++ * This is a comment. ++ */ ++ foo(); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_39() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino& ++ ++ let code =<< trim [CODE] ++ void func(void) ++ { ++ for (int i = 0; i < 10; ++i) ++ if (i & 1) { ++ foo(1); ++ } else ++ foo(0); ++ baz(); ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void func(void) ++ { ++ for (int i = 0; i < 10; ++i) ++ if (i & 1) { ++ foo(1); ++ } else ++ foo(0); ++ baz(); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_40() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=k2s,(0 ++ ++ let code =<< trim [CODE] ++ 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; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ 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; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_41() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=k2s,(s ++ ++ let code =<< trim [CODE] ++ 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; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ 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; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_42() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=k2s,(s,U1 ++ ++ let code =<< trim [CODE] ++ 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; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ 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; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_43() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=k2s,(0,W4 ++ ++ let code =<< trim [CODE] ++ 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); ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ 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); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_44() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=k2s,u2 ++ ++ let code =<< trim [CODE] ++ 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"); ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ 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"); ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_45() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=k2s,(0,w1 ++ ++ let code =<< trim [CODE] ++ 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; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ 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; ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_46() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=k2,(s ++ ++ let code =<< trim [CODE] ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ normal ]]=][ ++ ++ let expected =<< trim [CODE] ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_47() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=N-s ++ ++ let code =<< trim [CODE] ++ 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 ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^NAMESPACESTART') ++ exe "normal =/^NAMESPACEEND\n" ++ ++ let expected =<< trim [CODE] ++ 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 ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_48() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=j1,J1 ++ ++ let code =<< trim [CODE] ++ JSSTART ++ var bar = { ++ foo: { ++ that: this, ++ some: ok, ++ }, ++ "bar":{ ++ a : 2, ++ b: "123abc", ++ x: 4, ++ "y": 5 ++ } ++ } ++ JSEND ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^JSSTART') ++ exe "normal =/^JSEND\n" ++ ++ let expected =<< trim [CODE] ++ JSSTART ++ var bar = { ++ foo: { ++ that: this, ++ some: ok, ++ }, ++ "bar":{ ++ a : 2, ++ b: "123abc", ++ x: 4, ++ "y": 5 ++ } ++ } ++ JSEND ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_49() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=j1,J1 ++ ++ let code =<< trim [CODE] ++ JSSTART ++ var foo = [ ++ 1, ++ 2, ++ 3 ++ ]; ++ JSEND ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^JSSTART') ++ exe "normal =/^JSEND\n" ++ ++ let expected =<< trim [CODE] ++ JSSTART ++ var foo = [ ++ 1, ++ 2, ++ 3 ++ ]; ++ JSEND ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_50() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=j1,J1 ++ ++ let code =<< trim [CODE] ++ JSSTART ++ function bar() { ++ var foo = [ ++ 1, ++ 2, ++ 3 ++ ]; ++ } ++ JSEND ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^JSSTART') ++ exe "normal =/^JSEND\n" ++ ++ let expected =<< trim [CODE] ++ JSSTART ++ function bar() { ++ var foo = [ ++ 1, ++ 2, ++ 3 ++ ]; ++ } ++ JSEND ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_51() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=j1,J1 ++ ++ let code =<< trim [CODE] ++ 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 ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^JSSTART') ++ exe "normal =/^JSEND\n" ++ ++ let expected =<< trim [CODE] ++ 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 ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_52() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=j1,J1 ++ ++ let code =<< trim [CODE] ++ JSSTART ++ function init(options) { ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, ++ foobar: [ ++ 1, ++ 2, ++ 3 ++ ], ++ callback: function(){ ++ return true; ++ } ++ }, options||{})); ++ } ++ JSEND ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^JSSTART') ++ exe "normal =/^JSEND\n" ++ ++ let expected =<< trim [CODE] ++ JSSTART ++ function init(options) { ++ $(this).data(class_name+'_public',$.extend({},{ ++ foo: 'bar', ++ bar: 2, ++ foobar: [ ++ 1, ++ 2, ++ 3 ++ ], ++ callback: function(){ ++ return true; ++ } ++ }, options||{})); ++ } ++ JSEND ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_53() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=j1,J1 ++ ++ let code =<< trim [CODE] ++ 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 ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^JSSTART') ++ exe "normal =/^JSEND\n" ++ ++ let expected =<< trim [CODE] ++ 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 ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_54() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino=j1,J1,+2 ++ ++ let code =<< trim [CODE] ++ 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 ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('^JSSTART') ++ exe "normal =/^JSEND\n" ++ ++ let expected =<< trim [CODE] ++ 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 ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_55() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino& ++ ++ let code =<< trim [CODE] ++ /* start of define */ ++ { ++ } ++ #define AAA \ ++ BBB\ ++ CCC ++ ++ #define CNT \ ++ 1 + \ ++ 2 + \ ++ 4 ++ /* end of define */ ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('start of define') ++ exe "normal =/end of define\n" ++ ++ let expected =<< trim [CODE] ++ /* start of define */ ++ { ++ } ++ #define AAA \ ++ BBB\ ++ CCC ++ ++ #define CNT \ ++ 1 + \ ++ 2 + \ ++ 4 ++ /* end of define */ ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ ++ func Test_cindent_56() ++ new ++ setl cindent ts=4 sw=4 ++ setl cino& ++ ++ let code =<< trim [CODE] ++ { ++ a = second/*bug*/*line; ++ } ++ [CODE] ++ ++ call append(0, code) ++ normal gg ++ call search('a = second') ++ normal ox ++ ++ let expected =<< trim [CODE] ++ { ++ a = second/*bug*/*line; ++ x ++ } ++ ++ [CODE] ++ ++ call assert_equal(expected, getline(1, '$')) ++ enew! | close ++ endfunc ++ + " vim: shiftwidth=2 sts=2 expandtab +*** ../vim-8.1.1433/src/version.c 2019-05-31 17:34:44.195465656 +0200 +--- src/version.c 2019-05-31 19:58:35.792627365 +0200 +*************** +*** 769,770 **** +--- 769,772 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1434, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +62. If your doorbell rings, you think that new mail has arrived. And then + you're disappointed that it's only someone at the door. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |