diff --git a/lib/ace/mode/_test/text_asciidoc.txt b/lib/ace/mode/_test/text_asciidoc.txt
new file mode 100644
index 00000000..af7eaecc
--- /dev/null
+++ b/lib/ace/mode/_test/text_asciidoc.txt
@@ -0,0 +1,111 @@
+------------------------------------
+-----------------------------------
+_ita_lic_, *bo*ld*, +mo+no+, normal.
+``double quoted'', `single quoted'.
+ normal, ^super^, ~sub~.
+
+''''
+Escaped:
+\_italic_, +++_italic_+++,
+t\__e__st, +++t__e__st+++,
++++bold+++, $$normal$$
+\¶ ¶
+\`not single quoted'
+\`\`not double quoted''
+
+
+[fffff]
++++++++++++++++++++++++++++++++++++++
+(C) {ss} ss
++++++++++++++++++++++++++++++++++++++
+
+.............
+callout <1>
+..............
+
+> 1
+1> 2
+<2> 3
+
+Escaped:
+\_italic_,
+t\__e__st, o__
+
+.optional title
+.............
+callout <1>
+..............
+
+
+:macro: dddd
+
+.lists
+. 1
+.. 2
+... d
+..... big
++
+continue +
+next line
+xi) no ++la+tin++
+
+xi) la++tin++
+2. num__ber__ [red]#red#
+--
+ 5. f <> {macro}
+--
+image::path[beauty] ->--<= -- replacements
+
+ image::s
+sssss
+sss
+sssss
+
+
+== 1
+ heading
+=== not a heading
+====================================
+
+==================================
+====4
+NOTE: above
+
+NOTE: above
+
+[[x6]]
+WARNING:
+
+[options[]]
+---------------------------
+literal
+---------------------------
+
+
+= Tables
+|====================================
+| _italic_ | *bold* | text | (R)
+
+|====================================
+
+
+[more, options]
+///////////
+comment
+///////////
+// one line comment
+
+
+
+[red]#red text# [yellow-background]#on yellow#
+[big]#large# [red yellow-background big]*all bold*
+
+
+https://site text callto:ace http://ace.ajaxorg.com[awesome]
+ .still normal text
+.break out thoug should not
+---------------------------
+///////////////////////////
+---------------------------
+
+
diff --git a/lib/ace/mode/_test/tokens_abap.json b/lib/ace/mode/_test/tokens_abap.json
new file mode 100644
index 00000000..06a373dc
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_abap.json
@@ -0,0 +1,294 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "***************************************" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "** Program: EXAMPLE **" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "** Author: Joe Byte, 07-Jul-2007 **" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "***************************************" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "REPORT" ],
+ [ "text", " BOOKINGS" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "* Read flight bookings from the database" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "SELECT" ],
+ [ "keyword.operator", " * " ],
+ [ "keyword", "FROM" ],
+ [ "text", " FLIGHTINFO" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "WHERE" ],
+ [ "text", " " ],
+ [ "keyword", "CLASS" ],
+ [ "keyword.operator", " = " ],
+ [ "string", "'Y'" ],
+ [ "text", " " ],
+ [ "comment", "\"Y = economy" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "OR" ],
+ [ "text", " " ],
+ [ "keyword", "CLASS" ],
+ [ "keyword.operator", " = " ],
+ [ "string", "'C'" ],
+ [ "keyword.operator", "." ],
+ [ "text", " " ],
+ [ "comment", "\"C = business" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.lparen", "(" ],
+ [ "invalid", "..." ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "REPORT" ],
+ [ "text", " TEST" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "WRITE" ],
+ [ "text", " " ],
+ [ "string", "'Hello World'" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "USERPROMPT" ],
+ [ "keyword.operator", " = " ],
+ [ "string", "'Please double-click on a line in the output list '" ],
+ [ "text", " " ],
+ [ "keyword.operator", "&" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string", "'to see the complete details of the transaction.'" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "DATA" ],
+ [ "text", " LAST_EOM " ],
+ [ "keyword", "TYPE" ],
+ [ "text", " " ],
+ [ "support.type", "D" ],
+ [ "keyword.operator", "." ],
+ [ "text", " " ],
+ [ "comment", "\"last end-of-month date" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "* Start from today's date" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " LAST_EOM" ],
+ [ "keyword.operator", " = " ],
+ [ "variable.parameter", "SY" ],
+ [ "keyword.operator", "-" ],
+ [ "text", "DATUM" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "* Set characters 6 and 7 (0-relative) of the YYYYMMDD string to \"01\"," ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "* giving the first day of the current month" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " LAST_EOM" ],
+ [ "constant.numeric", "+6" ],
+ [ "paren.lparen", "(" ],
+ [ "constant.numeric", "2" ],
+ [ "paren.rparen", ")" ],
+ [ "keyword.operator", " = " ],
+ [ "string", "'01'" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "doc.comment", "* Subtract one day" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " LAST_EOM" ],
+ [ "keyword.operator", " = " ],
+ [ "text", "LAST_EOM" ],
+ [ "keyword.operator", " - " ],
+ [ "constant.numeric", "1" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "WRITE" ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "string", "'Last day of previous month was'" ],
+ [ "keyword.operator", "," ],
+ [ "text", " LAST_EOM" ],
+ [ "keyword.operator", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "DATA" ],
+ [ "text", " " ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "keyword", "BEGIN OF" ],
+ [ "text", " I_VBRK " ],
+ [ "keyword", "OCCURS" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "keyword.operator", "," ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " VBELN " ],
+ [ "keyword", "LIKE" ],
+ [ "text", " " ],
+ [ "variable.parameter", "VBRK-VBELN" ],
+ [ "keyword.operator", "," ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " ZUONR " ],
+ [ "keyword", "LIKE" ],
+ [ "text", " " ],
+ [ "variable.parameter", "VBRK-ZUONR" ],
+ [ "keyword.operator", "," ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "END OF" ],
+ [ "text", " I_VBRK" ],
+ [ "keyword.operator", "." ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_asciidoc.json b/lib/ace/mode/_test/tokens_asciidoc.json
new file mode 100644
index 00000000..99c45dd3
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_asciidoc.json
@@ -0,0 +1,730 @@
+[
+ {
+ "state": "literalBlock",
+ "data": [
+ [ "support.function", "------------------------------------" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "support.function", "-----------------------------------" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "string.italic", "_ita_lic_" ],
+ [ "text", ", " ],
+ [ "keyword.bold", "*bo*ld*" ],
+ [ "text", ", " ],
+ [ "support.function", "+mo+no+" ],
+ [ "text", ", normal. " ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "keyword", "``" ],
+ [ "text", "double quoted" ],
+ [ "keyword", "''" ],
+ [ "text", ", `single quoted'." ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", " normal, ^super^, " ],
+ [ "keyword", "~sub~" ],
+ [ "text", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "''''" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "Escaped:" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "constant.language.escape", "\\_" ],
+ [ "text", "italic_, " ],
+ [ "support.function", "+++" ],
+ [ "text", "_italic_" ],
+ [ "support.function", "+++" ],
+ [ "text", "," ]
+ ]
+ },
+ {
+ "state": "smallPassthrough",
+ "data": [
+ [ "text", "t" ],
+ [ "constant.language.escape", "\\_" ],
+ [ "text", "_e" ],
+ [ "string.italic", "__st, +++t__" ],
+ [ "text", "e__st" ],
+ [ "support.function", "+++" ],
+ [ "text", "," ]
+ ]
+ },
+ {
+ "state": "smallPassthrough",
+ "data": [
+ [ "support.function", "+++" ],
+ [ "text", "bold" ],
+ [ "support.function", "+++" ],
+ [ "text", ", $$<" ],
+ [ "support.function", "b" ],
+ [ "text", ">" ],
+ [ "support.function", "normal" ],
+ [ "text", "" ],
+ [ "support.function", "b" ],
+ [ "text", ">$$" ]
+ ]
+ },
+ {
+ "state": "smallPassthrough",
+ "data": [
+ [ "text", "\\" ],
+ [ "support.function", "182" ],
+ [ "text", "; " ],
+ [ "support.function", "182" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "smallPassthrough",
+ "data": [
+ [ "text", "\\`" ],
+ [ "support.function", "not" ],
+ [ "text", " " ],
+ [ "support.function", "single" ],
+ [ "text", " " ],
+ [ "support.function", "quoted" ],
+ [ "text", "'" ]
+ ]
+ },
+ {
+ "state": "smallPassthrough",
+ "data": [
+ [ "text", "\\`\\`" ],
+ [ "support.function", "not" ],
+ [ "text", " " ],
+ [ "support.function", "double" ],
+ [ "text", " " ],
+ [ "support.function", "quoted" ],
+ [ "text", "''" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": []
+ },
+ {
+ "state": "text",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string.regexp", "[fffff]" ]
+ ]
+ },
+ {
+ "state": "passthroughBlock",
+ "data": [
+ [ "string", "+++++++++++++++++++++++++++++++++++++" ]
+ ]
+ },
+ {
+ "state": "passthroughBlock",
+ "data": [
+ [ "support.function", "(C) " ],
+ [ "constant.character", "{ss}" ],
+ [ "support.function", " ss" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "support.function", "+++++++++++++++++++++++++++++++++++++" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": []
+ },
+ {
+ "state": "listingBlock",
+ "data": [
+ [ "support.function", "............." ]
+ ]
+ },
+ {
+ "state": "listingBlock",
+ "data": [
+ [ "support.function", "callout " ],
+ [ "constant.numeric", "<1>" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "support.function", ".............." ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": []
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "> 1" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "1> 2" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "<2> 3" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "Escaped:" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "constant.language.escape", "\\_" ],
+ [ "text", "italic_," ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "t" ],
+ [ "constant.language.escape", "\\_" ],
+ [ "text", "_e" ],
+ [ "string.italic", "__st, o__" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", ".optional title" ]
+ ]
+ },
+ {
+ "state": "listingBlock",
+ "data": [
+ [ "support.function", "............." ]
+ ]
+ },
+ {
+ "state": "listingBlock",
+ "data": [
+ [ "support.function", "callout " ],
+ [ "constant.numeric", "<1>" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "support.function", ".............." ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "keyword", ":macro:" ],
+ [ "text", " dddd" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", ".lists" ]
+ ]
+ },
+ {
+ "state": "listText",
+ "data": [
+ [ "keyword", ". " ],
+ [ "text", "1" ]
+ ]
+ },
+ {
+ "state": "listText",
+ "data": [
+ [ "keyword", ".. " ],
+ [ "text", "2" ]
+ ]
+ },
+ {
+ "state": "listText",
+ "data": [
+ [ "keyword", "... " ],
+ [ "text", "d" ]
+ ]
+ },
+ {
+ "state": "listText",
+ "data": [
+ [ "keyword", "..... " ],
+ [ "text", "big" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "+" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "continue" ],
+ [ "keyword", " +" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "next line" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "xi) no " ],
+ [ "support.function", "++la+tin++" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "listText",
+ "data": [
+ [ "keyword", "xi) " ],
+ [ "text", "la" ],
+ [ "support.function", "++tin++" ]
+ ]
+ },
+ {
+ "state": "listText",
+ "data": [
+ [ "keyword", "2. " ],
+ [ "text", "num" ],
+ [ "string.italic", "__ber__" ],
+ [ "text", " [red]" ],
+ [ "keyword", "#" ],
+ [ "text", "red" ],
+ [ "keyword", "#" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "--" ]
+ ]
+ },
+ {
+ "state": "listText",
+ "data": [
+ [ "keyword", " 5. " ],
+ [ "text", "f " ],
+ [ "keyword", "<>" ],
+ [ "text", " " ],
+ [ "constant.character", "{macro}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "--" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "markup.list.macro", "image::" ],
+ [ "keyword", "path" ],
+ [ "string", "[beauty]" ],
+ [ "text", " " ],
+ [ "constant.language.escape", "->" ],
+ [ "text", "--" ],
+ [ "constant.language.escape", "<=" ],
+ [ "constant.language.escape", " --" ],
+ [ "text", " replacements" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "indentedBlock",
+ "data": [
+ [ "support.function", " image::s" ]
+ ]
+ },
+ {
+ "state": "indentedBlock",
+ "data": [
+ [ "support.function", "sssss" ]
+ ]
+ },
+ {
+ "state": "indentedBlock",
+ "data": [
+ [ "support.function", "sss " ]
+ ]
+ },
+ {
+ "state": "indentedBlock",
+ "data": [
+ [ "support.function", "sssss" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "markup.heading", "== 1" ]
+ ]
+ },
+ {
+ "state": "indentedBlock",
+ "data": [
+ [ "support.function", " heading" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "markup.heading", "=== not a heading" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "====================================" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "==================================" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "====4 " ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "NOTE: above" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "keyword", "NOTE:" ],
+ [ "text", " above" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string.regexp", "[[x6]]" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "keyword", "WARNING:" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string.regexp", "[options[]]" ]
+ ]
+ },
+ {
+ "state": "literalBlock",
+ "data": [
+ [ "support.function", "---------------------------" ]
+ ]
+ },
+ {
+ "state": "literalBlock",
+ "data": [
+ [ "support.function", "literal" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "support.function", "---------------------------" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "markup.heading", "= Tables" ]
+ ]
+ },
+ {
+ "state": "tableBlock",
+ "data": [
+ [ "doc.comment", "|====================================" ]
+ ]
+ },
+ {
+ "state": "tableBlock",
+ "data": [
+ [ "doc.comment", "|" ],
+ [ "text", " " ],
+ [ "string.italic", "_italic_" ],
+ [ "text", " " ],
+ [ "doc.comment", "|" ],
+ [ "text", " " ],
+ [ "keyword.bold", "*bold*" ],
+ [ "text", " " ],
+ [ "doc.comment", "|" ],
+ [ "text", " text " ],
+ [ "doc.comment", "|" ],
+ [ "text", " " ],
+ [ "constant.language.escape", "(R)" ]
+ ]
+ },
+ {
+ "state": "tableBlock",
+ "data": []
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "doc.comment", "|====================================" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string.regexp", "[more, options]" ]
+ ]
+ },
+ {
+ "state": "commentBlock",
+ "data": [
+ [ "doc.comment", "///////////" ]
+ ]
+ },
+ {
+ "state": "commentBlock",
+ "data": [
+ [ "doc.comment", "comment" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "doc.comment", "///////////" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "comment", "// one line comment" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "[red]" ],
+ [ "keyword", "#" ],
+ [ "text", "red text" ],
+ [ "keyword", "#" ],
+ [ "text", " [yellow-background]" ],
+ [ "keyword", "#" ],
+ [ "text", "on yellow" ],
+ [ "keyword", "#" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", "[big]" ],
+ [ "keyword", "#" ],
+ [ "text", "large" ],
+ [ "keyword", "#" ],
+ [ "text", " [red yellow-background big]" ],
+ [ "keyword.bold", "*all bold*" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "\t" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "markup.underline.list", "https://site" ],
+ [ "text", " text <" ],
+ [ "markup.underline.list", "mail@i.am" ],
+ [ "text", "> " ],
+ [ "markup.underline.list", "callto:ace" ],
+ [ "text", " " ],
+ [ "link", "http://ace.ajaxorg.com" ],
+ [ "variable.language", "[awesome]" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": [
+ [ "text", " .still normal text" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", ".break out thoug should not" ]
+ ]
+ },
+ {
+ "state": "literalBlock",
+ "data": [
+ [ "support.function", "---------------------------" ]
+ ]
+ },
+ {
+ "state": "literalBlock",
+ "data": [
+ [ "support.function", "///////////////////////////" ]
+ ]
+ },
+ {
+ "state": "dissallowDelimitedBlock",
+ "data": [
+ [ "support.function", "---------------------------" ]
+ ]
+ },
+ {
+ "state": "text",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_c_cpp.json b/lib/ace/mode/_test/tokens_c_cpp.json
index c5725094..93b0d29b 100644
--- a/lib/ace/mode/_test/tokens_c_cpp.json
+++ b/lib/ace/mode/_test/tokens_c_cpp.json
@@ -37,7 +37,7 @@
"data": [
[ "storage.type", "int" ],
[ "text", " " ],
- [ "entity.name.function", "main" ],
+ [ "identifier", "main" ],
[ "text", " " ],
[ "paren.lparen", "(" ],
[ "paren.rparen", ")" ]
diff --git a/lib/ace/mode/_test/tokens_coffee.json b/lib/ace/mode/_test/tokens_coffee.json
index e8c97baa..a47de57a 100644
--- a/lib/ace/mode/_test/tokens_coffee.json
+++ b/lib/ace/mode/_test/tokens_coffee.json
@@ -50,7 +50,8 @@
"data": [
[ "text", " " ],
[ "identifier", "console" ],
- [ "identifier", ".log" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "log" ],
[ "text", " " ],
[ "string", "'qstring'" ],
[ "text", " " ],
@@ -100,7 +101,7 @@
"data": [
[ "keyword", "do" ],
[ "text", " " ],
- [ "keyword.operator", "->" ]
+ [ "storage.type", "->" ]
]
},
{
@@ -131,7 +132,8 @@
[ "keyword.operator", "=" ],
[ "text", " " ],
[ "string.regex", "/regex/imgy" ],
- [ "identifier", ".test" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "test" ],
[ "text", " " ],
[ "string.regex", "///" ]
]
diff --git a/lib/ace/mode/_test/tokens_dart.json b/lib/ace/mode/_test/tokens_dart.json
new file mode 100644
index 00000000..b741bdc1
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_dart.json
@@ -0,0 +1,537 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "main" ],
+ [ "text", "() {" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "print" ],
+ [ "text", "(" ],
+ [ "string", "'Hello World!'" ],
+ [ "text", ");" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.primitive.dart", "int" ],
+ [ "text", " " ],
+ [ "identifier", "fib" ],
+ [ "text", "(" ],
+ [ "storage.type.primitive.dart", "int" ],
+ [ "text", " " ],
+ [ "identifier", "n" ],
+ [ "text", ") " ],
+ [ "keyword.operator.assignment.dart", "=" ],
+ [ "keyword.operator.comparison.dart", ">" ],
+ [ "text", " (" ],
+ [ "identifier", "n" ],
+ [ "text", " " ],
+ [ "keyword.operator.comparison.dart", ">" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "text", ") " ],
+ [ "keyword.control.ternary.dart", "?" ],
+ [ "text", " (" ],
+ [ "identifier", "fib" ],
+ [ "text", "(" ],
+ [ "identifier", "n" ],
+ [ "text", " " ],
+ [ "keyword.operator.arithmetic.dart", "-" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "text", ") " ],
+ [ "keyword.operator.arithmetic.dart", "+" ],
+ [ "text", " " ],
+ [ "identifier", "fib" ],
+ [ "text", "(" ],
+ [ "identifier", "n" ],
+ [ "text", " " ],
+ [ "keyword.operator.arithmetic.dart", "-" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2" ],
+ [ "text", ")) " ],
+ [ "keyword.control.ternary.dart", ":" ],
+ [ "text", " " ],
+ [ "identifier", "n" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "main" ],
+ [ "text", "() {" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "print" ],
+ [ "text", "(" ],
+ [ "string", "'fib(20) = ${fib(20)}'" ],
+ [ "text", ");" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "}" ]
+ ]
+ },
+ {
+ "state": "comment",
+ "data": [
+ [ "comment", "/*asd" ]
+ ]
+ },
+ {
+ "state": "comment",
+ "data": [
+ [ "comment", "asdad" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "comment", "*/" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", "0.67" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", "77" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "." ],
+ [ "constant.numeric", "86" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.other.import.dart", "#import" ],
+ [ "text", "(" ],
+ [ "string", "\"http://dartwatch.com/myOtherLibrary.dart\"" ],
+ [ "text", ");" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.other.import.dart", "#import" ],
+ [ "text", "(" ],
+ [ "string", "\"myOtherLibrary.dart\"" ],
+ [ "text", ", " ],
+ [ "keyword.other.import.dart", "prefix" ],
+ [ "text", ":" ],
+ [ "string", "\"lib1\"" ],
+ [ "text", ");" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "qqdoc",
+ "data": [
+ [ "string", "\"\"\"asdasdads" ]
+ ]
+ },
+ {
+ "state": "qqdoc",
+ "data": [
+ [ "string", "asdadsadsasd" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string", "asdasdasdad\"\"\"" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string", "'23424'" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", "0x234" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "foo" ],
+ [ "text", " " ],
+ [ "keyword.operator.dart", "is" ],
+ [ "text", " " ],
+ [ "identifier", "bar" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.primitive.dart", "int" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "keyword.operator.assignment.dart", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "4" ],
+ [ "text", " " ],
+ [ "keyword.operator.bitwise.dart", "<<" ],
+ [ "text", " " ],
+ [ "constant.numeric", "10" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "comment", "// Create a class for Point." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.declaration.dart", "class" ],
+ [ "text", " " ],
+ [ "identifier", "Point" ],
+ [ "text", " {" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// Final variables cannot be changed once they are assigned." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// Create two instance variables." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "storage.modifier.dart", "final" ],
+ [ "text", " " ],
+ [ "storage.type.primitive.dart", "num" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "text", ", " ],
+ [ "identifier", "y" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// A constructor, with syntactic sugar for setting instance variables." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "Point" ],
+ [ "text", "(" ],
+ [ "variable.language.dart", "this" ],
+ [ "text", "." ],
+ [ "identifier", "x" ],
+ [ "text", ", " ],
+ [ "variable.language.dart", "this" ],
+ [ "text", "." ],
+ [ "identifier", "y" ],
+ [ "text", ");" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// A named constructor with an initializer list." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "Point" ],
+ [ "text", "." ],
+ [ "identifier", "origin" ],
+ [ "text", "() " ],
+ [ "keyword.control.ternary.dart", ":" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "keyword.operator.assignment.dart", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", ", " ],
+ [ "identifier", "y" ],
+ [ "text", " " ],
+ [ "keyword.operator.assignment.dart", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// A method." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.primitive.dart", "num" ],
+ [ "text", " " ],
+ [ "identifier", "distanceTo" ],
+ [ "text", "(" ],
+ [ "identifier", "Point" ],
+ [ "text", " " ],
+ [ "identifier", "other" ],
+ [ "text", ") {" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.primitive.dart", "var" ],
+ [ "text", " " ],
+ [ "identifier", "dx" ],
+ [ "text", " " ],
+ [ "keyword.operator.assignment.dart", "=" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "keyword.operator.arithmetic.dart", "-" ],
+ [ "text", " " ],
+ [ "identifier", "other" ],
+ [ "text", "." ],
+ [ "identifier", "x" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.primitive.dart", "var" ],
+ [ "text", " " ],
+ [ "identifier", "dy" ],
+ [ "text", " " ],
+ [ "keyword.operator.assignment.dart", "=" ],
+ [ "text", " " ],
+ [ "identifier", "y" ],
+ [ "text", " " ],
+ [ "keyword.operator.arithmetic.dart", "-" ],
+ [ "text", " " ],
+ [ "identifier", "other" ],
+ [ "text", "." ],
+ [ "identifier", "y" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.control.dart", "return" ],
+ [ "text", " " ],
+ [ "identifier", "sqrt" ],
+ [ "text", "(" ],
+ [ "identifier", "dx" ],
+ [ "text", " " ],
+ [ "keyword.operator.arithmetic.dart", "*" ],
+ [ "text", " " ],
+ [ "identifier", "dx" ],
+ [ "text", " " ],
+ [ "keyword.operator.arithmetic.dart", "+" ],
+ [ "text", " " ],
+ [ "identifier", "dy" ],
+ [ "text", " " ],
+ [ "keyword.operator.arithmetic.dart", "*" ],
+ [ "text", " " ],
+ [ "identifier", "dy" ],
+ [ "text", ");" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " }" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// Check for null." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.primitive.dart", "var" ],
+ [ "text", " " ],
+ [ "identifier", "unicorn" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "assert" ],
+ [ "text", "(" ],
+ [ "identifier", "unicorn" ],
+ [ "text", " " ],
+ [ "keyword.operator.comparison.dart", "==" ],
+ [ "text", " " ],
+ [ "constant.language.dart", "null" ],
+ [ "text", ");" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "comment", "// Check for NaN." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.primitive.dart", "var" ],
+ [ "text", " " ],
+ [ "identifier", "iMeantToDoThis" ],
+ [ "text", " " ],
+ [ "keyword.operator.assignment.dart", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "keyword.operator.arithmetic.dart", "/" ],
+ [ "constant.numeric", "0" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "assert" ],
+ [ "text", "(" ],
+ [ "identifier", "iMeantToDoThis" ],
+ [ "text", "." ],
+ [ "identifier", "isNaN" ],
+ [ "text", "());" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_glsl.json b/lib/ace/mode/_test/tokens_glsl.json
index 5d5668de..5f825707 100644
--- a/lib/ace/mode/_test/tokens_glsl.json
+++ b/lib/ace/mode/_test/tokens_glsl.json
@@ -41,7 +41,7 @@
"data": [
[ "keyword", "void" ],
[ "text", " " ],
- [ "entity.name.function", "main" ],
+ [ "identifier", "main" ],
[ "paren.lparen", "(" ],
[ "paren.rparen", ")" ],
[ "text", " " ],
diff --git a/lib/ace/mode/_test/tokens_haml.json b/lib/ace/mode/_test/tokens_haml.json
new file mode 100644
index 00000000..78e4b858
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_haml.json
@@ -0,0 +1,285 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.other.doctype", "!!!5" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", "# " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", "# " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", "# " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", "# " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", "/adasdasdad" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", "%div" ],
+ [ "punctuation.section", "{" ],
+ [ "constant.other.symbol.ruby", ":id" ],
+ [ "text", " => " ],
+ [ "string", "\"#{@item.type}_#{@item.number}\"" ],
+ [ "text", ", " ],
+ [ "constant.other.symbol.ruby", ":class" ],
+ [ "text", " => " ],
+ [ "string", "'#{@item.type} #{@item.urgency}'" ],
+ [ "text", ", " ],
+ [ "constant.other.symbol.ruby", ":phoney" ],
+ [ "text", " => " ],
+ [ "string", "`asdasdasd`" ],
+ [ "punctuation.section", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", "/ file: app/views/movies/index.html.haml" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.escape.haml", "\\d" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", "%ads:" ],
+ [ "punctuation.section", "{" ],
+ [ "constant.other.symbol.ruby", ":bleh" ],
+ [ "text", " => " ],
+ [ "constant.numeric", "33" ],
+ [ "punctuation.section", "}" ]
+ ]
+ },
+ {
+ "state": "embedded_ruby",
+ "data": [
+ [ "entity.name.tag.haml", "%p" ],
+ [ "text", "==ddd==" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " Date/Time:" ]
+ ]
+ },
+ {
+ "state": "embedded_ruby",
+ "data": [
+ [ "text", " - " ],
+ [ "identifier", "now" ],
+ [ "text", " = " ],
+ [ "support.class", "DateTime" ],
+ [ "text", "." ],
+ [ "identifier", "now" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", " %strong" ],
+ [ "text", "= now" ]
+ ]
+ },
+ {
+ "state": "embedded_ruby",
+ "data": [
+ [ "text", " = " ],
+ [ "keyword", "if" ],
+ [ "text", " " ],
+ [ "identifier", "now" ],
+ [ "text", " " ],
+ [ "support.class", "DateTime" ],
+ [ "text", "." ],
+ [ "identifier", "parse" ],
+ [ "text", "(\"" ],
+ [ "support.class", "December" ],
+ [ "text", " " ],
+ [ "constant.numeric", "31" ],
+ [ "text", ", " ],
+ [ "constant.numeric", "2006" ],
+ [ "text", "\")" ]
+ ]
+ },
+ {
+ "state": "embedded_ruby",
+ "data": [
+ [ "text", " = \"" ],
+ [ "support.class", "Happy" ],
+ [ "text", " " ],
+ [ "identifier", "new" ],
+ [ "text", " \" + \"" ],
+ [ "identifier", "year" ],
+ [ "text", "!\"" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", "%sfd" ],
+ [ "entity.other.attribute-name.class.haml", ".dfdfg" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", "#content" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " .title" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", " %h1" ],
+ [ "text", "= @title" ]
+ ]
+ },
+ {
+ "state": "embedded_ruby",
+ "data": [
+ [ "text", " = " ],
+ [ "support.function", "link_to" ],
+ [ "text", " '" ],
+ [ "support.class", "Home" ],
+ [ "text", "', " ],
+ [ "identifier", "home_url" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", " #contents" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", "%div" ],
+ [ "entity.other.attribute-name.id.haml", "#content" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", " %div" ],
+ [ "entity.other.attribute-name.class.haml", ".articles" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", " %div" ],
+ [ "entity.other.attribute-name.class.haml", ".article" ],
+ [ "entity.other.attribute-name.class.haml", ".title" ],
+ [ "text", " Blah" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", " %div" ],
+ [ "entity.other.attribute-name.class.haml", ".article" ],
+ [ "entity.other.attribute-name.class.haml", ".date" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2006" ],
+ [ "constant.numeric", "-11" ],
+ [ "constant.numeric", "-05" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", " %div" ],
+ [ "entity.other.attribute-name.class.haml", ".article" ],
+ [ "entity.other.attribute-name.class.haml", ".entry" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " Neil Patrick Harris " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", "%div" ],
+ [ "text", "[@user, " ],
+ [ "constant.other.symbol.ruby", ":greeting" ],
+ [ "text", "]" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.tag.haml", " %bar" ],
+ [ "text", "[" ],
+ [ "constant.numeric", "290" ],
+ [ "text", "]/" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string.quoted.double", "==Hello!==" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_jade.json b/lib/ace/mode/_test/tokens_jade.json
new file mode 100644
index 00000000..0d9f8c96
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_jade.json
@@ -0,0 +1,309 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.other.doctype.jade", "!!!doctype" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.other.doctype.jade", "!!!5" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.other.doctype.jade", "!!!" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.control.import.include.jade", "include" ],
+ [ "text", " something" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.control.import.include.jade", " include" ],
+ [ "text", " another_thing" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", " // let's talk about it" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "comment_block",
+ "data": [
+ [ "punctuation.section.comment", "//" ]
+ ]
+ },
+ {
+ "state": "comment_block",
+ "data": [
+ [ "comment.block.jade", " here it is. a block comment!" ]
+ ]
+ },
+ {
+ "state": "comment_block",
+ "data": [
+ [ "comment.block.jade", " and another row!" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "but not here." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "comment_block",
+ "data": [
+ [ "punctuation.section.comment", " // " ]
+ ]
+ },
+ {
+ "state": "comment_block",
+ "data": [
+ [ "comment.block.jade", " a far spaced" ]
+ ]
+ },
+ {
+ "state": "comment_block",
+ "data": [
+ [ "comment.block.jade", " should be lack of block" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.comment", " // also not a comment" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag.any.jade", " div" ],
+ [ "entity.other.attribute-name.class.jade", ".attemptAtBlock" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag.any.jade", " span" ],
+ [ "entity.other.attribute-name.id.jade", "#myName" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string.interpolated.jade", "#{implicit}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string.interpolated.jade", "!{more_explicit}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "suport.type.attribute.id.jade", "#idDiv" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "suport.type.attribute.class.jade", ".idDiv" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag.any.jade", " test" ],
+ [ "punctuation", "(" ],
+ [ "entity.other.attribute-name.jade", "id" ],
+ [ "text", "=" ],
+ [ "string", "\"tag\"" ],
+ [ "punctuation", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag.any.jade", " header" ],
+ [ "punctuation", "(" ],
+ [ "entity.other.attribute-name.jade", "id" ],
+ [ "text", "=" ],
+ [ "string", "\"tag\"" ],
+ [ "text", ", " ],
+ [ "entity.other.attribute-name.jade", "blah" ],
+ [ "text", "=" ],
+ [ "string", "\"foo\"" ],
+ [ "text", ", " ],
+ [ "entity.other.attribute-name.jade", "meh" ],
+ [ "text", "=" ],
+ [ "string", "\"aads\"" ],
+ [ "punctuation", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.function.jade", "mixin" ],
+ [ "entity.name.function.jade", " article" ],
+ [ "punctuation.definition.parameters.begin.jade", "(" ],
+ [ "variable.parameter.function.jade", "obj, parents" ],
+ [ "punctuation.definition.parameters.end.jade", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.function.jade", " mixin" ],
+ [ "entity.name.function.jade", " bleh" ],
+ [ "punctuation.definition.parameters.begin.jade", "(" ],
+ [ "punctuation.definition.parameters.end.jade", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.function.jade", " mixin" ],
+ [ "entity.name.function.jade", " clever-name" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "source.js.embedded.jade", " -" ],
+ [ "storage.type", "var" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "string", "\"0\"" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "source.js.embedded.jade", " -" ],
+ [ "text", " " ],
+ [ "identifier", "y" ],
+ [ "text", " " ],
+ [ "identifier", "each" ],
+ [ "text", " z" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "source.js.embedded.jade", " -" ],
+ [ "text", " " ],
+ [ "storage.type", "var" ],
+ [ "text", " " ],
+ [ "identifier", "items" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "paren.lparen", "[" ],
+ [ "string", "\"one\"" ],
+ [ "punctuation.operator", "," ],
+ [ "text", " " ],
+ [ "string", "\"two\"" ],
+ [ "punctuation.operator", "," ],
+ [ "text", " " ],
+ [ "string", "\"three\"" ],
+ [ "text", "]" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag.any.jade", " each" ],
+ [ "text", " item in items" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag.any.jade", " li" ],
+ [ "text", "= item" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_javascript.json b/lib/ace/mode/_test/tokens_javascript.json
index b27744c1..12057d81 100644
--- a/lib/ace/mode/_test/tokens_javascript.json
+++ b/lib/ace/mode/_test/tokens_javascript.json
@@ -46,7 +46,7 @@
"state": "regex_allowed",
"data": [
[ "text", " " ],
- [ "identifier", "alert" ],
+ [ "support.function", "alert" ],
[ "paren.lparen", "(" ],
[ "identifier", "items" ],
[ "paren.lparen", "[" ],
@@ -148,8 +148,7 @@
[ "string.regexp", "y" ],
[ "constant.language.escape", ")[]" ],
[ "constant.language.escape", "|" ],
- [ "constant.language.escape", "$" ],
- [ "constant.language.escape", "?" ],
+ [ "invalid", "$?" ],
[ "constant.language.escape", "|" ],
[ "invalid", "^*" ],
[ "string.regexp", "/" ],
diff --git a/lib/ace/mode/_test/tokens_jsp.json b/lib/ace/mode/_test/tokens_jsp.json
new file mode 100644
index 00000000..4f5e9e46
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_jsp.json
@@ -0,0 +1,575 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "html" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "body" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "js-start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.script", "script" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "js-regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type", "var" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "string", "\"abc\"" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "js-regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type", "function" ],
+ [ "text", " " ],
+ [ "identifier", "y" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "js-start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name.script", "script" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "css-start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.style", "style" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "css-ruleset",
+ "data": [
+ [ "text", " " ],
+ [ "variable", ".class" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "css-ruleset",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "background" ],
+ [ "text", ": " ],
+ [ "constant.numeric", "#124356" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "css-start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name.style", "style" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "p" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " Today's date: " ],
+ [ "meta.tag", "<%" ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "lparen", "(" ],
+ [ "keyword", "new" ],
+ [ "text", " " ],
+ [ "identifier", "java" ],
+ [ "text", "." ],
+ [ "identifier", "util" ],
+ [ "text", "." ],
+ [ "identifier", "Date" ],
+ [ "lparen", "(" ],
+ [ "rparen", ")" ],
+ [ "rparen", ")" ],
+ [ "text", "." ],
+ [ "identifier", "toLocaleString" ],
+ [ "lparen", "(" ],
+ [ "rparen", ")" ],
+ [ "meta.tag", "%>" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "p" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<%" ],
+ [ "keyword.operator", "!" ],
+ [ "text", " " ],
+ [ "keyword", "int" ],
+ [ "text", " " ],
+ [ "identifier", "i" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", "; " ],
+ [ "meta.tag", "%>" ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "" ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "int" ],
+ [ "text", " " ],
+ [ "identifier", "j" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "10" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "<%--" ],
+ [ "comment", " This is JSP comment --%>" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<%@" ],
+ [ "text", " " ],
+ [ "identifier", "directive" ],
+ [ "text", " " ],
+ [ "identifier", "attribute" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"value\"" ],
+ [ "text", " " ],
+ [ "meta.tag", "%>" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "h2" ],
+ [ "meta.tag", ">" ],
+ [ "text", "Select Languages:" ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "h2" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.form", "form" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "ACTION" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"jspCheckBox.jsp\"" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.form", "input" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "type" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"checkbox\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "name" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"id\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "value" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"Java\"" ],
+ [ "meta.tag", ">" ],
+ [ "text", " Java" ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "BR" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.form", "input" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "type" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"checkbox\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "name" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"id\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "value" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\".NET\"" ],
+ [ "meta.tag", ">" ],
+ [ "text", " .NET" ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "BR" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.form", "input" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "type" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"checkbox\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "name" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"id\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "value" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"PHP\"" ],
+ [ "meta.tag", ">" ],
+ [ "text", " PHP" ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "BR" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.form", "input" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "type" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"checkbox\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "name" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"id\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "value" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"C/C++\"" ],
+ [ "meta.tag", ">" ],
+ [ "text", " C/C++" ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "BR" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.form", "input" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "type" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"checkbox\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "name" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"id\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "value" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"PERL\"" ],
+ [ "meta.tag", ">" ],
+ [ "text", " PERL " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "BR" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name.form", "input" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "type" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"submit\"" ],
+ [ "text", " " ],
+ [ "entity.other.attribute-name", "value" ],
+ [ "keyword.operator", "=" ],
+ [ "string", "\"Submit\"" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name.form", "form" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "<%" ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "support.function", "String" ],
+ [ "text", " " ],
+ [ "identifier", "select" ],
+ [ "lparen", "[" ],
+ [ "rparen", "]" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "variable.language", "request" ],
+ [ "text", "." ],
+ [ "identifier", "getParameterValues" ],
+ [ "lparen", "(" ],
+ [ "string", "\"id\"" ],
+ [ "rparen", ")" ],
+ [ "text", "; " ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "if" ],
+ [ "text", " " ],
+ [ "lparen", "(" ],
+ [ "identifier", "select" ],
+ [ "text", " " ],
+ [ "keyword.operator", "!" ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.language", "null" ],
+ [ "text", " " ],
+ [ "keyword.operator", "&" ],
+ [ "keyword.operator", "&" ],
+ [ "text", " " ],
+ [ "identifier", "select" ],
+ [ "text", "." ],
+ [ "identifier", "length" ],
+ [ "text", " " ],
+ [ "keyword.operator", "!" ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "rparen", ")" ],
+ [ "text", " " ],
+ [ "lparen", "{" ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "variable.language", "out" ],
+ [ "text", "." ],
+ [ "identifier", "println" ],
+ [ "lparen", "(" ],
+ [ "string", "\"You have selected: \"" ],
+ [ "rparen", ")" ],
+ [ "text", ";" ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "for" ],
+ [ "text", " " ],
+ [ "lparen", "(" ],
+ [ "keyword", "int" ],
+ [ "text", " " ],
+ [ "identifier", "i" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", "; " ],
+ [ "identifier", "i" ],
+ [ "text", " " ],
+ [ "keyword.operator", "<" ],
+ [ "text", " " ],
+ [ "identifier", "select" ],
+ [ "text", "." ],
+ [ "identifier", "length" ],
+ [ "text", "; " ],
+ [ "identifier", "i" ],
+ [ "keyword.operator", "++" ],
+ [ "rparen", ")" ],
+ [ "text", " " ],
+ [ "lparen", "{" ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "variable.language", "out" ],
+ [ "text", "." ],
+ [ "identifier", "println" ],
+ [ "lparen", "(" ],
+ [ "identifier", "select" ],
+ [ "lparen", "[" ],
+ [ "identifier", "i" ],
+ [ "rparen", "]" ],
+ [ "rparen", ")" ],
+ [ "text", "; " ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "rparen", "}" ]
+ ]
+ },
+ {
+ "state": "jsp-start",
+ "data": [
+ [ "text", " " ],
+ [ "rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "meta.tag", "%>" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "body" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "html" ],
+ [ "meta.tag", ">" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_lisp.json b/lib/ace/mode/_test/tokens_lisp.json
new file mode 100644
index 00000000..130a9b1b
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_lisp.json
@@ -0,0 +1,314 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "text", "(" ],
+ [ "storage.type.function-type.lisp", "defun" ],
+ [ "text", " " ],
+ [ "entity.name.function.lisp", "prompt-for-cd" ],
+ [ "text", " ()" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string", "\"Prompts" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "for" ],
+ [ "text", " " ],
+ [ "identifier", "CD" ],
+ [ "text", "\"" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "identifier", "prompt" ],
+ [ "text", "-" ],
+ [ "identifier", "read" ],
+ [ "text", " " ],
+ [ "string", "\"Title\"" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1.53" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2" ],
+ [ "text", "/" ],
+ [ "constant.numeric", "4" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1.7" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1.7e0" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2.9E-4" ],
+ [ "text", " " ],
+ [ "constant.numeric", "+42" ],
+ [ "text", " " ],
+ [ "constant.numeric", "-7" ],
+ [ "text", " " ],
+ [ "punctuation.definition.constant.character.lisp", "#" ],
+ [ "constant.character.lisp", "b001" ],
+ [ "text", " " ],
+ [ "punctuation.definition.constant.character.lisp", "#" ],
+ [ "constant.character.lisp", "b001/100" ],
+ [ "text", " " ],
+ [ "punctuation.definition.constant.character.lisp", "#" ],
+ [ "constant.character.lisp", "o777" ],
+ [ "text", " " ],
+ [ "punctuation.definition.constant.character.lisp", "#" ],
+ [ "constant.character.lisp", "O777" ],
+ [ "text", " " ],
+ [ "punctuation.definition.constant.character.lisp", "#" ],
+ [ "constant.character.lisp", "xabc55" ],
+ [ "text", " " ],
+ [ "punctuation.definition.constant.character.lisp", "#" ],
+ [ "constant.character.lisp", "c" ],
+ [ "text", "(" ],
+ [ "constant.numeric", "0" ],
+ [ "text", " " ],
+ [ "constant.numeric", "-5.6" ],
+ [ "text", "))" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "identifier", "prompt" ],
+ [ "text", "-" ],
+ [ "identifier", "read" ],
+ [ "text", " " ],
+ [ "string", "\"Artist\"" ],
+ [ "text", " &" ],
+ [ "identifier", "rest" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "keyword.operator", "or" ],
+ [ "text", " (" ],
+ [ "identifier", "parse" ],
+ [ "text", "-" ],
+ [ "identifier", "integer" ],
+ [ "text", " (" ],
+ [ "identifier", "prompt" ],
+ [ "text", "-" ],
+ [ "identifier", "read" ],
+ [ "text", " " ],
+ [ "string", "\"Rating\"" ],
+ [ "text", ") :" ],
+ [ "identifier", "junk" ],
+ [ "text", "-" ],
+ [ "identifier", "allowed" ],
+ [ "text", " " ],
+ [ "support.function", "t" ],
+ [ "text", ") " ],
+ [ "constant.numeric", "0" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "keyword.control", "if" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "text", " (" ],
+ [ "support.function", "format" ],
+ [ "text", " " ],
+ [ "support.function", "t" ],
+ [ "text", " " ],
+ [ "string", "\"yes\"" ],
+ [ "text", ") (" ],
+ [ "support.function", "format" ],
+ [ "text", " " ],
+ [ "support.function", "t" ],
+ [ "text", " " ],
+ [ "string", "\"no\"" ],
+ [ "text", " " ],
+ [ "constant.language", "nil" ],
+ [ "text", ") " ],
+ [ "comment", ";and here comment" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " ) " ],
+ [ "constant.numeric", "0xFFLL" ],
+ [ "text", " " ],
+ [ "constant.numeric", "-23ull" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", ";; second line comment" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " '(+ " ],
+ [ "constant.numeric", "1" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "identifier", "defvar" ],
+ [ "text", " " ],
+ [ "punctuation.definition.variable.lisp", "*" ],
+ [ "variable.other.global.lisp", "lines" ],
+ [ "punctuation.definition.variable.lisp", "*" ],
+ [ "text", ") " ],
+ [ "comment", "; list of all lines" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "identifier", "position" ],
+ [ "text", "-" ],
+ [ "keyword.control", "if" ],
+ [ "text", "-" ],
+ [ "identifier", "not" ],
+ [ "text", " " ],
+ [ "punctuation.definition.constant.character.lisp", "#" ],
+ [ "constant.character.lisp", "'sys::whitespacep" ],
+ [ "text", " " ],
+ [ "identifier", "line" ],
+ [ "text", " :" ],
+ [ "identifier", "start" ],
+ [ "text", " " ],
+ [ "identifier", "beg" ],
+ [ "text", "))" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "support.function", "quote" ],
+ [ "text", " (" ],
+ [ "identifier", "privet" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2" ],
+ [ "text", " " ],
+ [ "constant.numeric", "3" ],
+ [ "text", "))" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " '(" ],
+ [ "identifier", "hello" ],
+ [ "text", " " ],
+ [ "identifier", "world" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (* " ],
+ [ "constant.numeric", "5" ],
+ [ "text", " " ],
+ [ "constant.numeric", "7" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "constant.numeric", "1" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2" ],
+ [ "text", " " ],
+ [ "constant.numeric", "34" ],
+ [ "text", " " ],
+ [ "constant.numeric", "5" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (:" ],
+ [ "identifier", "use" ],
+ [ "text", " " ],
+ [ "string", "\"aaaa\"" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "keyword.control", "let" ],
+ [ "text", " ((" ],
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "constant.numeric", "10" ],
+ [ "text", ") (" ],
+ [ "identifier", "y" ],
+ [ "text", " " ],
+ [ "constant.numeric", "20" ],
+ [ "text", "))" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "identifier", "print" ],
+ [ "text", " (+ " ],
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "identifier", "y" ],
+ [ "text", "))" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " ) " ],
+ [ "support.function", "LAmbDa" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string", "\"asdad" ],
+ [ "constant.character.escape.lisp", "\\0" ],
+ [ "string", "eqweqe\"" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_lucene.json b/lib/ace/mode/_test/tokens_lucene.json
new file mode 100644
index 00000000..86a23089
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_lucene.json
@@ -0,0 +1,21 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "paren.lparen", "(" ],
+ [ "keyword", "title:" ],
+ [ "string", "\"foo bar\"" ],
+ [ "text", " " ],
+ [ "keyword.operator", "AND" ],
+ [ "text", " " ],
+ [ "keyword", "body:" ],
+ [ "string", "\"quick fox\"" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "keyword.operator", "OR" ],
+ [ "text", " " ],
+ [ "keyword", "title:" ],
+ [ "text", "fox" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_objectivec.json b/lib/ace/mode/_test/tokens_objectivec.json
new file mode 100644
index 00000000..107cdf63
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_objectivec.json
@@ -0,0 +1,1095 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.objc", "@" ],
+ [ "punctuation.definition.storage.type.objc", "protocol" ],
+ [ "entity.name.type.objc", " Printing" ],
+ [ "text", ": " ],
+ [ "entity.other.inherited-class.objc", "someParent" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.function.objc", "-" ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type", "void" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "identifier", "print" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.objc", "@end" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.objc", "@" ],
+ [ "punctuation.definition.storage.type.objc", "interface" ],
+ [ "entity.name.type.objc", " Fraction" ],
+ [ "text", ": " ],
+ [ "entity.other.inherited-class.objc", "NSObject" ],
+ [ "text", " " ],
+ [ "keyword.operator", "<" ],
+ [ "identifier", "Printing" ],
+ [ "punctuation.operator", "," ],
+ [ "text", " " ],
+ [ "support.class.cocoa", "NSCopying" ],
+ [ "keyword.operator", ">" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type", "int" ],
+ [ "text", " " ],
+ [ "identifier", "numerator" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type", "int" ],
+ [ "text", " " ],
+ [ "identifier", "denominator" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.objc", "@end" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "blah" ],
+ [ "invalid.illegal.unknown-escape.objc", "\\8" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "a" ],
+ [ "constant.character.escape.objc", "\\222" ],
+ [ "string", "sd" ],
+ [ "invalid.illegal.unknown-escape.objc", "\\d" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "string.begin.objc", "@\"" ],
+ [ "constant.character.escape.objc", "\\f" ],
+ [ "string", "aw" ],
+ [ "constant.character.escape.objc", "\\\"" ],
+ [ "constant.character.escape.objc", "\\?" ],
+ [ "string", " " ],
+ [ "constant.character.escape.objc", "\\'" ],
+ [ "string", " " ],
+ [ "constant.character.escape.objc", "\\4" ],
+ [ "string", " n" ],
+ [ "constant.character.escape.objc", "\\\\" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "string.begin.objc", "@\"" ],
+ [ "constant.character.escape.objc", "\\56" ],
+ [ "punctuation.definition.string.end", "\"" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string.begin.objc", "@\"" ],
+ [ "constant.character.escape.objc", "\\xSF42" ],
+ [ "punctuation.definition.string.end", "\"" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.function.objc", "-" ],
+ [ "paren.lparen", "(" ],
+ [ "support.class.cocoa", "NSDecimalNumber" ],
+ [ "keyword.operator", "*" ],
+ [ "paren.rparen", ")" ],
+ [ "identifier", "addCount" ],
+ [ "punctuation.operator", ":" ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type.id.objc", "id" ],
+ [ "paren.rparen", ")" ],
+ [ "identifier", "addObject" ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.control", "return" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "identifier", "count" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "decimalNumberByAdding:" ],
+ [ "identifier", "addObject" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "count" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.control.macro.objc", "NS_DURING" ],
+ [ "text", " " ],
+ [ "keyword.control.macro.objc", "NS_HANDLER" ],
+ [ "text", " " ],
+ [ "keyword.control.macro.objc", "NS_ENDHANDLER" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.keyword.objc", "@" ],
+ [ "keyword.control.exception.objc", "try" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.control", "if" ],
+ [ "text", " " ],
+ [ "paren.lparen", "(" ],
+ [ "identifier", "argc" ],
+ [ "text", " " ],
+ [ "keyword.operator", ">" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "punctuation.definition.keyword.objc", "@" ],
+ [ "keyword.control.exception.objc", "throw" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSException" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "exceptionWithName:" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "Throwing a test exception" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "identifier", "reason" ],
+ [ "punctuation.operator", ":" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "Testing the @throw directive." ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "identifier", "userInfo" ],
+ [ "punctuation.operator", ":" ],
+ [ "constant.language.objc", "nil" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.keyword.objc", "@" ],
+ [ "keyword.control.exception.objc", "catch" ],
+ [ "text", " " ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type.id.objc", "id" ],
+ [ "text", " " ],
+ [ "identifier", "theException" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.function.cocoa", "NSLog" ],
+ [ "paren.lparen", "(" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "%@" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "punctuation.operator", "," ],
+ [ "text", " " ],
+ [ "identifier", "theException" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "result" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "text", " " ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.keyword.objc", "@" ],
+ [ "keyword.control.exception.objc", "finally" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.function.cocoa", "NSLog" ],
+ [ "paren.lparen", "(" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "This always happens." ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "result" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2" ],
+ [ "text", " " ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "punctuation.definition.storage.modifier.objc", "@" ],
+ [ "storage.modifier.objc", "synchronized" ],
+ [ "paren.lparen", "(" ],
+ [ "identifier", "lock" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.function.cocoa", "NSLog" ],
+ [ "paren.lparen", "(" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "Hello World" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type", "struct" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ],
+ [ "text", " " ],
+ [ "punctuation.definition.keyword.objc", "@" ],
+ [ "keyword.other.objc", "defs" ],
+ [ "paren.lparen", "(" ],
+ [ "text", " " ],
+ [ "support.class.cocoa", "NSObject" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type", "char" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "enc1" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.definition.keyword.objc", "@" ],
+ [ "keyword.other.objc", "encode" ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type", "int" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.objc", "IBOutlet" ],
+ [ "text", "|" ],
+ [ "storage.type.objc", "IBAction" ],
+ [ "text", "|" ],
+ [ "storage.type.objc", "BOOL" ],
+ [ "text", "|" ],
+ [ "storage.type.objc", "SEL" ],
+ [ "text", "|" ],
+ [ "storage.type.id.objc", "id" ],
+ [ "text", "|" ],
+ [ "storage.type.objc", "unichar" ],
+ [ "text", "|" ],
+ [ "storage.type.objc", "IMP" ],
+ [ "text", "|" ],
+ [ "storage.type.objc", "Class" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "punctuation.definition.storage.type.objc", "@" ],
+ [ "storage.type.objc", "class" ],
+ [ "text", " " ],
+ [ "punctuation.definition.storage.type.objc", "@" ],
+ [ "storage.type.objc", "protocol" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.storage.modifier.objc", "@" ],
+ [ "storage.modifier.objc", "public" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// instance variables" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.storage.modifier.objc", "@" ],
+ [ "storage.modifier.objc", "package" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// instance variables" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.storage.modifier.objc", "@" ],
+ [ "storage.modifier.objc", "protected" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// instance variables" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.storage.modifier.objc", "@" ],
+ [ "storage.modifier.objc", "private" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// instance variables" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "constant.language.objc", "YES" ],
+ [ "text", " " ],
+ [ "constant.language.objc", "NO" ],
+ [ "text", " " ],
+ [ "constant.language.objc", "Nil" ],
+ [ "text", " " ],
+ [ "constant.language.objc", "nil" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.variable.foundation", "NSApp" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.function.cocoa.leopard", "NSRectToCGRect" ],
+ [ "text", " " ],
+ [ "paren.lparen", "(" ],
+ [ "identifier", "Protocol" ],
+ [ "text", " " ],
+ [ "identifier", "ProtocolFromString" ],
+ [ "punctuation.operator", ":" ],
+ [ "string", "\"NSTableViewDelegate\"" ],
+ [ "paren.rparen", ")" ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "identifier", "SPPoint" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "pointFromCGPoint:" ],
+ [ "identifier", "self" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "position" ],
+ [ "paren.rparen", "]" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.function.cocoa", "NSRoundDownToMultipleOfPageSize" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "#import" ],
+ [ "text", " " ],
+ [ "constant", "" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type", "int" ],
+ [ "text", " " ],
+ [ "identifier", "main" ],
+ [ "paren.lparen", "(" ],
+ [ "text", " " ],
+ [ "storage.type", "int" ],
+ [ "text", " " ],
+ [ "identifier", "argc" ],
+ [ "punctuation.operator", "," ],
+ [ "text", " " ],
+ [ "storage.modifier", "const" ],
+ [ "text", " " ],
+ [ "storage.type", "char" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "argv" ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "punctuation.section.scope.end.objc", "]" ],
+ [ "text", " " ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.function.C99.c", "printf" ],
+ [ "paren.lparen", "(" ],
+ [ "text", " " ],
+ [ "string", "\"hello world\\n\"" ],
+ [ "text", " " ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.control", "return" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.class.cocoa", "NSChangeSpelling" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "0 != SUBQUERY(image, $x, 0 != SUBQUERY($x.bookmarkItems, $y, $y.@count == 0).@count).@count" ],
+ [ "punctuation.definition.string.end", "\"" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.definition.storage.type.objc", "@" ],
+ [ "punctuation.definition.storage.type.objc", "selector" ],
+ [ "punctuation", "(" ],
+ [ "support.function.any-method.name-of-parameter.objc", "lowercaseString" ],
+ [ "punctuation", ")" ],
+ [ "text", " " ],
+ [ "punctuation.definition.storage.type.objc", "@" ],
+ [ "punctuation.definition.storage.type.objc", "selector" ],
+ [ "punctuation", "(" ],
+ [ "support.function.any-method.name-of-parameter.objc", "uppercaseString:" ],
+ [ "punctuation", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "NSFetchRequest" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "localRequest" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "identifier", "NSFetchRequest" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "alloc" ],
+ [ "paren.rparen", "]" ],
+ [ "text", " " ],
+ [ "identifier", "init" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "localRequest" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "entity" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "identifier", "NSEntityDescription" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "entityForName:" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "VNSource" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "identifier", "inManagedObjectContext" ],
+ [ "punctuation.operator", ":" ],
+ [ "identifier", "context" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "localRequest" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "sortDescriptors" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSArray" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "arrayWithObject:" ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSSortDescriptor" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "sortDescriptorWithKey:" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "resolution" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "identifier", "ascending" ],
+ [ "punctuation.operator", ":" ],
+ [ "constant.language.objc", "YES" ],
+ [ "paren.rparen", "]" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.class.cocoa", "NSPredicate" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "predicate" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSPredicate" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "predicateWithFormat:" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "0 != SUBQUERY(image, $x, 0 != SUBQUERY($x.bookmarkItems, $y, $y.@count == 0).@count).@count" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSPredicate" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "predicateWithFormat:" ],
+ [ "paren.rparen", "]" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.class.cocoa", "NSString" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "predicateString" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSString" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "stringWithFormat:" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "SELF beginsWith[cd] %@" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "punctuation.operator", "," ],
+ [ "text", " " ],
+ [ "identifier", "searchString" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.class.cocoa", "NSPredicate" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "pred" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSPredicate" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "predicateWithFormat:" ],
+ [ "identifier", "predicateString" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "support.class.cocoa", "NSArray" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "filteredKeys" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "identifier", "myMutableDictionary" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "allKeys" ],
+ [ "paren.rparen", "]" ],
+ [ "text", " " ],
+ [ "identifier", "filteredArrayUsingPredicate" ],
+ [ "punctuation.operator", ":" ],
+ [ "identifier", "pred" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "localRequest" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "predicate" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "support.class.cocoa", "NSPredicate" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "predicateWithFormat:" ],
+ [ "string.begin.objc", "@\"" ],
+ [ "string", "whichChart = %@" ],
+ [ "punctuation.definition.string.end", "\"" ],
+ [ "text", " " ],
+ [ "identifier", "argumentArray" ],
+ [ "punctuation.operator", ":" ],
+ [ "text", " " ],
+ [ "identifier", "listChartToDownload" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "localRequest" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "fetchBatchSize" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "100" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "arrayRequest" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "identifier", "context" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "executeFetchRequest:" ],
+ [ "identifier", "localRequest" ],
+ [ "text", " " ],
+ [ "identifier", "error" ],
+ [ "punctuation.operator", ":" ],
+ [ "keyword.operator", "&" ],
+ [ "identifier", "error1" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "punctuation.section.scope.begin.objc", "[" ],
+ [ "identifier", "localRequest" ],
+ [ "text", " " ],
+ [ "support.function.any-method.objc", "release" ],
+ [ "paren.rparen", "]" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "#ifndef" ],
+ [ "text", " " ],
+ [ "constant.language.objc", "Nil" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "#define" ],
+ [ "text", " " ],
+ [ "constant.language.objc", "Nil" ],
+ [ "text", " " ],
+ [ "identifier", "__DARWIN_NULL" ],
+ [ "text", " " ],
+ [ "comment", "/*" ],
+ [ "comment", " id of Nil class */" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "#endif" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.objc", "@implementation" ],
+ [ "entity.name.type.objc", " MyObject" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.function.objc", "- " ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type", "unsigned" ],
+ [ "text", " " ],
+ [ "storage.type", "int" ],
+ [ "paren.rparen", ")" ],
+ [ "identifier", "areaOfWidth" ],
+ [ "punctuation.operator", ":" ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type", "unsigned" ],
+ [ "text", " " ],
+ [ "storage.type", "int" ],
+ [ "paren.rparen", ")" ],
+ [ "identifier", "width" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "height" ],
+ [ "punctuation.operator", ":" ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type", "unsigned" ],
+ [ "text", " " ],
+ [ "storage.type", "int" ],
+ [ "paren.rparen", ")" ],
+ [ "identifier", "height" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.control", "return" ],
+ [ "text", " " ],
+ [ "identifier", "width" ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "height" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type.objc", "@end" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_r.json b/lib/ace/mode/_test/tokens_r.json
new file mode 100644
index 00000000..c0c784e3
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_r.json
@@ -0,0 +1,305 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "Call" ],
+ [ "keyword.operator", ":" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "lm" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "identifier", "formula" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "identifier", "y" ],
+ [ "text", " " ],
+ [ "keyword.operator", "~" ],
+ [ "text", " " ],
+ [ "identifier", "x" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "Residuals" ],
+ [ "keyword.operator", ":" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", "1" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2" ],
+ [ "text", " " ],
+ [ "constant.numeric", "3" ],
+ [ "text", " " ],
+ [ "constant.numeric", "4" ],
+ [ "text", " " ],
+ [ "constant.numeric", "5" ],
+ [ "text", " " ],
+ [ "constant.numeric", "6" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.numeric", "3.3333" ],
+ [ "text", " " ],
+ [ "keyword.operator", "-" ],
+ [ "constant.numeric", "0.6667" ],
+ [ "text", " " ],
+ [ "keyword.operator", "-" ],
+ [ "constant.numeric", "2.6667" ],
+ [ "text", " " ],
+ [ "keyword.operator", "-" ],
+ [ "constant.numeric", "2.6667" ],
+ [ "text", " " ],
+ [ "keyword.operator", "-" ],
+ [ "constant.numeric", "0.6667" ],
+ [ "text", " " ],
+ [ "constant.numeric", "3.3333" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "Coefficients" ],
+ [ "keyword.operator", ":" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "Estimate" ],
+ [ "text", " " ],
+ [ "identifier", "Std" ],
+ [ "text", ". " ],
+ [ "identifier", "Error" ],
+ [ "text", " " ],
+ [ "identifier", "t" ],
+ [ "text", " " ],
+ [ "identifier", "value" ],
+ [ "text", " " ],
+ [ "identifier", "Pr" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "keyword.operator", ">" ],
+ [ "keyword.operator", "|" ],
+ [ "identifier", "t" ],
+ [ "keyword.operator", "|" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "(" ],
+ [ "identifier", "Intercept" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", " " ],
+ [ "keyword.operator", "-" ],
+ [ "constant.numeric", "9.3333" ],
+ [ "text", " " ],
+ [ "constant.numeric", "2.8441" ],
+ [ "text", " " ],
+ [ "keyword.operator", "-" ],
+ [ "constant.numeric", "3.282" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0.030453" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "x" ],
+ [ "text", " " ],
+ [ "constant.numeric", "7.0000" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0.7303" ],
+ [ "text", " " ],
+ [ "constant.numeric", "9.585" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0.000662" ],
+ [ "text", " " ],
+ [ "keyword.operator", "*" ],
+ [ "keyword.operator", "*" ],
+ [ "keyword.operator", "*" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.operator", "-" ],
+ [ "keyword.operator", "-" ],
+ [ "keyword.operator", "-" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "Signif" ],
+ [ "text", ". " ],
+ [ "identifier", "codes" ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", " ‘" ],
+ [ "keyword.operator", "*" ],
+ [ "keyword.operator", "*" ],
+ [ "keyword.operator", "*" ],
+ [ "text", "’ " ],
+ [ "constant.numeric", "0.001" ],
+ [ "text", " ‘" ],
+ [ "keyword.operator", "*" ],
+ [ "keyword.operator", "*" ],
+ [ "text", "’ " ],
+ [ "constant.numeric", "0.01" ],
+ [ "text", " ‘" ],
+ [ "keyword.operator", "*" ],
+ [ "text", "’ " ],
+ [ "constant.numeric", "0.05" ],
+ [ "text", " ‘.’ " ],
+ [ "constant.numeric", "0.1" ],
+ [ "text", " ‘ ’ " ],
+ [ "constant.numeric", "1" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "Residual" ],
+ [ "text", " " ],
+ [ "identifier", "standard" ],
+ [ "text", " " ],
+ [ "identifier", "error" ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "constant.numeric", "3.055" ],
+ [ "text", " " ],
+ [ "identifier", "on" ],
+ [ "text", " " ],
+ [ "constant.numeric", "4" ],
+ [ "text", " " ],
+ [ "identifier", "degrees" ],
+ [ "text", " " ],
+ [ "identifier", "of" ],
+ [ "text", " " ],
+ [ "identifier", "freedom" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "Multiple" ],
+ [ "text", " " ],
+ [ "identifier", "R" ],
+ [ "keyword.operator", "-" ],
+ [ "identifier", "squared" ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0.9583" ],
+ [ "text", ", " ],
+ [ "identifier", "Adjusted" ],
+ [ "text", " " ],
+ [ "identifier", "R" ],
+ [ "keyword.operator", "-" ],
+ [ "identifier", "squared" ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0.9478" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "constant.language.boolean", "F" ],
+ [ "keyword.operator", "-" ],
+ [ "identifier", "statistic" ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "constant.numeric", "91.88" ],
+ [ "text", " " ],
+ [ "identifier", "on" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "text", " " ],
+ [ "identifier", "and" ],
+ [ "text", " " ],
+ [ "constant.numeric", "4" ],
+ [ "text", " " ],
+ [ "identifier", "DF" ],
+ [ "text", ", " ],
+ [ "identifier", "p" ],
+ [ "keyword.operator", "-" ],
+ [ "identifier", "value" ],
+ [ "keyword.operator", ":" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0.000662" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.operator", ">" ],
+ [ "text", " " ],
+ [ "identifier", "par" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "identifier", "mfrow" ],
+ [ "keyword.operator", "=" ],
+ [ "identifier", "c" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "constant.numeric", "2" ],
+ [ "text", ", " ],
+ [ "constant.numeric", "2" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", " " ],
+ [ "comment", "# Request 2x2 plot layout" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.operator", ">" ],
+ [ "text", " " ],
+ [ "identifier", "plot" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "identifier", "lm_1" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", " " ],
+ [ "comment", "# Diagnostic plot of regression model" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_rdoc.json b/lib/ace/mode/_test/tokens_rdoc.json
new file mode 100644
index 00000000..41545f26
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_rdoc.json
@@ -0,0 +1,721 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\name" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "picker" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\alias" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "picker" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\title" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "text", "Create a picker control" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\description" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " Create a picker control to enable manipulation of plot variables based on a set of fixed choices." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "keyword", "\\usage" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", "picker" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "text", "...," ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "initial" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "NULL" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "label" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "NULL" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\arguments" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\item" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\dots" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " Arguments containing objects to be presented as choices for the picker " ],
+ [ "paren.keyword.operator", "(" ],
+ [ "text", "or a list containing the choices" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", ". If an element is named then the name is used to display it within the picker. If an element is not named then it is displayed within the picker using " ],
+ [ "keyword", "\\code" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\link" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "as" ],
+ [ "text", "." ],
+ [ "nospell.text", "character" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", ". " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\item" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "initial" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " Initial value for picker. Value must be present in the list of choices specified. If not specified defaults to the first choice." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\item" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "label" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " Display label for picker. Defaults to the variable name if not specified." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\value" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " An object of class \"manipulator.picker\" which can be passed to the " ],
+ [ "keyword", "\\code" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\link" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "manipulate" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", " function." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\seealso" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\code" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\link" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "manipulate" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", ", " ],
+ [ "keyword", "\\code" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\link" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "slider" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", ", " ],
+ [ "keyword", "\\code" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\link" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "checkbox" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", ", " ],
+ [ "keyword", "\\code" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\link" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "button" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "keyword", "\\examples" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "keyword", "\\dontrun" ],
+ [ "paren.keyword.operator", "{" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": []
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "text", "##" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "Filtering" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "data" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "with" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "a" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "picker" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", "manipulate" ],
+ [ "paren.keyword.operator", "(" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "barplot" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "nospell.text", "as" ],
+ [ "text", "." ],
+ [ "nospell.text", "matrix" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "nospell.text", "longley" ],
+ [ "paren.keyword.operator", "[" ],
+ [ "text", "," ],
+ [ "nospell.text", "factor" ],
+ [ "paren.keyword.operator", "]" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "beside" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "TRUE" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "main" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "factor" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", "," ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "factor" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "picker" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "text", "\"" ],
+ [ "nospell.text", "GNP" ],
+ [ "text", "\"," ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "Unemployed" ],
+ [ "text", "\"," ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "Employed" ],
+ [ "text", "\"" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": []
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "text", "##" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "Create" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "a" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "picker" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "with" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "labels" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", "manipulate" ],
+ [ "paren.keyword.operator", "(" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "plot" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "nospell.text", "pressure" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "type" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "type" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "type" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "picker" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "text", "\"" ],
+ [ "nospell.text", "points" ],
+ [ "text", "\"" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "p" ],
+ [ "text", "\"," ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "line" ],
+ [ "text", "\"" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "l" ],
+ [ "text", "\"," ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "step" ],
+ [ "text", "\"" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "s" ],
+ [ "text", "\"" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "text", "##" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "Picker" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "with" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "groups" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", "manipulate" ],
+ [ "paren.keyword.operator", "(" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "barplot" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "nospell.text", "as" ],
+ [ "text", "." ],
+ [ "nospell.text", "matrix" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "nospell.text", "mtcars" ],
+ [ "paren.keyword.operator", "[" ],
+ [ "nospell.text", "group" ],
+ [ "text", ",\"" ],
+ [ "nospell.text", "mpg" ],
+ [ "text", "\"" ],
+ [ "paren.keyword.operator", "]" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "beside" ],
+ [ "text", "=" ],
+ [ "nospell.text", "TRUE" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", "," ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "group" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "picker" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "text", "\"" ],
+ [ "nospell.text", "Group" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "1" ],
+ [ "text", "\"" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "1" ],
+ [ "text", ":" ],
+ [ "nospell.text", "11" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "Group" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "2" ],
+ [ "text", "\"" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "12" ],
+ [ "text", ":" ],
+ [ "nospell.text", "22" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "Group" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "3" ],
+ [ "text", "\"" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "23" ],
+ [ "text", ":" ],
+ [ "nospell.text", "32" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": []
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "text", "##" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "Histogram" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "w" ],
+ [ "text", "/" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "picker" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "to" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "select" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "type" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", "require" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "nospell.text", "lattice" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", "require" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "nospell.text", "stats" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", "manipulate" ],
+ [ "paren.keyword.operator", "(" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "histogram" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "text", "~" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "height" ],
+ [ "nospell.text", " " ],
+ [ "text", "|" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "voice" ],
+ [ "text", "." ],
+ [ "nospell.text", "part" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "data" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "singer" ],
+ [ "text", "," ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "type" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "type" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "text", "," ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": [
+ [ "nospell.text", " " ],
+ [ "nospell.text", "type" ],
+ [ "nospell.text", " " ],
+ [ "text", "=" ],
+ [ "nospell.text", " " ],
+ [ "nospell.text", "picker" ],
+ [ "paren.keyword.operator", "(" ],
+ [ "text", "\"" ],
+ [ "nospell.text", "percent" ],
+ [ "text", "\"," ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "count" ],
+ [ "text", "\"," ],
+ [ "nospell.text", " " ],
+ [ "text", "\"" ],
+ [ "nospell.text", "density" ],
+ [ "text", "\"" ],
+ [ "paren.keyword.operator", ")" ],
+ [ "paren.keyword.operator", ")" ]
+ ]
+ },
+ {
+ "state": "nospell",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.keyword.operator", "}" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_rhtml.json b/lib/ace/mode/_test/tokens_rhtml.json
new file mode 100644
index 00000000..d25a1077
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_rhtml.json
@@ -0,0 +1,168 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "html" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "head" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "title" ],
+ [ "meta.tag", ">" ],
+ [ "text", "Title" ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "title" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "head" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "body" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "p" ],
+ [ "meta.tag", ">" ],
+ [ "text", "This is an R HTML document. When you click the " ],
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "b" ],
+ [ "meta.tag", ">" ],
+ [ "text", "Knit HTML" ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "b" ],
+ [ "meta.tag", ">" ],
+ [ "text", " button a web page will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:" ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "p" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "r-start",
+ "data": [
+ [ "support.function.codebegin", "" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "<" ],
+ [ "meta.tag.tag-name", "p" ],
+ [ "meta.tag", ">" ],
+ [ "text", "You can also embed plots, for example:" ],
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "p" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "r-start",
+ "data": [
+ [ "support.function.codebegin", "" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "body" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "meta.tag", "" ],
+ [ "meta.tag.tag-name", "html" ],
+ [ "meta.tag", ">" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_ruby.json b/lib/ace/mode/_test/tokens_ruby.json
index 02160407..ee4106b7 100644
--- a/lib/ace/mode/_test/tokens_ruby.json
+++ b/lib/ace/mode/_test/tokens_ruby.json
@@ -92,7 +92,7 @@
[ "text", " " ],
[ "identifier", "fact" ],
[ "paren.lparen", "(" ],
- [ "variable.class", "ARGV" ],
+ [ "support.class", "ARGV" ],
[ "paren.lparen", "[" ],
[ "constant.numeric", "0" ],
[ "paren.rparen", "]" ],
@@ -100,5 +100,121 @@
[ "identifier", "to_i" ],
[ "paren.rparen", ")" ]
]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "class" ],
+ [ "text", " " ],
+ [ "support.class", "Range" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "def" ],
+ [ "text", " " ],
+ [ "identifier", "to_json" ],
+ [ "paren.lparen", "(" ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "a" ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string", "'json_class'" ],
+ [ "text", " " ],
+ [ "punctuation.separator.key-value", "=>" ],
+ [ "text", " " ],
+ [ "variable.language", "self" ],
+ [ "text", "." ],
+ [ "keyword", "class" ],
+ [ "text", "." ],
+ [ "identifier", "name" ],
+ [ "text", ", " ],
+ [ "comment", "# = 'Range'" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string", "'data'" ],
+ [ "text", " " ],
+ [ "punctuation.separator.key-value", "=>" ],
+ [ "text", " " ],
+ [ "paren.lparen", "[" ],
+ [ "text", " " ],
+ [ "identifier", "first" ],
+ [ "text", ", " ],
+ [ "identifier", "last" ],
+ [ "text", ", " ],
+ [ "identifier", "exclude_end" ],
+ [ "text", "? " ],
+ [ "paren.rparen", "]" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ],
+ [ "text", "." ],
+ [ "identifier", "to_json" ],
+ [ "paren.lparen", "(" ],
+ [ "keyword.operator", "*" ],
+ [ "identifier", "a" ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "end" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "end" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.lparen", "{" ],
+ [ "constant.other.symbol.ruby", ":id" ],
+ [ "text", " " ],
+ [ "punctuation.separator.key-value", "=>" ],
+ [ "text", " " ],
+ [ "constant.numeric", "34" ],
+ [ "text", ", " ],
+ [ "constant.other.symbol.ruby", ":sdfasdfasdf" ],
+ [ "text", " " ],
+ [ "punctuation.separator.key-value", "=>" ],
+ [ "text", " " ],
+ [ "string", "\"asdasdads\"" ],
+ [ "paren.rparen", "}" ]
+ ]
}
]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_sh.json b/lib/ace/mode/_test/tokens_sh.json
index 582282fb..8db30226 100644
--- a/lib/ace/mode/_test/tokens_sh.json
+++ b/lib/ace/mode/_test/tokens_sh.json
@@ -110,7 +110,7 @@
[ "text", " " ],
[ "variable", "repo=" ],
[ "text", "`" ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "variable", "$remote" ],
[ "text", " | " ],
@@ -131,7 +131,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "variable", "$repo" ],
[ "text", " | " ],
@@ -152,7 +152,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "exit" ],
+ [ "support.function.builtin", "exit" ],
[ "text", " " ],
[ "constant.numeric", "1" ]
]
@@ -172,7 +172,7 @@
[ "text", " " ],
[ "variable", "repo=" ],
[ "text", "`" ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "variable", "$remote" ],
[ "text", " | " ],
@@ -193,7 +193,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "variable", "$repo" ],
[ "text", " | " ],
@@ -219,7 +219,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "exit" ],
+ [ "support.function.builtin", "exit" ],
[ "text", " " ],
[ "constant.numeric", "1" ]
]
@@ -239,7 +239,7 @@
[ "text", " " ],
[ "variable", "repo=" ],
[ "text", "`" ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "variable", "$remote" ],
[ "text", " | " ],
@@ -260,7 +260,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "variable", "$repo" ],
[ "text", " | " ],
@@ -281,7 +281,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "exit" ],
+ [ "support.function.builtin", "exit" ],
[ "text", " " ],
[ "constant.numeric", "1" ]
]
@@ -328,7 +328,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "string", "\"Couldn't find a valid remote\"" ],
[ "text", " " ],
@@ -340,7 +340,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "exit" ],
+ [ "support.function.builtin", "exit" ],
[ "text", " " ],
[ "constant.numeric", "1" ]
]
@@ -401,7 +401,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "echo" ],
+ [ "support.function.builtin", "echo" ],
[ "text", " " ],
[ "string", "\"http://github.com/$repo/pull/new/${branch##refs/heads/}\"" ]
]
@@ -416,7 +416,7 @@
"state": "start",
"data": [
[ "text", " " ],
- [ "constant.language", "exit" ],
+ [ "support.function.builtin", "exit" ],
[ "text", " " ],
[ "constant.numeric", "1" ]
]
diff --git a/lib/ace/mode/_test/tokens_stylus.json b/lib/ace/mode/_test/tokens_stylus.json
new file mode 100644
index 00000000..d2816fad
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_stylus.json
@@ -0,0 +1,428 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "comment", "// I'm a comment!" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "comment",
+ "data": [
+ [ "comment", "/*" ]
+ ]
+ },
+ {
+ "state": "comment",
+ "data": [
+ [ "comment", " * Adds the given numbers together." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "comment", " */" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "comment",
+ "data": [
+ [ "comment", "/*!" ]
+ ]
+ },
+ {
+ "state": "comment",
+ "data": [
+ [ "comment", " * Adds the given numbers together." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "comment", " */" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.function.stylus", "asdasdasdad" ],
+ [ "text", "(df, ad" ],
+ [ "keyword.operator.stylus", "=" ],
+ [ "constant.numeric", "23" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.function.stylus", "add" ],
+ [ "text", "(" ],
+ [ "entity.name.tag.stylus", "a" ],
+ [ "text", ", " ],
+ [ "entity.name.tag.stylus", "b" ],
+ [ "text", " " ],
+ [ "keyword.operator.stylus", "=" ],
+ [ "text", " " ],
+ [ "entity.name.tag.stylus", "a" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "entity.name.tag.stylus", "a" ],
+ [ "text", " " ],
+ [ "keyword.operator.stylus", "+" ],
+ [ "text", " " ],
+ [ "entity.name.tag.stylus", "b" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.name.function.stylus", "green" ],
+ [ "text", "(" ],
+ [ "constant.numeric", "#0c0" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " add(" ],
+ [ "constant.numeric", "10" ],
+ [ "text", ", " ],
+ [ "constant.numeric", "5" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "// => 15" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " add(" ],
+ [ "constant.numeric", "10" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " add(" ],
+ [ "entity.name.tag.stylus", "a" ],
+ [ "text", ", " ],
+ [ "entity.name.tag.stylus", "b" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.language.stylus", " &" ],
+ [ "text", "asdasd" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " (" ],
+ [ "variable.language.stylus", "arguments" ],
+ [ "text", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.stylus", "@sdfsdf" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.other.attribute-name.class.stylus", ".signatures" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "background-color" ],
+ [ "text", " " ],
+ [ "constant.numeric", "#e0e8e0" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "border" ],
+ [ "text", " " ],
+ [ "constant.numeric", "1" ],
+ [ "keyword", "px" ],
+ [ "text", " " ],
+ [ "keyword", "s" ],
+ [ "text", "olid grayLighter" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "box-shadow" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", " " ],
+ [ "constant.numeric", "3" ],
+ [ "keyword", "px" ],
+ [ "text", " grayLightest" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "border-radius" ],
+ [ "text", " " ],
+ [ "constant.numeric", "3" ],
+ [ "keyword", "px" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "padding" ],
+ [ "text", " " ],
+ [ "constant.numeric", "3" ],
+ [ "keyword", "px" ],
+ [ "text", " " ],
+ [ "constant.numeric", "5" ],
+ [ "keyword", "px" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "string", "\"adsads\"" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "margin-left" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "list-style" ],
+ [ "text", " " ],
+ [ "support.constant", "none" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.other.attribute-name.class.stylus", ".signature" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "list-style" ],
+ [ "text", " " ],
+ [ "support.constant", "none" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "display" ],
+ [ "text", ": " ],
+ [ "keyword", "in" ],
+ [ "support.constant", "line" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "margin-left" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.stylus", ">" ],
+ [ "text", " " ],
+ [ "entity.name.tag.stylus", "li" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "display" ],
+ [ "text", " " ],
+ [ "keyword", "in" ],
+ [ "support.constant", "line" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.operator.stylus", "is" ],
+ [ "text", " " ],
+ [ "keyword.operator.stylus", "not" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.other.attribute-name.class.stylus", ".signature-values" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "list-style" ],
+ [ "text", " " ],
+ [ "support.constant", "none" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "display" ],
+ [ "text", " " ],
+ [ "keyword", "in" ],
+ [ "support.constant", "line" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "margin-left" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "entity.language.stylus", " &" ],
+ [ "punctuation", ":" ],
+ [ "entity.other.attribute-name.pseudo-element.css", "before" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "content" ],
+ [ "text", " " ],
+ [ "string", "'→'" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "support.type", "margin" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "text", " " ],
+ [ "constant.numeric", "5" ],
+ [ "keyword", "px" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.stylus", ">" ],
+ [ "text", " " ],
+ [ "entity.name.tag.stylus", "li" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.control.stylus", "!important" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.control.stylus", "unless" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_svg.json b/lib/ace/mode/_test/tokens_svg.json
index ed1beb9b..bba445bc 100644
--- a/lib/ace/mode/_test/tokens_svg.json
+++ b/lib/ace/mode/_test/tokens_svg.json
@@ -637,6 +637,7 @@
[ "text", " " ],
[ "paren.rparen", "]" ],
[ "paren.rparen", "]" ],
+ [ "keyword.operator", ">" ],
[ "meta.tag", "" ],
[ "meta.tag.tag-name", "script" ],
[ "meta.tag", ">" ]
diff --git a/lib/ace/mode/_test/tokens_tcl.json b/lib/ace/mode/_test/tokens_tcl.json
index 2f13af3e..4d59cf8e 100644
--- a/lib/ace/mode/_test/tokens_tcl.json
+++ b/lib/ace/mode/_test/tokens_tcl.json
@@ -41,7 +41,7 @@
[ "paren.rparen", "}" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "graph" ],
+ [ "variable.instance", "graph" ],
[ "text", " " ],
[ "paren.lparen", "{" ]
]
@@ -57,7 +57,7 @@
[ "identifier", "dist" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "vertex" ],
+ [ "variable.instance", "vertex" ],
[ "text", " " ],
[ "identifier", "Inf" ]
]
@@ -73,7 +73,7 @@
[ "identifier", "path" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "vertex" ],
+ [ "variable.instance", "vertex" ],
[ "text", " " ],
[ "paren.lparen", "{" ],
[ "text", "}" ]
@@ -96,7 +96,7 @@
[ "identifier", "dist" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "origin" ],
+ [ "variable.instance", "origin" ],
[ "text", " 0" ]
]
},
@@ -111,13 +111,13 @@
[ "identifier", "path" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "origin" ],
+ [ "variable.instance", "origin" ],
[ "text", " " ],
[ "paren.lparen", "[" ],
[ "keyword", "list" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "origin" ],
+ [ "variable.instance", "origin" ],
[ "paren.rparen", "]" ]
]
},
@@ -140,7 +140,7 @@
[ "identifier", "size" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "graph" ],
+ [ "variable.instance", "graph" ],
[ "paren.rparen", "]" ],
[ "paren.rparen", "}" ],
[ "text", " " ],
@@ -180,7 +180,7 @@
[ "paren.rparen", "}" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "graph" ],
+ [ "variable.instance", "graph" ],
[ "text", " " ],
[ "paren.lparen", "{" ]
]
@@ -193,7 +193,7 @@
[ "text", " " ],
[ "paren.lparen", "{" ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "d" ],
+ [ "variable.instance", "d" ],
[ "text", " " ],
[ "support.function", ">" ],
[ "text", " " ],
@@ -208,10 +208,10 @@
[ "identifier", "get" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "dist" ],
+ [ "variable.instance", "dist" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "uu" ],
+ [ "variable.instance", "uu" ],
[ "paren.rparen", "]" ],
[ "paren.rparen", "]" ],
[ "paren.rparen", "}" ],
@@ -228,7 +228,7 @@
[ "identifier", "u" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "uu" ]
+ [ "variable.instance", "uu" ]
]
},
{
@@ -240,7 +240,7 @@
[ "identifier", "d" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "dd" ]
+ [ "variable.instance", "dd" ]
]
},
{
@@ -276,7 +276,7 @@
[ "text", " " ],
[ "paren.lparen", "{" ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "d" ],
+ [ "variable.instance", "d" ],
[ "text", " " ],
[ "support.function", "==" ],
[ "text", " " ],
@@ -325,10 +325,10 @@
[ "identifier", "get" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "graph" ],
+ [ "variable.instance", "graph" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "u" ],
+ [ "variable.instance", "u" ],
[ "paren.rparen", "]" ],
[ "text", " " ],
[ "paren.lparen", "{" ]
@@ -347,10 +347,10 @@
[ "identifier", "exists" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "graph" ],
+ [ "variable.instance", "graph" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "v" ],
+ [ "variable.instance", "v" ],
[ "paren.rparen", "]" ],
[ "paren.rparen", "}" ],
[ "text", " " ],
@@ -370,12 +370,12 @@
[ "text", " " ],
[ "paren.lparen", "{" ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "d" ],
+ [ "variable.instance", "d" ],
[ "text", " " ],
[ "support.function", "+" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "dd" ],
+ [ "variable.instance", "dd" ],
[ "paren.rparen", "}" ],
[ "paren.rparen", "]" ]
]
@@ -388,7 +388,7 @@
[ "text", " " ],
[ "paren.lparen", "{" ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "alt" ],
+ [ "variable.instance", "alt" ],
[ "text", " " ],
[ "support.function", "<" ],
[ "text", " " ],
@@ -398,10 +398,10 @@
[ "identifier", "get" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "dist" ],
+ [ "variable.instance", "dist" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "v" ],
+ [ "variable.instance", "v" ],
[ "paren.rparen", "]" ],
[ "paren.rparen", "}" ],
[ "text", " " ],
@@ -419,10 +419,10 @@
[ "identifier", "dist" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "v" ],
+ [ "variable.instance", "v" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "alt" ]
+ [ "variable.instance", "alt" ]
]
},
{
@@ -436,7 +436,7 @@
[ "identifier", "path" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "v" ],
+ [ "variable.instance", "v" ],
[ "text", " " ],
[ "paren.lparen", "[" ],
[ "keyword", "list" ],
@@ -448,14 +448,14 @@
[ "identifier", "get" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "path" ],
+ [ "variable.instance", "path" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "u" ],
+ [ "variable.instance", "u" ],
[ "paren.rparen", "]" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "v" ],
+ [ "variable.instance", "v" ],
[ "paren.rparen", "]" ]
]
},
@@ -501,7 +501,7 @@
[ "identifier", "graph" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "u" ]
+ [ "variable.instance", "u" ]
]
},
{
@@ -520,10 +520,10 @@
[ "keyword", "list" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "dist" ],
+ [ "variable.instance", "dist" ],
[ "text", " " ],
[ "variable.instancce", "$" ],
- [ "variable.instancce", "path" ],
+ [ "variable.instance", "path" ],
[ "paren.rparen", "]" ]
]
},
diff --git a/lib/ace/mode/_test/tokens_tex.json b/lib/ace/mode/_test/tokens_tex.json
new file mode 100644
index 00000000..1ecc6211
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_tex.json
@@ -0,0 +1,194 @@
+[
+ {
+ "state": "start",
+ "data": [
+ [ "text", "The quadratic formula is $$-b " ],
+ [ "keyword", "\\pm" ],
+ [ "text", " " ],
+ [ "keyword", "\\sqrt" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "text", "b^2 - 4ac" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", " " ],
+ [ "keyword", "\\over" ],
+ [ "text", " 2a$$" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\bye" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword", "\\makeatletter" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\newcommand" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\be" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "comment", "%" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\begingroup" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "comment", "% \\setlength{\\arraycolsep}{2pt}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\eqnarray" ],
+ [ "comment", "%" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\@" ],
+ [ "text", "ifstar" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\nonumber" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "comment", "%" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\newcommand" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\ee" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "keyword", "\\endeqnarray\\endgroup" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\makeatother" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\begin" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "equation" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " x=" ],
+ [ "keyword", "\\left\\" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "text", " " ],
+ [ "keyword", "\\begin" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "array" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "text", "cl" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " 0 & " ],
+ [ "keyword", "\\textrm" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "text", "if " ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", "A=" ],
+ [ "keyword", "\\ldots\\\\" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " 1 & " ],
+ [ "keyword", "\\textrm" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "text", "if " ],
+ [ "paren.keyword.operator", "}" ],
+ [ "text", "B=" ],
+ [ "keyword", "\\ldots\\\\" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " x & " ],
+ [ "keyword", "\\textrm" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "text", "this runs with as much text as you like, but without an raggeright text" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "." ],
+ [ "paren.keyword.operator", "}" ],
+ [ "keyword", "\\end" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "array" ],
+ [ "paren.keyword.operator", "}" ],
+ [ "keyword", "\\right" ],
+ [ "text", "." ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "\\end" ],
+ [ "paren.keyword.operator", "{" ],
+ [ "nospell.text", "equation" ],
+ [ "paren.keyword.operator", "}" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_typescript.json b/lib/ace/mode/_test/tokens_typescript.json
new file mode 100644
index 00000000..4923d708
--- /dev/null
+++ b/lib/ace/mode/_test/tokens_typescript.json
@@ -0,0 +1,769 @@
+[
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "keyword.operator.ts", "class" ],
+ [ "text", " " ],
+ [ "identifier", "Greeter" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", "\t" ],
+ [ "variable.parameter.function.ts", "greeting" ],
+ [ "text", ": " ],
+ [ "variable.parameter.function.ts", "string" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", "\t" ],
+ [ "keyword.operator.ts", "constructor" ],
+ [ "text", " " ],
+ [ "paren.lparen", "(" ],
+ [ "variable.parameter.function.ts", "message" ],
+ [ "text", ": " ],
+ [ "variable.parameter.function.ts", "string" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", "\t\t" ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "greeting" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "identifier", "message" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "\t" ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", "\t" ],
+ [ "entity.name.function.ts", "greet" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", "\t\t" ],
+ [ "keyword", "return" ],
+ [ "text", " " ],
+ [ "string", "\"Hello, \"" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "greeting" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "\t" ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ],
+ [ "text", " " ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "storage.type", "var" ],
+ [ "text", " " ],
+ [ "identifier", "greeter" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "keyword", "new" ],
+ [ "text", " " ],
+ [ "identifier", "Greeter" ],
+ [ "paren.lparen", "(" ],
+ [ "string", "\"world\"" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "storage.type", "var" ],
+ [ "text", " " ],
+ [ "identifier", "button" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "variable.language", "document" ],
+ [ "punctuation.operator", "." ],
+ [ "support.function.dom", "createElement" ],
+ [ "paren.lparen", "(" ],
+ [ "string", "'button'" ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "identifier", "button" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "innerText" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "string", "\"Say Hello\"" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "storage.type", "button" ],
+ [ "punctuation.operator", "." ],
+ [ "entity.name.function", "onclick" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "storage.type", "function" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", "\t" ],
+ [ "support.function", "alert" ],
+ [ "paren.lparen", "(" ],
+ [ "entity.name.function.ts", "greeter.greet" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "variable.language", "document" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "body" ],
+ [ "punctuation.operator", "." ],
+ [ "support.function.dom", "appendChild" ],
+ [ "paren.lparen", "(" ],
+ [ "identifier", "button" ],
+ [ "paren.rparen", ")" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "keyword.operator.ts", "class" ],
+ [ "text", " " ],
+ [ "identifier", "Snake" ],
+ [ "text", " " ],
+ [ "keyword.operator.ts", "extends" ],
+ [ "text", " " ],
+ [ "identifier", "Animal" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "entity.name.function.ts", "move" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "support.function", "alert" ],
+ [ "paren.lparen", "(" ],
+ [ "string", "\"Slithering...\"" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "super" ],
+ [ "text", "(" ],
+ [ "keyword.other.ts", "5" ],
+ [ "text", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "keyword.operator.ts", "class" ],
+ [ "text", " " ],
+ [ "identifier", "Horse" ],
+ [ "text", " " ],
+ [ "keyword.operator.ts", "extends" ],
+ [ "text", " " ],
+ [ "identifier", "Animal" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "entity.name.function.ts", "move" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "support.function", "alert" ],
+ [ "paren.lparen", "(" ],
+ [ "string", "\"Galloping...\"" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "super" ],
+ [ "punctuation.operator", "." ],
+ [ "identifier", "move" ],
+ [ "paren.lparen", "(" ],
+ [ "constant.numeric", "45" ],
+ [ "paren.rparen", ")" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.operator.ts", "module" ],
+ [ "text", " " ],
+ [ "variable.parameter.function.ts", "Sayings" ],
+ [ "text", " {" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "export" ],
+ [ "text", " " ],
+ [ "keyword.operator.ts", "class" ],
+ [ "text", " " ],
+ [ "identifier", "Greeter" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "variable.parameter.function.ts", "greeting" ],
+ [ "text", ": " ],
+ [ "variable.parameter.function.ts", "string" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "constructor" ],
+ [ "text", " " ],
+ [ "paren.lparen", "(" ],
+ [ "variable.parameter.function.ts", "message" ],
+ [ "text", ": " ],
+ [ "variable.parameter.function.ts", "string" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "greeting" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "identifier", "message" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "entity.name.function.ts", "greet" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "return" ],
+ [ "text", " " ],
+ [ "string", "\"Hello, \"" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "greeting" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "keyword.operator.ts", "module" ],
+ [ "text", " " ],
+ [ "variable.parameter.function.ts", "Mankala" ],
+ [ "text", " {" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "export" ],
+ [ "text", " " ],
+ [ "keyword.operator.ts", "class" ],
+ [ "text", " " ],
+ [ "identifier", "Features" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "public" ],
+ [ "text", " " ],
+ [ "identifier", "turnContinues" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.language.boolean", "false" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "public" ],
+ [ "text", " " ],
+ [ "identifier", "seedStoredCount" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "public" ],
+ [ "text", " " ],
+ [ "identifier", "capturedCount" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "public" ],
+ [ "text", " " ],
+ [ "identifier", "spaceCaptured" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "identifier", "NoSpace" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "public" ],
+ [ "text", " " ],
+ [ "entity.name.function.ts", "clear" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "turnContinues" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.language.boolean", "false" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "seedStoredCount" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "capturedCount" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "spaceCaptured" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "identifier", "NoSpace" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": []
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword.operator.ts", "public" ],
+ [ "text", " " ],
+ [ "entity.name.function.ts", "toString" ],
+ [ "paren.lparen", "(" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "storage.type", "var" ],
+ [ "text", " " ],
+ [ "identifier", "stringBuilder" ],
+ [ "text", " " ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "string", "\"\"" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "if" ],
+ [ "text", " " ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "turnContinues" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "stringBuilder" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "string", "\" turn continues,\"" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "stringBuilder" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "string", "\" stores \"" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "seedStoredCount" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "if" ],
+ [ "text", " " ],
+ [ "paren.lparen", "(" ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "capturedCount" ],
+ [ "text", " " ],
+ [ "keyword.operator", ">" ],
+ [ "text", " " ],
+ [ "constant.numeric", "0" ],
+ [ "paren.rparen", ")" ],
+ [ "text", " " ],
+ [ "paren.lparen", "{" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "identifier", "stringBuilder" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "keyword.operator", "=" ],
+ [ "text", " " ],
+ [ "string", "\" captures \"" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "capturedCount" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "text", " " ],
+ [ "string", "\" from space \"" ],
+ [ "text", " " ],
+ [ "keyword.operator", "+" ],
+ [ "text", " " ],
+ [ "storage.type.variable.ts", "this." ],
+ [ "identifier", "spaceCaptured" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "regex_allowed",
+ "data": [
+ [ "text", " " ],
+ [ "keyword", "return" ],
+ [ "text", " " ],
+ [ "identifier", "stringBuilder" ],
+ [ "punctuation.operator", ";" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "text", " " ],
+ [ "paren.rparen", "}" ]
+ ]
+ },
+ {
+ "state": "start",
+ "data": [
+ [ "paren.rparen", "}" ]
+ ]
+ }
+]
\ No newline at end of file
diff --git a/lib/ace/mode/_test/tokens_yaml.json b/lib/ace/mode/_test/tokens_yaml.json
index 9a8c1ce7..0dc38ce6 100644
--- a/lib/ace/mode/_test/tokens_yaml.json
+++ b/lib/ace/mode/_test/tokens_yaml.json
@@ -14,21 +14,22 @@
{
"state": "start",
"data": [
- [ "comment", "---" ]
+ [ "list.markup", "---" ]
]
},
{
"state": "start",
"data": [
- [ "identifier", "receipt:" ],
- [ "text", " Oz-Ware Purchase Invoice" ]
+ [ "meta.tag", "receipt" ],
+ [ "keyword", ": " ],
+ [ "text", "Oz-Ware Purchase Invoice" ]
]
},
{
"state": "start",
"data": [
- [ "identifier", "date:" ],
- [ "text", " " ],
+ [ "meta.tag", "date" ],
+ [ "keyword", ": " ],
[ "constant.numeric", "2007" ],
[ "constant.numeric", "-08" ],
[ "constant.numeric", "-06" ]
@@ -37,23 +38,24 @@
{
"state": "start",
"data": [
- [ "identifier", "customer:" ]
+ [ "meta.tag", "customer" ],
+ [ "keyword", ":" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "given:" ],
- [ "text", " Dorothy" ]
+ [ "meta.tag", " given" ],
+ [ "keyword", ": " ],
+ [ "text", "Dorothy" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "family:" ],
- [ "text", " Gale" ]
+ [ "meta.tag", " family" ],
+ [ "keyword", ": " ],
+ [ "text", "Gale" ]
]
},
{
@@ -63,24 +65,25 @@
{
"state": "start",
"data": [
- [ "identifier", "items:" ]
+ [ "meta.tag", "items" ],
+ [ "keyword", ":" ]
]
},
{
"state": "start",
"data": [
- [ "text", " - " ],
- [ "identifier", "part_no:" ],
- [ "text", " " ],
+ [ "list.markup", " - " ],
+ [ "meta.tag", "part_no" ],
+ [ "keyword", ": " ],
[ "string", "'A4786'" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "descrip:" ],
- [ "text", " Water Bucket " ],
+ [ "meta.tag", " descrip" ],
+ [ "keyword", ": " ],
+ [ "text", "Water Bucket " ],
[ "paren.lparen", "(" ],
[ "text", "Filled" ],
[ "paren.rparen", ")" ]
@@ -89,18 +92,16 @@
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "price:" ],
- [ "text", " " ],
+ [ "meta.tag", " price" ],
+ [ "keyword", ": " ],
[ "constant.numeric", "1.47" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "quantity:" ],
- [ "text", " " ],
+ [ "meta.tag", " quantity" ],
+ [ "keyword", ": " ],
[ "constant.numeric", "4" ]
]
},
@@ -111,18 +112,18 @@
{
"state": "start",
"data": [
- [ "text", " - " ],
- [ "identifier", "part_no:" ],
- [ "text", " " ],
+ [ "list.markup", " - " ],
+ [ "meta.tag", "part_no" ],
+ [ "keyword", ": " ],
[ "string", "'E1628'" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "descrip:" ],
- [ "text", " High Heeled " ],
+ [ "meta.tag", " descrip" ],
+ [ "keyword", ": " ],
+ [ "text", "High Heeled " ],
[ "string", "\"Ruby\"" ],
[ "text", " Slippers" ]
]
@@ -130,27 +131,24 @@
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "size:" ],
- [ "text", " " ],
+ [ "meta.tag", " size" ],
+ [ "keyword", ": " ],
[ "constant.numeric", "8" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "price:" ],
- [ "text", " " ],
+ [ "meta.tag", " price" ],
+ [ "keyword", ": " ],
[ "constant.numeric", "100.27" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "quantity:" ],
- [ "text", " " ],
+ [ "meta.tag", " quantity" ],
+ [ "keyword", ": " ],
[ "constant.numeric", "1" ]
]
},
@@ -161,18 +159,16 @@
{
"state": "start",
"data": [
- [ "text", "bill-" ],
- [ "identifier", "to:" ],
- [ "text", " " ],
- [ "variable", "&id001" ]
+ [ "meta.tag", "bill-to" ],
+ [ "keyword", ": " ],
+ [ "constant.language", "&id001" ]
]
},
{
"state": "qqstring",
"data": [
- [ "text", " " ],
- [ "identifier", "street:" ],
- [ "text", " " ],
+ [ "meta.tag", " street" ],
+ [ "keyword", ": " ],
[ "string", "|" ]
]
},
@@ -191,17 +187,17 @@
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "city:" ],
- [ "text", " East Centerville" ]
+ [ "meta.tag", " city" ],
+ [ "keyword", ": " ],
+ [ "text", "East Centerville" ]
]
},
{
"state": "start",
"data": [
- [ "text", " " ],
- [ "identifier", "state:" ],
- [ "text", " KS" ]
+ [ "meta.tag", " state" ],
+ [ "keyword", ": " ],
+ [ "text", "KS" ]
]
},
{
@@ -211,10 +207,9 @@
{
"state": "start",
"data": [
- [ "text", "ship-" ],
- [ "identifier", "to:" ],
- [ "text", " " ],
- [ "variable", "*id001" ]
+ [ "meta.tag", "ship-to" ],
+ [ "keyword", ": " ],
+ [ "constant.language", "*id001" ]
]
},
{
@@ -224,8 +219,8 @@
{
"state": "qqstring",
"data": [
- [ "identifier", "specialDelivery:" ],
- [ "text", " " ],
+ [ "meta.tag", "specialDelivery" ],
+ [ "keyword", ": " ],
[ "string", ">" ]
]
},