From 3c25131a1cbef1c98af90938ac0cea3aeadde86f Mon Sep 17 00:00:00 2001 From: Alhadis Date: Sat, 20 Aug 2016 06:11:01 +1000 Subject: [PATCH 1/3] Clean up grammar source * Simplified character classes for matching variable names: [a-zA-Z_$][a-zA-Z_$0-9]* -> [a-zA-Z_$][\\w$]* * Extended patterns now use triple-quoted blocks consistently * Lengthy patterns converted into extended patterns for readability --- grammars/javascript.cson | 59 ++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/grammars/javascript.cson b/grammars/javascript.cson index 710f83d8..dc68f405 100644 --- a/grammars/javascript.cson +++ b/grammars/javascript.cson @@ -50,13 +50,13 @@ 'name': 'invalid.illegal.js' '5': 'name': 'variable.other.module-alias.js' - 'match': '(?x) - (?: \\b(default)\\b | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) + 'match': '''(?x) + (?: \\b(default)\\b | \\b([a-zA-Z_$][\\w$]*)\\b) \\s* (\\b as \\b) \\s* - (?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) - ' + (?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][\\w$]*)\\b) + ''' } { 'match': ',' @@ -66,7 +66,7 @@ 'include': '#comments' } { - 'match': '\\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b' + 'match': '\\b([a-zA-Z_$][\\w$]*)\\b' 'name': 'variable.other.module.js' } ] @@ -86,13 +86,13 @@ 'name': 'invalid.illegal.js' '6': 'name': 'variable.other.module-alias.js' - 'match': '(?x) - (?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) + 'match': '''(?x) + (?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][\\w$]*)\\b) \\s* (\\b as \\b) \\s* - (?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) - ' + (?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][\\w$]*)\\b) + ''' } { 'match': '\\*' @@ -113,7 +113,7 @@ 'name': 'keyword.control.js' } { - 'match': '\\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b(?=.*\\bfrom\\b)' + 'match': '\\b([a-zA-Z_$][\\w$]*)\\b(?=.*\\bfrom\\b)' 'name': 'variable.other.module.js' } { @@ -126,7 +126,11 @@ } { 'comment': 'ES6 export: `export default (variable|class|function, etc.)`' - 'match': '(?x) \\b(export)\\b \\s* \\b(default)\\b (?:\\s*) \\b((?!\\bfunction\\b|\\bclass\\b|\\blet\\b|\\bvar\\b|\\bconst\\b)[a-zA-Z_$][a-zA-Z_$0-9]*)?\\b' + 'match': '''(?x) + \\b(export)\\b\\s* + \\b(default)\\b\\s* + \\b((?!\\b(?:function|class|let|var|const)\\b)[a-zA-Z_$][\\w$]*)?\\b + ''' 'captures': '0': 'name': 'meta.export.js' @@ -173,13 +177,13 @@ 'name': 'invalid.illegal.js' '6': 'name': 'variable.other.module-alias.js' - 'match': '(?x) - (?: \\b(default)\\b | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) + 'match': '''(?x) + (?: \\b(default)\\b | \\b([a-zA-Z_$][\\w$]*)\\b) \\s* (\\b as \\b) \\s* - (?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) - ' + (?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][\\w$]*)\\b) + ''' } { 'match': ',' @@ -189,7 +193,7 @@ 'include': '#comments' } { - 'match': '\\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b' + 'match': '\\b([a-zA-Z_$][\\w$]*)\\b' 'name': 'variable.other.module.js' } ] @@ -220,13 +224,13 @@ 'name': 'invalid.illegal.js' '6': 'name': 'variable.other.module-alias.js' - 'match': '(?x) - (?: \\b(default)\\b | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) + 'match': '''(?x) + (?: \\b(default)\\b | \\b([a-zA-Z_$][\\w$]*)\\b) \\s* (\\b as \\b) \\s* - (?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b) - ' + (?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][\\w$]*)\\b) + ''' } { 'include': '#comments' @@ -236,7 +240,7 @@ 'name': 'meta.delimiter.object.comma.js' } { - 'match': '\\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b' + 'match': '\\b([a-zA-Z_$][\\w$]*)\\b' 'name': 'variable.other.module.js' } ] @@ -260,7 +264,7 @@ 'name': 'keyword.control.js' } { - 'match': '\\b([a-zA-Z_$][a-zA-Z_$0-9]*)\\b' + 'match': '\\b([a-zA-Z_$][\\w$]*)\\b' 'name': 'variable.other.module.js' } { @@ -1673,7 +1677,16 @@ 'docblock': 'patterns': [ { - 'match': '(? Date: Sun, 21 Aug 2016 02:13:46 +1000 Subject: [PATCH 2/3] Expand patterns for matching DOM/support constants --- grammars/javascript.cson | 53 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/grammars/javascript.cson b/grammars/javascript.cson index dc68f405..32794b5a 100644 --- a/grammars/javascript.cson +++ b/grammars/javascript.cson @@ -967,11 +967,37 @@ 'name': 'keyword.other.js' } { - 'match': '(? Date: Sat, 20 Aug 2016 19:17:41 +0300 Subject: [PATCH 3/3] Clean up pattern groups Closes #276. --- grammars/javascript.cson | 90 +++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 42 deletions(-) diff --git a/grammars/javascript.cson b/grammars/javascript.cson index 32794b5a..ca00a202 100644 --- a/grammars/javascript.cson +++ b/grammars/javascript.cson @@ -20,14 +20,16 @@ 'name': 'JavaScript' 'patterns': [ { - 'comment': 'ES6 import' + # ES6 import 'begin': '(?)' 'captures': '0': 'name': 'punctuation.definition.comment.html.js' '2': 'name': 'punctuation.definition.comment.html.js' - 'match': '()' 'name': 'comment.block.html.js' } { @@ -1114,13 +1114,13 @@ 'name': 'meta.delimiter.method.period.js' } { + # Allows the special return snippet to fire. + 'match': '({)(})' 'captures': '1': 'name': 'punctuation.section.scope.begin.js' '2': 'name': 'punctuation.section.scope.end.js' - 'comment': 'Allows the special return snippet to fire.' - 'match': '({)(})' } { 'begin': '{' @@ -1751,23 +1751,29 @@ 'patterns': [ { 'begin': '/\\*\\*(?!/)' - 'captures': + 'beginCaptures': + '0': + 'name': 'punctuation.definition.comment.js' + 'end': '\\*/' + 'endCaptures': '0': 'name': 'punctuation.definition.comment.js' + 'name': 'comment.block.documentation.js' 'patterns': [ { 'include': '#docblock' } ] - 'end': '\\*/' - 'name': 'comment.block.documentation.js' } { 'begin': '/\\*' - 'captures': + 'beginCaptures': '0': 'name': 'punctuation.definition.comment.js' 'end': '\\*/' + 'endCaptures': + '0': + 'name': 'punctuation.definition.comment.js' 'name': 'comment.block.js' } {