diff --git a/lib/ace/mode/html_highlight_rules.js b/lib/ace/mode/html_highlight_rules.js
index 8c1449c0..3dff3c5a 100644
--- a/lib/ace/mode/html_highlight_rules.js
+++ b/lib/ace/mode/html_highlight_rules.js
@@ -47,8 +47,7 @@ var HtmlHighlightRules = function() {
// regexp must not have capturing parentheses
// regexps are ordered -> the first match is used
function string(state) {
- return [
- {
+ return [{
token : "string",
regex : '".*?"'
}, {
@@ -94,6 +93,9 @@ var HtmlHighlightRules = function() {
next : name + "-attribute-list"
}];
+ states[name + "-qstring"] = multiLineString("'", name);
+ states[name + "-qqstring"] = multiLineString("\"", name);
+
states[name + "-attribute-list"] = [{
token : "text",
regex : ">",
@@ -107,7 +109,7 @@ var HtmlHighlightRules = function() {
}, {
token : "text",
regex : "\\s+"
- }].concat(string("attribute-list"));
+ }].concat(string(name));
};
this.$rules = {
@@ -143,14 +145,7 @@ var HtmlHighlightRules = function() {
token : "text",
regex : "[^<]+"
} ],
-
- "style-qstring": multiLineString("'", "style"),
- "style-qqstring": multiLineString('"', "style"),
- "script-qstring": multiLineString("'", "script"),
- "script-qqstring": multiLineString('"', "script"),
- "tag-qstring": multiLineString("'", "tag"),
- "tag-qqstring": multiLineString('"', "tag"),
-
+
cdata : [ {
token : "text",
regex : "\\]\\]>",
diff --git a/lib/ace/mode/html_tokenizer_test.js b/lib/ace/mode/html_tokenizer_test.js
index 4b6d7f2f..9ba6dc4f 100644
--- a/lib/ace/mode/html_tokenizer_test.js
+++ b/lib/ace/mode/html_tokenizer_test.js
@@ -56,15 +56,15 @@ module.exports = {
//assert.equal(10, tokens.length);
assert.equal("text", tokens[0].type);
- assert.equal("keyword", tokens[1].type);
+ assert.equal("meta.tag", tokens[1].type);
assert.equal("text", tokens[2].type);
- assert.equal("keyword", tokens[3].type);
+ assert.equal("entity.other.attribute-name", tokens[3].type);
assert.equal("text", tokens[4].type);
assert.equal("string", tokens[5].type);
assert.equal("text", tokens[6].type);
assert.equal("keyword", tokens[7].type);
assert.equal("text", tokens[8].type);
- assert.equal("keyword", tokens[9].type);
+ assert.equal("meta.tag", tokens[9].type);
assert.equal("text", tokens[10].type);
},
@@ -77,7 +77,7 @@ module.exports = {
},
"test: tokenize multiline attribute value with single quotes": function() {
- var line1 = this.tokenizer.getLineTokens('', line1.state).tokens;
assert.equal(t1[t1.length-1].type, "string");