diff --git a/lib/ace/mode/coffee_highlight_rules.js b/lib/ace/mode/coffee_highlight_rules.js index 98ba0659..469be879 100644 --- a/lib/ace/mode/coffee_highlight_rules.js +++ b/lib/ace/mode/coffee_highlight_rules.js @@ -125,7 +125,7 @@ define(function(require, exports, module) { next : "heregex" }, { token : "string.regex", - regex : "/(?!\\s)[^[/\\n\\\\]*(?: (?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[/\\n\\\\]*)*/[imgy]{0,4}(?!\\w)" + regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ }, { token : "comment", merge : true, diff --git a/lib/ace/mode/coffee_highlight_rules_test.js b/lib/ace/mode/coffee_highlight_rules_test.js index eaf85531..a606ca1c 100644 --- a/lib/ace/mode/coffee_highlight_rules_test.js +++ b/lib/ace/mode/coffee_highlight_rules_test.js @@ -49,6 +49,12 @@ module.exports = { assert.equal(tokens[0].type, "keyword"); }, + "test: tokenize regexp": function() { + var tokens = this.tokenizer.getLineTokens('/"[a]/', "start").tokens; + assert.equal(tokens.length, 1); + assert.equal(tokens[0].type, "string.regex"); + }, + // TODO: disable. not yet implemented "!test tokenize string with interpolation": function() { var tokens = this.tokenizer.getLineTokens('"#{ 22 / 7 } is a decent approximation of π"', "start").tokens;