diff --git a/demo/editor.html b/demo/editor.html
index ec291729..8a0212bd 100644
--- a/demo/editor.html
+++ b/demo/editor.html
@@ -78,6 +78,9 @@
diff --git a/src/ace/layer/Text.js b/src/ace/layer/Text.js
index a1252f81..1a966776 100644
--- a/src/ace/layer/Text.js
+++ b/src/ace/layer/Text.js
@@ -244,7 +244,8 @@ var Text = function(parentEl) {
.replace(/\t/g, this.$tabString);
if (!this.$textToken[token.type]) {
- stringBuilder.push("", output, "");
+ var classes = "ace_" + token.type.replace(".", " ace_");
+ stringBuilder.push("", output, "");
}
else {
stringBuilder.push(output);
diff --git a/src/ace/mode/CssHighlightRules.js b/src/ace/mode/CssHighlightRules.js
index a0a99f85..39f053a0 100644
--- a/src/ace/mode/CssHighlightRules.js
+++ b/src/ace/mode/CssHighlightRules.js
@@ -165,13 +165,13 @@ var CssHighlightRules = function() {
}, {
token : function(value) {
if (properties[value.toLowerCase()]) {
- return "buildin-constant";
+ return "constant.language";
}
else if (functions[value.toLowerCase()]) {
- return "buildin-function";
+ return "function.language";
}
else if (constants[value.toLowerCase()]) {
- return "library-constant";
+ return "constant.library";
}
else {
return "identifier";
diff --git a/src/ace/mode/DocCommentHighlightRules.js b/src/ace/mode/DocCommentHighlightRules.js
index 9cf7ce05..8199e3bb 100644
--- a/src/ace/mode/DocCommentHighlightRules.js
+++ b/src/ace/mode/DocCommentHighlightRules.js
@@ -15,20 +15,20 @@ var DocCommentHighlightRules = function() {
this.$rules = {
"start" : [ {
- token : "doc-comment", // closing comment
+ token : "comment.doc", // closing comment
regex : "\\*\\/",
next : "start"
}, {
- token : "doc-comment-tag",
+ token : "comment.doc.tag",
regex : "@[\\w\\d_]+"
}, {
- token : "doc-comment",
+ token : "comment.doc",
regex : "\s+"
}, {
- token : "doc-comment",
+ token : "comment.doc",
regex : "[^@\\*]+"
}, {
- token : "doc-comment",
+ token : "comment.doc",
regex : "."
}]
};
diff --git a/src/ace/mode/JavaScriptHighlightRules.js b/src/ace/mode/JavaScriptHighlightRules.js
index fd3ebab6..f3e3659a 100644
--- a/src/ace/mode/JavaScriptHighlightRules.js
+++ b/src/ace/mode/JavaScriptHighlightRules.js
@@ -60,21 +60,23 @@ JavaScriptHighlightRules = function() {
regex : "['].*\\\\$",
next : "qstring"
}, {
- token : "number", // hex
+ token : "constant.numeric", // hex
regex : "0[xX][0-9a-fA-F]+\\b"
}, {
- token : "number", // float
+ token : "constant.numeric", // float
regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
}, {
token : function(value) {
if (value == "this")
- return "variable";
+ return "variable.language";
else if (keywords[value])
return "keyword";
else if (buildinConstants[value])
- return "buildin-constant";
- else if (futureReserved[value] || value == "debugger")
- return "invalid";
+ return "constant.language";
+ else if (futureReserved[value])
+ return "invalid.illegal";
+ else if (value == "debugger")
+ return "invalid.deprecated";
else
return "identifier";
},
@@ -82,7 +84,7 @@ JavaScriptHighlightRules = function() {
// TODO: Unicode identifiers
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
}, {
- token : "operator",
+ token : "keyword.operator",
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(in|instanceof|new|delete|typeof|void)"
}, {
token : "lparen",
diff --git a/src/ace/theme/Dawn.js b/src/ace/theme/Dawn.js
new file mode 100644
index 00000000..d1167a67
--- /dev/null
+++ b/src/ace/theme/Dawn.js
@@ -0,0 +1,161 @@
+require.def("ace/theme/Dawn",
+ ["ace/lib/dom"], function(dom) {
+
+ var cssText = ".ace-dawn .ace_editor {\
+ border: 2px solid rgb(159, 159, 159);\
+}\
+\
+.ace-dawn .ace_editor.ace_focus {\
+ border: 2px solid #327fbd;\
+}\
+\
+.ace-dawn .ace_gutter {\
+ width: 50px;\
+ background: #e8e8e8;\
+ color: #333;\
+ font-family: \"Menlo\", \"Monaco\", \"Courier New\", monospace;\
+ font-size: 11px;\
+ overflow : hidden;\
+}\
+\
+.ace-dawn .ace_gutter-layer {\
+ right: 0px;\
+ text-align: right;\
+}\
+\
+.ace-dawn .ace_gutter-layer .ace_gutter-cell {\
+ padding-right: 15px;\
+}\
+\
+.ace-dawn .ace_editor .ace_printMargin {\
+ width: 1px;\
+ background: #e8e8e8;\
+}\
+\
+.ace-dawn .ace_scroller {\
+ background-color: #F9F9F9;\
+}\
+\
+.ace-dawn .ace_text-layer {\
+ cursor: text;\
+ color: #080808;\
+ font-family: \"Menlo\", \"Monaco\", \"Courier New\", \"Courier\", monospace;\
+ font-size: 11px;\
+}\
+\
+.ace-dawn .ace_cursor {\
+ border-left: 2px solid #000000;\
+}\
+\
+.ace-dawn .ace_cursor.ace_overwrite {\
+ border-left: 0px;\
+ border-bottom: 1px solid #000000;\
+}\
+ \
+.ace-dawn .ace_marker-layer .ace_selection {\
+ background: rgba(39, 95, 255, 0.30);\
+}\
+\
+.ace-dawn .ace_marker-layer .ace_step {\
+ background: rgb(198, 219, 174);\
+}\
+\
+.ace-dawn .ace_marker-layer .ace_bracket {\
+ margin: -1px 0 0 -1px;\
+ border: 1px solid rgba(75, 75, 126, 0.50);\
+}\
+\
+.ace-dawn .ace_marker-layer .ace_active_line {\
+ background: rgba(36, 99, 180, 0.12);\
+}\
+\
+ \
+.ace-dawn .ace_invisible {\
+ color: rgba(75, 75, 126, 0.50);\
+}\
+\
+.ace-dawn .ace_keyword {\
+ color:#794938;\
+}\
+\
+.ace-dawn .ace_keyword.ace_operator {\
+ \
+}\
+\
+.ace-dawn .ace_constant {\
+ color:#811F24;\
+}\
+\
+.ace-dawn .ace_constant.ace_language {\
+ \
+}\
+\
+.ace-dawn .ace_constant.ace_library {\
+ \
+}\
+\
+.ace-dawn .ace_constant.ace_numeric {\
+ \
+}\
+\
+.ace-dawn .ace_invalid {\
+ \
+}\
+\
+.ace-dawn .ace_invalid.ace_illegal {\
+ text-decoration:underline;\
+font-style:italic;\
+color:#F8F8F8;\
+background-color:#B52A1D;\
+}\
+\
+.ace-dawn .ace_invalid.ace_deprecated {\
+ text-decoration:underline;\
+font-style:italic;\
+color:#B52A1D;\
+}\
+\
+.ace-dawn .ace_function {\
+ \
+}\
+\
+.ace-dawn .ace_function.ace_buildin {\
+ \
+}\
+\
+.ace-dawn .ace_string {\
+ color:#0B6125;\
+}\
+\
+.ace-dawn .ace_comment {\
+ font-style:italic;\
+color:#5A525F;\
+}\
+\
+.ace-dawn .ace_comment.ace_doc {\
+ \
+}\
+\
+.ace-dawn .ace_comment.ace_doc.ace_tag {\
+ \
+}\
+\
+.ace-dawn .ace_variable {\
+ color:#234A97;\
+}\
+\
+.ace-dawn .ace_variable.ace_language {\
+ \
+}\
+\
+.ace-dawn .ace_xml_pe {\
+ \
+}";
+
+ // import CSS once
+ dom.importCssString(cssText);
+
+ return {
+ cssClass: "ace-dawn"
+ };
+})
\ No newline at end of file
diff --git a/src/ace/theme/IdleFingers.js b/src/ace/theme/IdleFingers.js
new file mode 100644
index 00000000..a530fe8d
--- /dev/null
+++ b/src/ace/theme/IdleFingers.js
@@ -0,0 +1,157 @@
+require.def("ace/theme/IdleFingers",
+ ["ace/lib/dom"], function(dom) {
+
+ var cssText = ".ace-idle-fingers .ace_editor {\
+ border: 2px solid rgb(159, 159, 159);\
+}\
+\
+.ace-idle-fingers .ace_editor.ace_focus {\
+ border: 2px solid #327fbd;\
+}\
+\
+.ace-idle-fingers .ace_gutter {\
+ width: 50px;\
+ background: #e8e8e8;\
+ color: #333;\
+ font-family: \"Menlo\", \"Monaco\", \"Courier New\", monospace;\
+ font-size: 11px;\
+ overflow : hidden;\
+}\
+\
+.ace-idle-fingers .ace_gutter-layer {\
+ right: 0px;\
+ text-align: right;\
+}\
+\
+.ace-idle-fingers .ace_gutter-layer .ace_gutter-cell {\
+ padding-right: 15px;\
+}\
+\
+.ace-idle-fingers .ace_editor .ace_printMargin {\
+ width: 1px;\
+ background: #e8e8e8;\
+}\
+\
+.ace-idle-fingers .ace_scroller {\
+ background-color: #323232;\
+}\
+\
+.ace-idle-fingers .ace_text-layer {\
+ cursor: text;\
+ color: #FFFFFF;\
+ font-family: \"Menlo\", \"Monaco\", \"Courier New\", \"Courier\", monospace;\
+ font-size: 11px;\
+}\
+\
+.ace-idle-fingers .ace_cursor {\
+ border-left: 2px solid #91FF00;\
+}\
+\
+.ace-idle-fingers .ace_cursor.ace_overwrite {\
+ border-left: 0px;\
+ border-bottom: 1px solid #91FF00;\
+}\
+ \
+.ace-idle-fingers .ace_marker-layer .ace_selection {\
+ background: rgba(90, 100, 126, 0.88);\
+}\
+\
+.ace-idle-fingers .ace_marker-layer .ace_step {\
+ background: rgb(198, 219, 174);\
+}\
+\
+.ace-idle-fingers .ace_marker-layer .ace_bracket {\
+ margin: -1px 0 0 -1px;\
+ border: 1px solid #404040;\
+}\
+\
+.ace-idle-fingers .ace_marker-layer .ace_active_line {\
+ background: #353637;\
+}\
+\
+ \
+.ace-idle-fingers .ace_invisible {\
+ color: #404040;\
+}\
+\
+.ace-idle-fingers .ace_keyword {\
+ color:#CC7833;\
+}\
+\
+.ace-idle-fingers .ace_keyword.ace_operator {\
+ \
+}\
+\
+.ace-idle-fingers .ace_constant {\
+ color:#6C99BB;\
+}\
+\
+.ace-idle-fingers .ace_constant.ace_language {\
+ \
+}\
+\
+.ace-idle-fingers .ace_constant.ace_library {\
+ \
+}\
+\
+.ace-idle-fingers .ace_constant.ace_numeric {\
+ \
+}\
+\
+.ace-idle-fingers .ace_invalid {\
+ color:#FFFFFF;\
+background-color:#FF0000;\
+}\
+\
+.ace-idle-fingers .ace_invalid.ace_illegal {\
+ \
+}\
+\
+.ace-idle-fingers .ace_invalid.ace_deprecated {\
+ \
+}\
+\
+.ace-idle-fingers .ace_function {\
+ \
+}\
+\
+.ace-idle-fingers .ace_function.ace_buildin {\
+ \
+}\
+\
+.ace-idle-fingers .ace_string {\
+ color:#A5C261;\
+}\
+\
+.ace-idle-fingers .ace_comment {\
+ font-style:italic;\
+color:#BC9458;\
+}\
+\
+.ace-idle-fingers .ace_comment.ace_doc {\
+ \
+}\
+\
+.ace-idle-fingers .ace_comment.ace_doc.ace_tag {\
+ \
+}\
+\
+.ace-idle-fingers .ace_variable {\
+ \
+}\
+\
+.ace-idle-fingers .ace_variable.ace_language {\
+ \
+}\
+\
+.ace-idle-fingers .ace_xml_pe {\
+ \
+}";
+
+ // import CSS once
+ dom.importCssString(cssText);
+
+ return {
+ cssClass: "ace-idle-fingers"
+ };
+})
\ No newline at end of file
diff --git a/src/ace/theme/Twilight.js b/src/ace/theme/Twilight.js
new file mode 100644
index 00000000..05a94a13
--- /dev/null
+++ b/src/ace/theme/Twilight.js
@@ -0,0 +1,159 @@
+require.def("ace/theme/Twilight",
+ ["ace/lib/dom"], function(dom) {
+
+ var cssText = ".ace-twilight .ace_editor {\
+ border: 2px solid rgb(159, 159, 159);\
+}\
+\
+.ace-twilight .ace_editor.ace_focus {\
+ border: 2px solid #327fbd;\
+}\
+\
+.ace-twilight .ace_gutter {\
+ width: 50px;\
+ background: #e8e8e8;\
+ color: #333;\
+ font-family: \"Menlo\", \"Monaco\", \"Courier New\", monospace;\
+ font-size: 11px;\
+ overflow : hidden;\
+}\
+\
+.ace-twilight .ace_gutter-layer {\
+ right: 0px;\
+ text-align: right;\
+}\
+\
+.ace-twilight .ace_gutter-layer .ace_gutter-cell {\
+ padding-right: 15px;\
+}\
+\
+.ace-twilight .ace_editor .ace_printMargin {\
+ width: 1px;\
+ background: #e8e8e8;\
+}\
+\
+.ace-twilight .ace_scroller {\
+ background-color: #141414;\
+}\
+\
+.ace-twilight .ace_text-layer {\
+ cursor: text;\
+ color: #F8F8F8;\
+ font-family: \"Menlo\", \"Monaco\", \"Courier New\", \"Courier\", monospace;\
+ font-size: 11px;\
+}\
+\
+.ace-twilight .ace_cursor {\
+ border-left: 2px solid #A7A7A7;\
+}\
+\
+.ace-twilight .ace_cursor.ace_overwrite {\
+ border-left: 0px;\
+ border-bottom: 1px solid #A7A7A7;\
+}\
+ \
+.ace-twilight .ace_marker-layer .ace_selection {\
+ background: rgba(221, 240, 255, 0.20);\
+}\
+\
+.ace-twilight .ace_marker-layer .ace_step {\
+ background: rgb(198, 219, 174);\
+}\
+\
+.ace-twilight .ace_marker-layer .ace_bracket {\
+ margin: -1px 0 0 -1px;\
+ border: 1px solid rgba(255, 255, 255, 0.25);\
+}\
+\
+.ace-twilight .ace_marker-layer .ace_active_line {\
+ background: rgba(255, 255, 255, 0.031);\
+}\
+\
+ \
+.ace-twilight .ace_invisible {\
+ color: rgba(255, 255, 255, 0.25);\
+}\
+\
+.ace-twilight .ace_keyword {\
+ color:#CDA869;\
+}\
+\
+.ace-twilight .ace_keyword.ace_operator {\
+ \
+}\
+\
+.ace-twilight .ace_constant {\
+ color:#CF6A4C;\
+}\
+\
+.ace-twilight .ace_constant.ace_language {\
+ \
+}\
+\
+.ace-twilight .ace_constant.ace_library {\
+ \
+}\
+\
+.ace-twilight .ace_constant.ace_numeric {\
+ \
+}\
+\
+.ace-twilight .ace_invalid {\
+ \
+}\
+\
+.ace-twilight .ace_invalid.ace_illegal {\
+ color:#F8F8F8;\
+background-color:rgba(86, 45, 86, 0.75);\
+}\
+\
+.ace-twilight .ace_invalid.ace_deprecated {\
+ text-decoration:underline;\
+font-style:italic;\
+color:#D2A8A1;\
+}\
+\
+.ace-twilight .ace_function {\
+ \
+}\
+\
+.ace-twilight .ace_function.ace_buildin {\
+ \
+}\
+\
+.ace-twilight .ace_string {\
+ color:#8F9D6A;\
+}\
+\
+.ace-twilight .ace_comment {\
+ font-style:italic;\
+color:#5F5A60;\
+}\
+\
+.ace-twilight .ace_comment.ace_doc {\
+ \
+}\
+\
+.ace-twilight .ace_comment.ace_doc.ace_tag {\
+ \
+}\
+\
+.ace-twilight .ace_variable {\
+ color:#7587A6;\
+}\
+\
+.ace-twilight .ace_variable.ace_language {\
+ \
+}\
+\
+.ace-twilight .ace_xml_pe {\
+ color:#494949;\
+}";
+
+ // import CSS once
+ dom.importCssString(cssText);
+
+ return {
+ cssClass: "ace-twilight"
+ };
+})
\ No newline at end of file
diff --git a/src/ace/theme/eclipse.css b/src/ace/theme/eclipse.css
index 0adf9da8..0afba302 100644
--- a/src/ace/theme/eclipse.css
+++ b/src/ace/theme/eclipse.css
@@ -3,7 +3,7 @@
}
.ace-eclipse .ace_editor.ace_focus {
- border: 2px solid #327fbd;;
+ border: 2px solid #327fbd;
}
.ace-eclipse .ace_gutter {
@@ -34,15 +34,15 @@
color: rgb(127, 0, 85);
}
-.ace-eclipse .ace_line .ace_buildin-constant {
+.ace-eclipse .ace_line .ace_constant.ace_buildin {
color: rgb(88, 72, 246);
}
-.ace-eclipse .ace_line .ace_library-constant {
+.ace-eclipse .ace_line .ace_constant.ace_library {
color: rgb(6, 150, 14);
}
-.ace-eclipse .ace_line .ace_buildin-function {
+.ace-eclipse .ace_line .ace_function {
color: rgb(60, 76, 114);
}
@@ -54,30 +54,21 @@
color: rgb(63, 127, 95);
}
-.ace-eclipse .ace_line .ace_doc-comment {
+.ace-eclipse .ace_line .ace_comment.ace_doc {
color: rgb(63, 95, 191);
}
-.ace-eclipse .ace_line .ace_doc-comment-tag {
+.ace-eclipse .ace_line .ace_comment.ace_doc.ace_tag {
color: rgb(127, 159, 191);
}
-.ace-eclipse .ace_line .ace_number {
+.ace-eclipse .ace_line .ace_constant.ace_numeric {
}
.ace-eclipse .ace_line .ace_tag {
color: rgb(63, 127, 127);
}
-.ace-eclipse .ace_line .ace_attribute {
- color: rbg(127, 0, 127);
-}
-
-.ace-eclipse .ace_line .ace_attribute-value {
- font-style: italic;
- color: rbg(42, 0, 255);
-}
-
.ace-eclipse .ace_line .ace_xml_pe {
color: rgb(104, 104, 91);
}
diff --git a/src/ace/theme/tm.css b/src/ace/theme/tm.css
index bdc61e7e..0310bcf1 100644
--- a/src/ace/theme/tm.css
+++ b/src/ace/theme/tm.css
@@ -1,7 +1,5 @@
.ace-tm .ace_editor {
border: 2px solid rgb(159, 159, 159);
- font-family: "Menlo", "Monaco", "Courier New", "Courier", monospace;
- font-size: 11px;
}
.ace-tm .ace_editor.ace_focus {
@@ -33,6 +31,8 @@
.ace-tm .ace_text-layer {
cursor: text;
+ font-family: "Menlo", "Monaco", "Courier New", "Courier", monospace;
+ font-size: 11px;
}
.ace-tm .ace_cursor {
@@ -52,11 +52,11 @@
color: blue;
}
-.ace-tm .ace_line .ace_buildin-constant {
+.ace-tm .ace_line .ace_constant.ace_buildin {
color: rgb(88, 72, 246);
}
-.ace-tm .ace_line .ace_library-constant {
+.ace-tm .ace_line .ace_constant.ace_library {
color: rgb(6, 150, 14);
}
@@ -65,11 +65,11 @@
color: white;
}
-.ace-tm .ace_line .ace_buildin-function {
+.ace-tm .ace_line .ace_function {
color: rgb(60, 76, 114);
}
-.ace-tm .ace_line .ace_operator {
+.ace-tm .ace_line .ace_keyword.ace_operator {
color: rgb(104, 118, 135);
}
@@ -81,15 +81,15 @@
color: rgb(76, 136, 107);
}
-.ace-tm .ace_line .ace_doc-comment {
+.ace-tm .ace_line .ace_comment.ace_doc {
color: rgb(0, 102, 255);
}
-.ace-tm .ace_line .ace_doc-comment-tag {
+.ace-tm .ace_line .ace_comment.ace_doc.ace_tag {
color: rgb(128, 159, 191);
}
-.ace-tm .ace_line .ace_number {
+.ace-tm .ace_line .ace_constant.ace_numeric {
color: rgb(0, 0, 205);
}
diff --git a/tool/Theme.tmpl.css b/tool/Theme.tmpl.css
new file mode 100644
index 00000000..8a32f152
--- /dev/null
+++ b/tool/Theme.tmpl.css
@@ -0,0 +1,144 @@
+.%cssClass% .ace_editor {
+ border: 2px solid rgb(159, 159, 159);
+}
+
+.%cssClass% .ace_editor.ace_focus {
+ border: 2px solid #327fbd;
+}
+
+.%cssClass% .ace_gutter {
+ width: 50px;
+ background: #e8e8e8;
+ color: #333;
+ font-family: "Menlo", "Monaco", "Courier New", monospace;
+ font-size: 11px;
+ overflow : hidden;
+}
+
+.%cssClass% .ace_gutter-layer {
+ right: 0px;
+ text-align: right;
+}
+
+.%cssClass% .ace_gutter-layer .ace_gutter-cell {
+ padding-right: 15px;
+}
+
+.%cssClass% .ace_editor .ace_printMargin {
+ width: 1px;
+ background: %printMargin%;
+}
+
+.%cssClass% .ace_scroller {
+ background-color: %background%;
+}
+
+.%cssClass% .ace_text-layer {
+ cursor: text;
+ color: %foreground%;
+ font-family: "Menlo", "Monaco", "Courier New", "Courier", monospace;
+ font-size: 11px;
+}
+
+.%cssClass% .ace_cursor {
+ border-left: 2px solid %cursor%;
+}
+
+.%cssClass% .ace_cursor.ace_overwrite {
+ border-left: 0px;
+ border-bottom: 1px solid %overwrite%;
+}
+
+.%cssClass% .ace_marker-layer .ace_selection {
+ background: %selection%;
+}
+
+.%cssClass% .ace_marker-layer .ace_step {
+ background: %step%;
+}
+
+.%cssClass% .ace_marker-layer .ace_bracket {
+ margin: -1px 0 0 -1px;
+ border: 1px solid %bracket%;
+}
+
+.%cssClass% .ace_marker-layer .ace_active_line {
+ background: %active_line%;
+}
+
+
+.%cssClass% .ace_invisible {
+ %invisible%
+}
+
+.%cssClass% .ace_keyword {
+ %keyword%
+}
+
+.%cssClass% .ace_keyword.ace_operator {
+ %keyword.operator%
+}
+
+.%cssClass% .ace_constant {
+ %constant%
+}
+
+.%cssClass% .ace_constant.ace_language {
+ %constant.language%
+}
+
+.%cssClass% .ace_constant.ace_library {
+ %constant.library%
+}
+
+.%cssClass% .ace_constant.ace_numeric {
+ %constant.numeric%
+}
+
+.%cssClass% .ace_invalid {
+ %invalid%
+}
+
+.%cssClass% .ace_invalid.ace_illegal {
+ %invalid.illegal%
+}
+
+.%cssClass% .ace_invalid.ace_deprecated {
+ %invalid.deprecated%
+}
+
+.%cssClass% .ace_function {
+ %function%
+}
+
+.%cssClass% .ace_function.ace_buildin {
+ %function.buildin%
+}
+
+.%cssClass% .ace_string {
+ %string%
+}
+
+.%cssClass% .ace_comment {
+ %comment%
+}
+
+.%cssClass% .ace_comment.ace_doc {
+ %comment.doc%
+}
+
+.%cssClass% .ace_comment.ace_doc.ace_tag {
+ %comment.doc.tag%
+}
+
+.%cssClass% .ace_variable {
+ %variable%
+}
+
+.%cssClass% .ace_variable.ace_language {
+ %variable.language%
+}
+
+.%cssClass% .ace_xml_pe {
+ %xml_pe%
+}
\ No newline at end of file
diff --git a/tool/theme.tmpl.js b/tool/theme.tmpl.js
new file mode 100644
index 00000000..90cdf6eb
--- /dev/null
+++ b/tool/theme.tmpl.js
@@ -0,0 +1,12 @@
+require.def("ace/theme/%name%",
+ ["ace/lib/dom"], function(dom) {
+
+ var cssText = %css%;
+
+ // import CSS once
+ dom.importCssString(cssText);
+
+ return {
+ cssClass: "%cssClass%"
+ };
+})
\ No newline at end of file
diff --git a/tool/tmtheme.js b/tool/tmtheme.js
new file mode 100644
index 00000000..0540a376
--- /dev/null
+++ b/tool/tmtheme.js
@@ -0,0 +1,184 @@
+var xml = require("./support/node-o3-xml/lib/o3-xml");
+var fs = require("fs");
+
+function plistToJson(el) {
+ if (el.tagName != "plist")
+ throw new Error("not a plist!");
+
+ return $plistParse(el.selectSingleNode("dict"));
+};
+
+function $plistParse(el) {
+ if (el.tagName == "dict") {
+ var dict = {};
+ var key;
+ var childNodes = el.childNodes;
+ for (var i=0, l=childNodes.length; i
+
+
+
+ author
+ David Powers
+ comment
+ Dawn
+ name
+ Dawn
+ settings
+
+
+ settings
+
+ background
+ #F9F9F9
+ caret
+ #000000
+ foreground
+ #080808
+ invisibles
+ #4B4B7E80
+ lineHighlight
+ #2463B41F
+ selection
+ #275FFF4D
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #5A525F
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #811F24
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #BF4F24
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #794938
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #A71D5D
+
+
+
+ name
+ String
+ scope
+ string | punctuation.definition.string
+ settings
+
+ fontStyle
+
+ foreground
+ #0B6125
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #691C97
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ fontStyle
+
+ foreground
+ #234A97
+
+
+
+ name
+ Punctuation.separator
+ scope
+ punctuation.separator
+ settings
+
+ foreground
+ #794938
+
+
+
+ name
+ Invalid – Deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ fontStyle
+ bold italic underline
+ foreground
+ #B52A1D
+
+
+
+ name
+ Invalid – Illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #B52A1D
+ fontStyle
+ italic underline
+ foreground
+ #F8F8F8
+
+
+
+ name
+ String embedded-source
+ scope
+ string source
+ settings
+
+ background
+ #6F8BBA26
+ fontStyle
+
+ foreground
+ #080808
+
+
+
+ name
+ String constant
+ scope
+ string constant
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #696969
+
+
+
+ name
+ String variable
+ scope
+ string variable
+ settings
+
+ fontStyle
+
+ foreground
+ #234A97
+
+
+
+ name
+ String.regexp
+ scope
+ string.regexp
+ settings
+
+ fontStyle
+
+ foreground
+ #CF5628
+
+
+
+ name
+ String.regexp.«special»
+ scope
+ string.regexp.character-class, string.regexp constant.character.escaped, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition
+ settings
+
+ fontStyle
+ bold italic
+ foreground
+ #CF5628
+
+
+
+ name
+ String.regexp constant.character.escape
+ scope
+ string.regexp constant.character.escape
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #811F24
+
+
+
+ name
+ Embedded Source
+ scope
+ text source
+ settings
+
+ background
+ #6F8BBA26
+
+
+
+ name
+ Support.function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #693A17
+
+
+
+ name
+ Support.constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #B4371F
+
+
+
+ name
+ Support.variable
+ scope
+ support.variable
+ settings
+
+ foreground
+ #234A97
+
+
+
+ name
+ Markup.list
+ scope
+ markup.list
+ settings
+
+ foreground
+ #693A17
+
+
+
+ name
+ Markup.heading
+ scope
+ markup.heading | markup.heading entity.name
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #19356D
+
+
+
+ name
+ Markup.quote
+ scope
+ markup.quote
+ settings
+
+ background
+ #BBBBBB30
+ fontStyle
+ italic
+ foreground
+ #0B6125
+
+
+
+ name
+ Markup.italic
+ scope
+ markup.italic
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #080808
+
+
+
+ name
+ Markup.bold
+ scope
+ markup.bold
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #080808
+
+
+
+ name
+ Markup.underline
+ scope
+ markup.underline
+ settings
+
+ fontStyle
+ underline
+ foreground
+ #080808
+
+
+
+ name
+ Markup.link
+ scope
+ markup.link
+ settings
+
+ fontStyle
+ italic underline
+ foreground
+ #234A97
+
+
+
+ name
+ Markup.raw
+ scope
+ markup.raw
+ settings
+
+ background
+ #BBBBBB30
+ fontStyle
+
+ foreground
+ #234A97
+
+
+
+ name
+ Markup.deleted
+ scope
+ markup.deleted
+ settings
+
+ foreground
+ #59140E
+
+
+
+ name
+ Meta.separator
+ scope
+ meta.separator
+ settings
+
+ background
+ #DCDCDC
+ fontStyle
+ bold
+ foreground
+ #19356D
+
+
+
+ uuid
+ E7E82498-F9EA-49A6-A0D8-12327EA46B01
+
+
diff --git a/tool/tmthemes/Twilight.tmTheme b/tool/tmthemes/Twilight.tmTheme
new file mode 100644
index 00000000..a83f7ecb
--- /dev/null
+++ b/tool/tmthemes/Twilight.tmTheme
@@ -0,0 +1,514 @@
+
+
+
+
+ author
+ Michael Sheets
+ name
+ Twilight
+ settings
+
+
+ settings
+
+ background
+ #141414
+ caret
+ #A7A7A7
+ foreground
+ #F8F8F8
+ invisibles
+ #FFFFFF40
+ lineHighlight
+ #FFFFFF08
+ selection
+ #DDF0FF33
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #5F5A60
+
+
+
+ name
+ Constant
+ scope
+ constant
+ settings
+
+ foreground
+ #CF6A4C
+
+
+
+ name
+ Entity
+ scope
+ entity
+ settings
+
+ fontStyle
+
+ foreground
+ #9B703F
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #CDA869
+
+
+
+ name
+ Storage
+ scope
+ storage
+ settings
+
+ fontStyle
+
+ foreground
+ #F9EE98
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ fontStyle
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ Support
+ scope
+ support
+ settings
+
+ fontStyle
+
+ foreground
+ #9B859D
+
+
+
+ name
+ Variable
+ scope
+ variable
+ settings
+
+ foreground
+ #7587A6
+
+
+
+ name
+ Invalid – Deprecated
+ scope
+ invalid.deprecated
+ settings
+
+ fontStyle
+ italic underline
+ foreground
+ #D2A8A1
+
+
+
+ name
+ Invalid – Illegal
+ scope
+ invalid.illegal
+ settings
+
+ background
+ #562D56BF
+ foreground
+ #F8F8F8
+
+
+
+ name
+ -----------------------------------
+ settings
+
+
+
+ name
+ ♦ Embedded Source
+ scope
+ text source
+ settings
+
+ background
+ #B0B3BA14
+
+
+
+ name
+ ♦ Embedded Source (Bright)
+ scope
+ text.html.ruby source
+ settings
+
+ background
+ #B1B3BA21
+
+
+
+ name
+ ♦ Entity inherited-class
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #9B5C2E
+
+
+
+ name
+ ♦ String embedded-source
+ scope
+ string source
+ settings
+
+ fontStyle
+
+ foreground
+ #DAEFA3
+
+
+
+ name
+ ♦ String constant
+ scope
+ string constant
+ settings
+
+ foreground
+ #DDF2A4
+
+
+
+ name
+ ♦ String.regexp
+ scope
+ string.regexp
+ settings
+
+ fontStyle
+
+ foreground
+ #E9C062
+
+
+
+ name
+ ♦ String.regexp.«special»
+ scope
+ string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition
+ settings
+
+ foreground
+ #CF7D34
+
+
+
+ name
+ ♦ String variable
+ scope
+ string variable
+ settings
+
+ foreground
+ #8A9A95
+
+
+
+ name
+ ♦ Support.function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #DAD085
+
+
+
+ name
+ ♦ Support.constant
+ scope
+ support.constant
+ settings
+
+ fontStyle
+
+ foreground
+ #CF6A4C
+
+
+
+ name
+ c C/C++ Preprocessor Line
+ scope
+ meta.preprocessor.c
+ settings
+
+ foreground
+ #8996A8
+
+
+
+ name
+ c C/C++ Preprocessor Directive
+ scope
+ meta.preprocessor.c keyword
+ settings
+
+ foreground
+ #AFC4DB
+
+
+
+ name
+ ✘ Doctype/XML Processing
+ scope
+ meta.tag.sgml.doctype, meta.tag.sgml.doctype entity, meta.tag.sgml.doctype string, meta.tag.preprocessor.xml, meta.tag.preprocessor.xml entity, meta.tag.preprocessor.xml string
+ settings
+
+ foreground
+ #494949
+
+
+
+ name
+ ✘ Meta.tag.«all»
+ scope
+ declaration.tag, declaration.tag entity, meta.tag, meta.tag entity
+ settings
+
+ foreground
+ #AC885B
+
+
+
+ name
+ ✘ Meta.tag.inline
+ scope
+ declaration.tag.inline, declaration.tag.inline entity, source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity
+ settings
+
+ foreground
+ #E0C589
+
+
+
+ name
+ § css tag-name
+ scope
+ meta.selector.css entity.name.tag
+ settings
+
+ foreground
+ #CDA869
+
+
+
+ name
+ § css:pseudo-class
+ scope
+ meta.selector.css entity.other.attribute-name.tag.pseudo-class
+ settings
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ § css#id
+ scope
+ meta.selector.css entity.other.attribute-name.id
+ settings
+
+ foreground
+ #8B98AB
+
+
+
+ name
+ § css.class
+ scope
+ meta.selector.css entity.other.attribute-name.class
+ settings
+
+ foreground
+ #9B703F
+
+
+
+ name
+ § css property-name:
+ scope
+ support.type.property-name.css
+ settings
+
+ foreground
+ #C5AF75
+
+
+
+ name
+ § css property-value;
+ scope
+ meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css
+ settings
+
+ foreground
+ #F9EE98
+
+
+
+ name
+ § css @at-rule
+ scope
+ meta.preprocessor.at-rule keyword.control.at-rule
+ settings
+
+ foreground
+ #8693A5
+
+
+
+ name
+ § css additional-constants
+ scope
+ meta.property-value support.constant.named-color.css, meta.property-value constant
+ settings
+
+ foreground
+ #CA7840
+
+
+
+ name
+ § css constructor.argument
+ scope
+ meta.constructor.argument.css
+ settings
+
+ foreground
+ #8F9D6A
+
+
+
+ name
+ ⎇ diff.header
+ scope
+ meta.diff, meta.diff.header, meta.separator
+ settings
+
+ background
+ #0E2231
+ fontStyle
+ italic
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.deleted
+ scope
+ markup.deleted
+ settings
+
+ background
+ #420E09
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.changed
+ scope
+ markup.changed
+ settings
+
+ background
+ #4A410D
+ foreground
+ #F8F8F8
+
+
+
+ name
+ ⎇ diff.inserted
+ scope
+ markup.inserted
+ settings
+
+ background
+ #253B22
+ foreground
+ #F8F8F8
+
+
+
+ name
+ Markup: List
+ scope
+ markup.list
+ settings
+
+ foreground
+ #F9EE98
+
+
+
+ name
+ Markup: Heading
+ scope
+ markup.heading
+ settings
+
+ foreground
+ #CF6A4C
+
+
+
+ uuid
+ 766026CB-703D-4610-B070-8DE07D967C5F
+
+
diff --git a/tool/tmthemes/idleFingers.tmTheme b/tool/tmthemes/idleFingers.tmTheme
new file mode 100644
index 00000000..51666df3
--- /dev/null
+++ b/tool/tmthemes/idleFingers.tmTheme
@@ -0,0 +1,380 @@
+
+
+
+
+ name
+ idleFingers
+ settings
+
+
+ settings
+
+ background
+ #323232
+ caret
+ #91FF00
+ foreground
+ #FFFFFF
+ invisibles
+ #404040
+ lineHighlight
+ #353637
+ selection
+ #5A647EE0
+
+
+
+ name
+ text
+ scope
+ text
+ settings
+
+ foreground
+ #FFFFFF
+
+
+
+ name
+ Source base
+ scope
+ source
+ settings
+
+ background
+ #282828
+ foreground
+ #CDCDCD
+
+
+
+ name
+ Comment
+ scope
+ comment
+ settings
+
+ fontStyle
+ italic
+ foreground
+ #BC9458
+
+
+
+ name
+ Html Tags
+ scope
+ meta.tag, declaration.tag, meta.doctype
+ settings
+
+ foreground
+ #FFE5BB
+
+
+
+ name
+ Function Name
+ scope
+ entity.name
+ settings
+
+ foreground
+ #FFC66D
+
+
+
+ name
+ Ruby Function Name
+ scope
+ source.ruby entity.name
+ settings
+
+ foreground
+ #FFF980
+
+
+
+ name
+ Other Variable
+ scope
+ variable.other
+ settings
+
+ foreground
+ #B7DFF8
+
+
+
+ name
+ Ruby Class Name
+ scope
+ support.class.ruby
+ settings
+
+ foreground
+ #CCCC33
+
+
+
+ name
+ Constant
+ scope
+ constant, support.constant
+ settings
+
+ foreground
+ #6C99BB
+
+
+
+ name
+ Keyword
+ scope
+ keyword
+ settings
+
+ fontStyle
+
+ foreground
+ #CC7833
+
+
+
+ name
+ Pre-processor Line
+ scope
+ other.preprocessor.c
+ settings
+
+ fontStyle
+
+ foreground
+ #D0D0FF
+
+
+
+ name
+ Pre-processor Directive
+ scope
+ entity.name.preprocessor
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Function name
+ scope
+ entity.name.function
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Function argument
+ scope
+ variable.parameter
+ settings
+
+ fontStyle
+ italic
+
+
+
+ name
+ Block comment
+ scope
+ source comment.block
+ settings
+
+ background
+ #575757
+ foreground
+ #FFFFFF
+
+
+
+ name
+ String
+ scope
+ string
+ settings
+
+ foreground
+ #A5C261
+
+
+
+ name
+ String escapes
+ scope
+ string constant.character.escape
+ settings
+
+ foreground
+ #AAAAAA
+
+
+
+ name
+ String (executed)
+ scope
+ string.interpolated
+ settings
+
+ background
+ #CCCC33
+ foreground
+ #000000
+
+
+
+ name
+ Regular expression
+ scope
+ string.regexp
+ settings
+
+ foreground
+ #CCCC33
+
+
+
+ name
+ String (literal)
+ scope
+ string.literal
+ settings
+
+ foreground
+ #CCCC33
+
+
+
+ name
+ String escapes (executed)
+ scope
+ string.interpolated constant.character.escape
+ settings
+
+ foreground
+ #787878
+
+
+
+ name
+ Class name
+ scope
+ entity.name.class
+ settings
+
+ fontStyle
+ underline
+
+
+
+ name
+ Class inheritance
+ scope
+ entity.other.inherited-class
+ settings
+
+ fontStyle
+ italic underline
+
+
+
+ name
+ Tag name
+ scope
+ entity.name.tag
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Tag attribute
+ scope
+ entity.other.attribute-name
+ settings
+
+ fontStyle
+
+
+
+
+ name
+ Support function
+ scope
+ support.function
+ settings
+
+ fontStyle
+
+ foreground
+ #B83426
+
+
+
+ name
+ Textile List
+ scope
+ markup.list.unnumbered.textile
+ settings
+
+ foreground
+ #6EA533
+
+
+
+ name
+ Textile Numbered list
+ scope
+ markup.list.numbered.textile
+ settings
+
+ foreground
+ #6EA533
+
+
+
+ name
+ Textile Bold
+ scope
+ markup.bold.textile
+ settings
+
+ fontStyle
+ bold
+ foreground
+ #C2C2C2
+
+
+
+ name
+ Invalid
+ scope
+ invalid
+ settings
+
+ background
+ #FF0000
+ fontStyle
+
+ foreground
+ #FFFFFF
+
+
+
+ uuid
+ 95BEF169-A2E5-4041-A84A-AAFC1DD61558
+
+
|