From 57a0478a94a0c0cbd9e36cfdd7994604fc750984 Mon Sep 17 00:00:00 2001 From: Wliu <50Wliu@users.noreply.github.com> Date: Fri, 10 Nov 2017 20:11:35 +0100 Subject: [PATCH] Allow more punctuation to precede regexes --- grammars/javascript.cson | 2 +- spec/javascript-spec.coffee | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/grammars/javascript.cson b/grammars/javascript.cson index 11c8cc3d..3962041a 100644 --- a/grammars/javascript.cson +++ b/grammars/javascript.cson @@ -1130,7 +1130,7 @@ 'name': 'constant.language.js' } { - 'begin': '(?<=[\\[=(?:+,!]|^|return|=>|&&|\\|\\|)\\s*(/)(?![/*+?])(?=.*/)' + 'begin': '(?<=[\\[{=(?:+*,!~-]|^|return|=>|&&|\\|\\|)\\s*(/)(?![/*+?])(?=.*/)' 'beginCaptures': '1': 'name': 'punctuation.definition.string.begin.js' diff --git a/spec/javascript-spec.coffee b/spec/javascript-spec.coffee index 6339e3d6..24b3a76e 100644 --- a/spec/javascript-spec.coffee +++ b/spec/javascript-spec.coffee @@ -216,6 +216,14 @@ describe "JavaScript grammar", -> expect(tokens[6]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.end.js'] expect(tokens[7]).toEqual value: ']', scopes: ['source.js', 'meta.brace.square.js'] + it "tokenizes regular expressions inside curly brackets", -> + {tokens} = grammar.tokenizeLine('{/test/}') + expect(tokens[0]).toEqual value: '{', scopes: ['source.js', 'meta.brace.curly.js'] + expect(tokens[1]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.begin.js'] + expect(tokens[2]).toEqual value: 'test', scopes: ['source.js', 'string.regexp.js'] + expect(tokens[3]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.end.js'] + expect(tokens[4]).toEqual value: '}', scopes: ['source.js', 'meta.brace.curly.js'] + it "tokenizes regular expressions inside arrow function expressions", -> {tokens} = grammar.tokenizeLine('getRegex = () => /^helloworld$/;') expect(tokens[9]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.begin.js']