changeset 2968:c296c225736e v7.3.256

updated for version 7.3.256 Problem: Javascript indenting not sufficiently tested. Solution: Add more tests. (Luc Deschenaux) Mark the lines that are indented wrong.
author Bram Moolenaar <bram@vim.org>
date Wed, 20 Jul 2011 15:09:43 +0200
parents 42c8b385b993
children 5d1d554aba04
files src/testdir/test3.in src/testdir/test3.ok src/version.c
diffstat 3 files changed, 256 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test3.in
+++ b/src/testdir/test3.in
@@ -1592,7 +1592,7 @@ NAMESPACEEND
 
 
 STARTTEST
-:set cino=J1
+:set cino=j1,J1
 /^JSSTART
 =/^JSEND
 ENDTEST
@@ -1613,6 +1613,145 @@ x: 4,
 JSEND
 
 STARTTEST
+:set cino=j1,J1
+/^JSSTART
+=/^JSEND
+ENDTEST
+
+JSSTART
+var foo = [
+1,  // indent 8 more
+2,
+3
+];  // indent 8 less
+JSEND
+
+STARTTEST
+:set cino=j1,J1
+/^JSSTART
+=/^JSEND
+ENDTEST
+
+JSSTART
+function bar() {
+var foo = [
+1,
+2,
+3
+];  // indent 16 less
+}
+JSEND
+
+STARTTEST
+:set cino=j1,J1
+/^JSSTART
+=/^JSEND
+ENDTEST
+
+JSSTART
+(function($){
+
+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,  // indent 8 more
+foobar: [  // indent 8 more
+1,  // indent 8 more
+2,  // indent 16 more
+3   // indent 16 more
+],
+callback: function(){  // indent 8 more
+return true;  // indent 8 more
+}  // indent 8 more
+}, 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,  // indent 8 more
+2,  // indent 8 more
+3   // indent 8 more
+],
+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,  // indent 8 more
+foobar: [  // indent 8 more
+1,  // indent 8 more
+2,  // indent 16 more
+3  // indent 16 more
+],
+callback: function(){  // indent 8 more
+return true;  // indent 8 more
+}  // indent 8 more
+}, options||{}));
+}
+})(jQuery);
+JSEND
+
+STARTTEST
 :g/^STARTTEST/.,/^ENDTEST/d
 :1;/start of AUTO/,$wq! test.out
 ENDTEST
--- a/src/testdir/test3.ok
+++ b/src/testdir/test3.ok
@@ -1443,3 +1443,117 @@ var bar = {
 }
 JSEND
 
+
+JSSTART
+var foo = [
+1,  // indent 8 more
+	2,
+	3
+	];  // indent 8 less
+JSEND
+
+
+JSSTART
+function bar() {
+	var foo = [
+		1,
+		2,
+		3
+			];  // indent 16 less
+}
+JSEND
+
+
+JSSTART
+(function($){
+
+	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,  // indent 8 more
+		foobar: [  // indent 8 more
+			1,  // indent 8 more
+		2,  // indent 16 more
+		3   // indent 16 more
+			],
+		callback: function(){  // indent 8 more
+			return true;  // indent 8 more
+		}  // indent 8 more
+		}, 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,  // indent 8 more
+		2,  // indent 8 more
+		3   // indent 8 more
+		],
+		callback: function(){
+			return true;
+		}
+	}, options||{}));
+}
+JSEND
+
+
+JSSTART
+(function($){
+	function init(options) {
+		$(this).data(class_name+'_public',$.extend({},{
+			foo: 'bar',
+		bar: 2,  // indent 8 more
+		foobar: [  // indent 8 more
+			1,  // indent 8 more
+		2,  // indent 16 more
+		3  // indent 16 more
+			],
+		callback: function(){  // indent 8 more
+			return true;  // indent 8 more
+		}  // indent 8 more
+		}, options||{}));
+	}
+})(jQuery);
+JSEND
+
--- a/src/version.c
+++ b/src/version.c
@@ -710,6 +710,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    256,
+/**/
     255,
 /**/
     254,