From 4bf3e2b90146967b09f5a4397b31bf6161deb234 Mon Sep 17 00:00:00 2001 From: CentricStorm Date: Mon, 12 Feb 2018 22:12:09 +0000 Subject: [PATCH] Add regular expression lookbehind highlighting. --- .../regular expressions (javascript).cson | 10 ++++--- spec/javascript-spec.coffee | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/grammars/regular expressions (javascript).cson b/grammars/regular expressions (javascript).cson index d9891feb..4ef8a8cc 100644 --- a/grammars/regular expressions (javascript).cson +++ b/grammars/regular expressions (javascript).cson @@ -43,14 +43,18 @@ 'name': 'keyword.operator.or.regexp' } { - 'begin': '(\\()((\\?=)|(\\?!))' + 'begin': '(\\()(?:(\\?=)|(\\?!)|(\\?<=)|(\\? 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('/(?<=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'] + expect(tokens[2]).toEqual value: '?<=', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp', 'meta.assertion.look-behind.regexp'] + expect(tokens[3]).toEqual value: 'foo', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp'] + expect(tokens[4]).toEqual value: ')', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp', 'punctuation.definition.group.regexp'] + expect(tokens[5]).toEqual value: 'test', scopes: ['source.js', 'string.regexp.js'] + expect(tokens[6]).toEqual value: '(', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp', 'punctuation.definition.group.regexp'] + expect(tokens[7]).toEqual value: '?=', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp', 'meta.assertion.look-ahead.regexp'] + expect(tokens[8]).toEqual value: 'bar', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp'] + expect(tokens[9]).toEqual value: ')', scopes: ['source.js', 'string.regexp.js', 'meta.group.assertion.regexp', 'punctuation.definition.group.regexp'] + expect(tokens[10]).toEqual value: '/', scopes: ['source.js', 'string.regexp.js', 'punctuation.definition.string.end.js'] + + {tokens} = grammar.tokenizeLine('/(?