| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | // CodeMirror, copyright (c) by Marijn Haverbeke and others
 | 
					
						
							| 
									
										
										
										
											2018-10-07 12:02:07 +02:00
										 |  |  | // Distributed under an MIT license: https://codemirror.net/LICENSE
 | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | (function() { | 
					
						
							|  |  |  |   var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-c"); | 
					
						
							|  |  |  |   function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MT("indent", | 
					
						
							|  |  |  |      "[type void] [def foo]([type void*] [variable a], [type int] [variable b]) {", | 
					
						
							|  |  |  |      "  [type int] [variable c] [operator =] [variable b] [operator +]", | 
					
						
							|  |  |  |      "    [number 1];", | 
					
						
							|  |  |  |      "  [keyword return] [operator *][variable a];", | 
					
						
							|  |  |  |      "}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MT("indent_switch", | 
					
						
							|  |  |  |      "[keyword switch] ([variable x]) {", | 
					
						
							|  |  |  |      "  [keyword case] [number 10]:", | 
					
						
							|  |  |  |      "    [keyword return] [number 20];", | 
					
						
							|  |  |  |      "  [keyword default]:", | 
					
						
							|  |  |  |      "    [variable printf]([string \"foo %c\"], [variable x]);", | 
					
						
							|  |  |  |      "}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MT("def", | 
					
						
							|  |  |  |      "[type void] [def foo]() {}", | 
					
						
							|  |  |  |      "[keyword struct] [def bar]{}", | 
					
						
							| 
									
										
										
										
											2019-06-02 09:59:07 +02:00
										 |  |  |      "[keyword enum] [def zot]{}", | 
					
						
							|  |  |  |      "[keyword union] [def ugh]{}", | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |      "[type int] [type *][def baz]() {}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MT("def_new_line", | 
					
						
							|  |  |  |      "::[variable std]::[variable SomeTerribleType][operator <][variable T][operator >]", | 
					
						
							|  |  |  |      "[def SomeLongMethodNameThatDoesntFitIntoOneLine]([keyword const] [variable MyType][operator &] [variable param]) {}") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MT("double_block", | 
					
						
							|  |  |  |      "[keyword for] (;;)", | 
					
						
							|  |  |  |      "  [keyword for] (;;)", | 
					
						
							|  |  |  |      "    [variable x][operator ++];", | 
					
						
							|  |  |  |      "[keyword return];"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MT("preprocessor", | 
					
						
							|  |  |  |      "[meta #define FOO 3]", | 
					
						
							|  |  |  |      "[type int] [variable foo];", | 
					
						
							|  |  |  |      "[meta #define BAR\\]", | 
					
						
							|  |  |  |      "[meta 4]", | 
					
						
							|  |  |  |      "[type unsigned] [type int] [variable bar] [operator =] [number 8];", | 
					
						
							|  |  |  |      "[meta #include <baz> ][comment // comment]") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-02 09:59:07 +02:00
										 |  |  |   MT("c_underscores", | 
					
						
							|  |  |  |      "[builtin __FOO];", | 
					
						
							|  |  |  |      "[builtin _Complex];", | 
					
						
							|  |  |  |      "[builtin __aName];", | 
					
						
							|  |  |  |      "[variable _aName];"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MT("c_types", | 
					
						
							|  |  |  |     "[type int];", | 
					
						
							|  |  |  |     "[type long];", | 
					
						
							|  |  |  |     "[type char];", | 
					
						
							|  |  |  |     "[type short];", | 
					
						
							|  |  |  |     "[type double];", | 
					
						
							|  |  |  |     "[type float];", | 
					
						
							|  |  |  |     "[type unsigned];", | 
					
						
							|  |  |  |     "[type signed];", | 
					
						
							|  |  |  |     "[type void];", | 
					
						
							|  |  |  |     "[type bool];", | 
					
						
							|  |  |  |     "[type foo_t];", | 
					
						
							|  |  |  |     "[variable foo_T];", | 
					
						
							|  |  |  |     "[variable _t];"); | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   var mode_cpp = CodeMirror.getMode({indentUnit: 2}, "text/x-c++src"); | 
					
						
							|  |  |  |   function MTCPP(name) { test.mode(name, mode_cpp, Array.prototype.slice.call(arguments, 1)); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MTCPP("cpp14_literal", | 
					
						
							|  |  |  |     "[number 10'000];", | 
					
						
							|  |  |  |     "[number 0b10'000];", | 
					
						
							|  |  |  |     "[number 0x10'000];", | 
					
						
							|  |  |  |     "[string '100000'];"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MTCPP("ctor_dtor", | 
					
						
							|  |  |  |      "[def Foo::Foo]() {}", | 
					
						
							|  |  |  |      "[def Foo::~Foo]() {}"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-02 09:59:07 +02:00
										 |  |  |   MTCPP("cpp_underscores", | 
					
						
							|  |  |  |         "[builtin __FOO];", | 
					
						
							|  |  |  |         "[builtin _Complex];", | 
					
						
							|  |  |  |         "[builtin __aName];", | 
					
						
							|  |  |  |         "[variable _aName];"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   var mode_objc = CodeMirror.getMode({indentUnit: 2}, "text/x-objectivec"); | 
					
						
							|  |  |  |   function MTOBJC(name) { test.mode(name, mode_objc, Array.prototype.slice.call(arguments, 1)); } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MTOBJC("objc_underscores", | 
					
						
							|  |  |  |          "[builtin __FOO];", | 
					
						
							|  |  |  |          "[builtin _Complex];", | 
					
						
							|  |  |  |          "[builtin __aName];", | 
					
						
							|  |  |  |          "[variable _aName];"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MTOBJC("objc_interface", | 
					
						
							|  |  |  |          "[keyword @interface] [def foo] {", | 
					
						
							|  |  |  |          "  [type int] [variable bar];", | 
					
						
							|  |  |  |          "}", | 
					
						
							|  |  |  |          "[keyword @property] ([keyword atomic], [keyword nullable]) [variable NSString][operator *] [variable a];", | 
					
						
							|  |  |  |          "[keyword @property] ([keyword nonatomic], [keyword assign]) [type int] [variable b];", | 
					
						
							|  |  |  |          "[operator -]([type instancetype])[variable initWithFoo]:([type int])[variable a] " + | 
					
						
							|  |  |  |            "[builtin NS_DESIGNATED_INITIALIZER];", | 
					
						
							|  |  |  |          "[keyword @end]"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MTOBJC("objc_implementation", | 
					
						
							|  |  |  |          "[keyword @implementation] [def foo] {", | 
					
						
							|  |  |  |          "  [type int] [variable bar];", | 
					
						
							|  |  |  |          "}", | 
					
						
							|  |  |  |          "[keyword @property] ([keyword readwrite]) [type SEL] [variable a];", | 
					
						
							|  |  |  |          "[operator -]([type instancetype])[variable initWithFoo]:([type int])[variable a] {", | 
					
						
							|  |  |  |          "  [keyword if](([keyword self] [operator =] [[[keyword super] [variable init] ]])) {}", | 
					
						
							|  |  |  |          "  [keyword return] [keyword self];", | 
					
						
							|  |  |  |          "}", | 
					
						
							|  |  |  |          "[keyword @end]"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   MTOBJC("objc_types", | 
					
						
							|  |  |  |          "[type int];", | 
					
						
							|  |  |  |          "[type foo_t];", | 
					
						
							|  |  |  |          "[variable foo_T];", | 
					
						
							|  |  |  |          "[type id];", | 
					
						
							|  |  |  |          "[type SEL];", | 
					
						
							|  |  |  |          "[type instancetype];", | 
					
						
							|  |  |  |          "[type Class];", | 
					
						
							|  |  |  |          "[type Protocol];", | 
					
						
							|  |  |  |          "[type BOOL];" | 
					
						
							|  |  |  |          ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  |   var mode_scala = CodeMirror.getMode({indentUnit: 2}, "text/x-scala"); | 
					
						
							|  |  |  |   function MTSCALA(name) { test.mode("scala_" + name, mode_scala, Array.prototype.slice.call(arguments, 1)); } | 
					
						
							|  |  |  |   MTSCALA("nested_comments", | 
					
						
							|  |  |  |      "[comment /*]", | 
					
						
							|  |  |  |      "[comment But wait /* this is a nested comment */ for real]", | 
					
						
							|  |  |  |      "[comment /**** let * me * show * you ****/]", | 
					
						
							|  |  |  |      "[comment ///// let / me / show / you /////]", | 
					
						
							|  |  |  |      "[comment */]"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-25 18:46:32 +02:00
										 |  |  |   var mode_java = CodeMirror.getMode({indentUnit: 2}, "text/x-java"); | 
					
						
							|  |  |  |   function MTJAVA(name) { test.mode("java_" + name, mode_java, Array.prototype.slice.call(arguments, 1)); } | 
					
						
							|  |  |  |   MTJAVA("types", | 
					
						
							|  |  |  |          "[type byte];", | 
					
						
							|  |  |  |          "[type short];", | 
					
						
							|  |  |  |          "[type int];", | 
					
						
							|  |  |  |          "[type long];", | 
					
						
							|  |  |  |          "[type float];", | 
					
						
							|  |  |  |          "[type double];", | 
					
						
							|  |  |  |          "[type boolean];", | 
					
						
							|  |  |  |          "[type char];", | 
					
						
							|  |  |  |          "[type void];", | 
					
						
							|  |  |  |          "[type Boolean];", | 
					
						
							|  |  |  |          "[type Byte];", | 
					
						
							|  |  |  |          "[type Character];", | 
					
						
							|  |  |  |          "[type Double];", | 
					
						
							|  |  |  |          "[type Float];", | 
					
						
							|  |  |  |          "[type Integer];", | 
					
						
							|  |  |  |          "[type Long];", | 
					
						
							|  |  |  |          "[type Number];", | 
					
						
							|  |  |  |          "[type Object];", | 
					
						
							|  |  |  |          "[type Short];", | 
					
						
							|  |  |  |          "[type String];", | 
					
						
							|  |  |  |          "[type StringBuffer];", | 
					
						
							|  |  |  |          "[type StringBuilder];", | 
					
						
							|  |  |  |          "[type Void];"); | 
					
						
							| 
									
										
										
										
											2018-01-21 10:33:32 -05:00
										 |  |  | })(); |