view src/testdir/test3.ok @ 10098:72e4b7f90465 v7.4.2320

commit https://github.com/vim/vim/commit/dda933d06c06c2792bd686d059f6ad19191ad30b Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 3 21:04:58 2016 +0200 patch 7.4.2320 Problem: Redraw problem when using 'incsearch'. Solution: Save the current view when deleting characters. (Christian Brabandt) Fix that the '" mark is set in the wrong position. Don't change the search start when using BS.
author Christian Brabandt <cb@256bit.org>
date Sat, 03 Sep 2016 21:15:06 +0200
parents c6a7305972fe
children 0bbbe99c8432
line wrap: on
line source

/* 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{
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