better highlighting of js regexps

This commit is contained in:
nightwing 2012-09-09 17:43:09 +04:00
commit 2a5e44eba2
2 changed files with 18 additions and 6 deletions

View file

@ -243,6 +243,7 @@ var JavaScriptHighlightRules = function() {
],
"regex": [
{
// escapes
token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
}, {
@ -251,13 +252,21 @@ var JavaScriptHighlightRules = function() {
regex: "/\\w*",
next: "start",
merge: true
}, {
// invalid operators
token : "invalid",
regex: /\{\d+,?(?:\d+)?}[+*]|[+*^$?][+*]|\?\?/ // |[^$][?]
}, {
// operators
token : "constant.language.escape",
regex: /\(\?[:=!]|\)|\{\d+,?(?:\d+)?}|[+*]\?|[(|)$^+*?]/
}, {
token: "string.regexp",
regex: "[^\\\\/\\[]+",
regex: /{|[^\[\\{()$^+*?\/]+/,
merge: true
}, {
token: "string.regexp.charachterclass",
regex: "\\[",
token: "constant.language.escape",
regex: /\[\^?/,
next: "regex_character_class",
merge: true
}, {
@ -271,13 +280,16 @@ var JavaScriptHighlightRules = function() {
token: "regexp.keyword.operator",
regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"
}, {
token: "string.regexp.charachterclass",
token: "constant.language.escape",
regex: "]",
next: "regex",
merge: true
}, {
token: "constant.language.escape",
regex: "-",
}, {
token: "string.regexp.charachterclass",
regex: "[^\\\\\\]]+",
regex: /[^\]\-\\]+/,
merge: true
}, {
token: "empty",

View file

@ -134,7 +134,7 @@ module.exports = {
assert.equal("string.regexp", tokens[2].type);
var tokens = this.tokenizer.getLineTokens("a = 1 + /2 + 1/b", "start").tokens;
assert.equal(9, tokens.length);
assert.equal(11, tokens.length);
assert.equal("string.regexp", tokens[8].type);
var tokens = this.tokenizer.getLineTokens("a=/a/ / /a/", "start").tokens;