|
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
- // Distributed under an MIT license: https://codemirror.net/LICENSE
-
- (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]{}",
- "[keyword enum] [def zot]{}",
- "[keyword union] [def ugh]{}",
- "[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]")
-
- 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];");
-
- 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]() {}");
-
- 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];"
- );
-
- 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 */]");
-
- 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];");
- })();
|