Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit 0ee5864

Browse files
author
Alhadis
committed
Use more specific scope-names when possible
1 parent d95b0ea commit 0ee5864

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

grammars/javascript.cson

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1443,25 +1443,25 @@
14431443
'string_escapes':
14441444
'patterns': [
14451445
{
1446-
'match': '\\\\u(?![A-Fa-f0-9]{4}|\\{[A-Fa-f0-9]+\\})[^\'"]*'
1447-
'name': 'invalid.illegal.identifier.js'
1446+
'match': '\\\\u(?![A-Fa-f0-9]{4}|{[A-Fa-f0-9]+})[^\'"]*'
1447+
'name': 'invalid.illegal.unicode-escape.js'
14481448
}
14491449
{
1450-
'match': '\\\\u(?:[A-Fa-f0-9]{4}|(\\{)([A-Fa-f0-9]+)(\\}))'
1450+
'match': '\\\\u(?:[A-Fa-f0-9]{4}|({)([A-Fa-f0-9]+)(}))'
14511451
'name': 'constant.character.escape.js'
14521452
'captures':
14531453
'1':
1454-
'name': 'punctuation.section.scope.begin.js'
1454+
'name': 'punctuation.definition.unicode-escape.begin.bracket.curly.js'
14551455
'2':
14561456
'patterns': [
14571457
{
14581458
# Max codepoint: \u{10FFFF}
14591459
'match': '[A-Fa-f\\d]{7,}|(?!10)[A-Fa-f\\d]{6}'
1460-
'name': 'invalid.illegal.identifier.js'
1460+
'name': 'invalid.illegal.unicode-escape.js'
14611461
}
14621462
]
14631463
'3':
1464-
'name': 'punctuation.section.scope.end.js'
1464+
'name': 'punctuation.definition.unicode-escape.end.bracket.curly.js'
14651465
}
14661466
{
14671467
'match': '\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)'

spec/javascript-spec.coffee

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ describe "Javascript grammar", ->
5555
expect(lines[2][1]).toEqual value: delim, scopes: ['source.js', scope, 'punctuation.definition.string.end.js']
5656

5757
describe "Unicode escape sequences", ->
58+
bracketScopes = [
59+
'punctuation.definition.unicode-escape.begin.bracket.curly.js',
60+
'punctuation.definition.unicode-escape.end.bracket.curly.js'
61+
]
5862
delimsByScope =
5963
"string.quoted.double.js": '"'
6064
"string.quoted.single.js": "'"
@@ -79,28 +83,28 @@ describe "Javascript grammar", ->
7983
{tokens} = grammar.tokenizeLine(quote + '\\u{2000}' + quote)
8084
expect(tokens[0]).toEqual value: quote, scopes: ['source.js', scope, 'punctuation.definition.string.begin.js']
8185
expect(tokens[1]).toEqual value: '\\u', scopes: ['source.js', scope, 'constant.character.escape.js']
82-
expect(tokens[2]).toEqual value: '{', scopes: ['source.js', scope, 'constant.character.escape.js', 'punctuation.section.scope.begin.js']
86+
expect(tokens[2]).toEqual value: '{', scopes: ['source.js', scope, 'constant.character.escape.js', bracketScopes[0]]
8387
expect(tokens[3]).toEqual value: '2000', scopes: ['source.js', scope, 'constant.character.escape.js']
84-
expect(tokens[4]).toEqual value: '}', scopes: ['source.js', scope, 'constant.character.escape.js', 'punctuation.section.scope.end.js']
88+
expect(tokens[4]).toEqual value: '}', scopes: ['source.js', scope, 'constant.character.escape.js', bracketScopes[1]]
8589
expect(tokens[5]).toEqual value: quote, scopes: ['source.js', scope, 'punctuation.definition.string.end.js']
8690

8791
it "highlights sequences with invalid syntax", ->
8892
for invalid in ['\\u', '\\u{2000', '\\u{G}']
8993
{tokens} = grammar.tokenizeLine('"' + invalid + '"')
90-
expect(tokens[1]).toEqual value: invalid, scopes: ['source.js', 'string.quoted.double.js', 'invalid.illegal.identifier.js']
94+
expect(tokens[1]).toEqual value: invalid, scopes: ['source.js', 'string.quoted.double.js', 'invalid.illegal.unicode-escape.js']
9195

9296
it "highlights sequences with invalid codepoints", ->
9397
maxCodepoint = 0x10FFFF
9498
for codepoint in [0x5000, 0x11FFFF, 0x1000000, maxCodepoint]
9599
pointStr = codepoint.toString(16).toUpperCase().replace(/^0x/, "")
96100
{tokens} = grammar.tokenizeLine('"\\u{' + pointStr + '}"')
97101
pointScopes = ['source.js', 'string.quoted.double.js', 'constant.character.escape.js']
98-
if codepoint > maxCodepoint then pointScopes.push 'invalid.illegal.identifier.js'
102+
if codepoint > maxCodepoint then pointScopes.push 'invalid.illegal.unicode-escape.js'
99103
expect(tokens[0]).toEqual value: '"', scopes: ['source.js', 'string.quoted.double.js', 'punctuation.definition.string.begin.js']
100104
expect(tokens[1]).toEqual value: '\\u', scopes: ['source.js', 'string.quoted.double.js', 'constant.character.escape.js']
101-
expect(tokens[2]).toEqual value: '{', scopes: ['source.js', 'string.quoted.double.js', 'constant.character.escape.js', 'punctuation.section.scope.begin.js']
105+
expect(tokens[2]).toEqual value: '{', scopes: ['source.js', 'string.quoted.double.js', 'constant.character.escape.js', bracketScopes[0]]
102106
expect(tokens[3]).toEqual value: pointStr, scopes: pointScopes
103-
expect(tokens[4]).toEqual value: '}', scopes: ['source.js', 'string.quoted.double.js', 'constant.character.escape.js', 'punctuation.section.scope.end.js']
107+
expect(tokens[4]).toEqual value: '}', scopes: ['source.js', 'string.quoted.double.js', 'constant.character.escape.js', bracketScopes[1]]
104108
expect(tokens[5]).toEqual value: '"', scopes: ['source.js', 'string.quoted.double.js', 'punctuation.definition.string.end.js']
105109

106110
describe "keywords", ->

0 commit comments

Comments
 (0)