| 
									
										
										
										
											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]{}", | 
					
						
							|  |  |  |      "[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]") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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]() {}"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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 */]"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | })(); |