From 09ce9ca87c0b44a5b1f95060bd7d5cb8aa67e6f8 Mon Sep 17 00:00:00 2001 From: CentricStorm Date: Tue, 13 Feb 2018 23:40:52 +0000 Subject: [PATCH] Add regular expression s flag highlighting. --- grammars/javascript.cson | 4 +++- spec/javascript-spec.coffee | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/grammars/javascript.cson b/grammars/javascript.cson index 1c77ac54..406b9bdd 100644 --- a/grammars/javascript.cson +++ b/grammars/javascript.cson @@ -1137,10 +1137,12 @@ 'beginCaptures': '1': 'name': 'punctuation.definition.string.begin.js' - 'end': '(/)[gimuy]*' + 'end': '(/)([gimsuy]*)' 'endCaptures': '1': 'name': 'punctuation.definition.string.end.js' + '2': + 'name': 'meta.flag.regexp' 'name': 'string.regexp.js' 'patterns': [ { diff --git a/spec/javascript-spec.coffee b/spec/javascript-spec.coffee index 273c9451..a73712fe 100644 --- a/spec/javascript-spec.coffee +++ b/spec/javascript-spec.coffee @@ -186,6 +186,22 @@ describe "JavaScript grammar", -> expect(tokens[1]).toEqual value: 'test', scopes: ['source.js', 'string.regexp.js'] expect(tokens[2]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.end.js'] + {tokens} = grammar.tokenizeLine('/random/g') + expect(tokens[0]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.begin.js'] + expect(tokens[1]).toEqual value: 'random', scopes: ['source.js', 'string.regexp.js'] + expect(tokens[2]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.end.js'] + expect(tokens[3]).toEqual value: 'g', scopes: ['source.js', 'string.regexp.js', 'meta.flag.regexp'] + + {tokens} = grammar.tokenizeLine('/rock(et)?/is') + expect(tokens[0]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.begin.js'] + expect(tokens[1]).toEqual value: 'rock', scopes: ['source.js', 'string.regexp.js'] + expect(tokens[2]).toEqual value: '(', scopes: ['source.js', 'string.regexp.js', 'meta.group.regexp', 'punctuation.definition.group.regexp'] + expect(tokens[3]).toEqual value: 'et', scopes: ['source.js', 'string.regexp.js', 'meta.group.regexp'] + expect(tokens[4]).toEqual value: ')', scopes: ['source.js', 'string.regexp.js', 'meta.group.regexp', 'punctuation.definition.group.regexp'] + expect(tokens[5]).toEqual value: '?', scopes: ['source.js', 'string.regexp.js', 'keyword.operator.quantifier.regexp'] + expect(tokens[6]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.end.js'] + expect(tokens[7]).toEqual value: 'is', scopes: ['source.js', 'string.regexp.js', 'meta.flag.regexp'] + {tokens} = grammar.tokenizeLine('/(?<=foo)test(?=bar)/') expect(tokens[0]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.begin.js'] expect(tokens[1]).toEqual value: '(', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp', 'punctuation.definition.group.regexp']