From 16af2a576cac1f5d8607bd24abd42a8b74d90e66 Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 15:30:32 -0400 Subject: [PATCH 01/17] Update prototype to use support.constant This is what it used to use in the old JavaScript syntax --- JavaScript/JavaScript.sublime-syntax | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 2506afe6df..bfa10c3f2b 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -174,7 +174,7 @@ contexts: captures: 1: entity.name.class.js 2: keyword.operator.accessor.js - 3: variable.language.prototype.js + 3: support.constant.prototype.js 4: keyword.operator.accessor.js 5: entity.name.function.js 6: storage.type.js @@ -197,7 +197,7 @@ contexts: captures: 1: entity.name.class.js 2: keyword.operator.accessor.js - 3: variable.language.prototype.js + 3: support.constant.prototype.js 4: keyword.operator.accessor.js 5: entity.name.function.js 6: storage.type.js @@ -426,7 +426,7 @@ contexts: captures: 1: entity.name.class.js 2: keyword.operator.accessor.js - 3: variable.language.prototype.js + 3: support.constant.prototype.js 4: keyword.operator.accessor.js 5: entity.name.function.js 6: storage.type.js @@ -754,13 +754,13 @@ contexts: captures: 1: entity.name.class.js 2: keyword.operator.accessor.js - 3: variable.language.prototype.js + 3: support.constant.prototype.js - match: '([_$a-zA-Z][$\w]*)(\.)(prototype)\s*=\s*' scope: meta.prototype.declaration.js captures: 1: entity.name.class.js 2: keyword.operator.accessor.js - 3: variable.language.prototype.js + 3: support.constant.prototype.js literal-punctuation: - match: \; scope: punctuation.terminator.statement.js From 29d2efd00f079f54a99200c10f28fe48a33c3836 Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 15:41:31 -0400 Subject: [PATCH 02/17] Make sure support functions are actually called --- JavaScript/JavaScript.sublime-syntax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index bfa10c3f2b..ec2b55de80 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -936,9 +936,9 @@ contexts: support: - match: \b(Array|Boolean|Date|Function|Map|Math|Number|Object|Promise|Proxy|RegExp|Set|String|WeakMap)\b scope: support.class.builtin.js - - match: (? Date: Sun, 30 Aug 2015 15:41:58 -0400 Subject: [PATCH 03/17] Add setTimeout and clearTimeout --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index ec2b55de80..775bfe9e27 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -936,7 +936,7 @@ contexts: support: - match: \b(Array|Boolean|Date|Function|Map|Math|Number|Object|Promise|Proxy|RegExp|Set|String|WeakMap)\b scope: support.class.builtin.js - - match: (? Date: Sun, 30 Aug 2015 15:42:30 -0400 Subject: [PATCH 04/17] Make sure preceding dot is not highlighted --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 775bfe9e27..11d0618be1 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -938,7 +938,7 @@ contexts: scope: support.class.builtin.js - match: (? Date: Sun, 30 Aug 2015 15:44:31 -0400 Subject: [PATCH 05/17] Add $ keyword specifically for jQuery In the previous syntax definition this was just grouped under keyword.operator which was removed in Javascript Next. This is adding it back as a one-off check to preserve highlighting. --- JavaScript/JavaScript.sublime-syntax | 2 ++ 1 file changed, 2 insertions(+) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 11d0618be1..782f5e4f39 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -944,6 +944,8 @@ contexts: scope: support.class.error.js - match: (? Date: Sun, 30 Aug 2015 16:43:59 -0400 Subject: [PATCH 06/17] Use proper language scope for extends --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 782f5e4f39..96dda669a7 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -334,7 +334,7 @@ contexts: pop: true - match: \b(extends)\b captures: - 1: storage.type.extends.js + 1: storage.modifier.extends.js push: - meta_scope: meta.class.extends.js - match: "(?={)" From a68ab15685bb2a9f8515a194e2f8c51a10db354b Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 16:44:40 -0400 Subject: [PATCH 07/17] Properly highlight parent class --- JavaScript/JavaScript.sublime-syntax | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 96dda669a7..e8276067db 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -332,9 +332,10 @@ contexts: captures: 0: meta.brace.curly.js pop: true - - match: \b(extends)\b + - match: \b(extends)\b ([_$a-zA-Z][$\w]*)? captures: 1: storage.modifier.extends.js + 2: entity.other.inherited-class.js push: - meta_scope: meta.class.extends.js - match: "(?={)" From 8db4ab89945cddbb4d97767764c10ebdeacf15b9 Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 16:51:16 -0400 Subject: [PATCH 08/17] Allow any number of spaces --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index e8276067db..861607df0b 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -332,7 +332,7 @@ contexts: captures: 0: meta.brace.curly.js pop: true - - match: \b(extends)\b ([_$a-zA-Z][$\w]*)? + - match: \b(extends)\b\s+([_$a-zA-Z][$\w]*)? captures: 1: storage.modifier.extends.js 2: entity.other.inherited-class.js From 0c757fd951afb1dd79dee2b94109d2e588123596 Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 16:55:38 -0400 Subject: [PATCH 09/17] Make sure accessor functions are treated as functions --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 861607df0b..6c6eb07dec 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -612,7 +612,7 @@ contexts: captures: 1: storage.type.js 2: storage.type.accessor.js - 3: entity.name.accessor.js + 3: entity.name.function.accessor.js push: - meta_scope: meta.accessor.js - match: (?<=\)) From 87df6163d2b4c172f6097d39f7acb7e082d0231f Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 16:58:42 -0400 Subject: [PATCH 10/17] Make sure es6 methods are treated as functions --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 6c6eb07dec..64e3e440bc 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -597,7 +597,7 @@ contexts: 1: storage.type.js 2: storage.type.js 3: keyword.generator.asterisk.js - 4: entity.name.method.js + 4: entity.name.function.method.js push: - meta_scope: meta.method.js - match: (?<=\)) From c17ac25c670b58f5830dbe9cfcc7fbb07dcaccb2 Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 17:02:46 -0400 Subject: [PATCH 11/17] Add super to the list of support functions --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 64e3e440bc..03ee88c847 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -937,7 +937,7 @@ contexts: support: - match: \b(Array|Boolean|Date|Function|Map|Math|Number|Object|Promise|Proxy|RegExp|Set|String|WeakMap)\b scope: support.class.builtin.js - - match: (? Date: Sun, 30 Aug 2015 17:35:01 -0400 Subject: [PATCH 12/17] Use proper grammar scope for class definitions --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 03ee88c847..960a22ea9f 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -325,7 +325,7 @@ contexts: \s+((?!\b(extends)\b)[_$a-zA-Z][$\w]*)? captures: 1: storage.type.class.js - 2: entity.name.class.js + 2: entity.name.type.class.js push: - meta_scope: meta.class.js - match: "}" From 3b7922673d21e048b5d5694bdca4ae24241fa5af Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 18:49:26 -0400 Subject: [PATCH 13/17] Fix static function highlighting --- JavaScript/JavaScript.sublime-syntax | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 960a22ea9f..2d4183f742 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -441,20 +441,22 @@ contexts: - include: function-declaration-parameters - match: |- (?x) - (\b_?[A-Z][$\w]*)? - (\.)([_$a-zA-Z][$\w]*) - \s*= + (\b_?[a-zA-Z_?.$]*)? + (\.)([_$a-zA-Z][$\.\w]*) + \s*(=) \s*(?:(async)\s+)? \s*(function)(?:\s*(\*)|(?=\s|[(])) \s*([_$a-zA-Z][$\w]*)?\s* captures: - 1: entity.name.class.js + 1: support.class.js 2: keyword.operator.accessor.js 3: entity.name.function.js - 4: storage.type.js + 4: keyword.operator.js 5: storage.type.function.js - 6: keyword.generator.asterisk.js - 7: entity.name.function.js + 6: storage.type.js + 7: storage.type.function.js + 8: keyword.generator.asterisk.js + 9: entity.name.function.js push: - meta_scope: meta.function.static.js - match: (?<=\)) From 18f4457c7f7e7c1783868ca894f3757fabb91020 Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 19:03:24 -0400 Subject: [PATCH 14/17] Fix order of captures --- JavaScript/JavaScript.sublime-syntax | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 2d4183f742..5af3b457db 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -452,11 +452,10 @@ contexts: 2: keyword.operator.accessor.js 3: entity.name.function.js 4: keyword.operator.js - 5: storage.type.function.js - 6: storage.type.js - 7: storage.type.function.js - 8: keyword.generator.asterisk.js - 9: entity.name.function.js + 5: storage.type.js + 6: storage.type.function.js + 7: keyword.generator.asterisk.js + 8: entity.name.function.js push: - meta_scope: meta.function.static.js - match: (?<=\)) From dc6076ad656b7a979fa0ee4301ae51d8df9d0d98 Mon Sep 17 00:00:00 2001 From: Craig Campbell Date: Sun, 30 Aug 2015 20:46:48 -0400 Subject: [PATCH 15/17] Add back removed DOM constants I'm not sure if there was a reason these were removed --- JavaScript/JavaScript.sublime-syntax | 2 ++ 1 file changed, 2 insertions(+) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 5af3b457db..4e73aa4dd4 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -950,6 +950,8 @@ contexts: scope: keyword.other.jquery.js - match: (? Date: Sun, 30 Aug 2015 21:02:02 -0400 Subject: [PATCH 16/17] Add XMLHttpRequest to list of built in classes --- JavaScript/JavaScript.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index 4e73aa4dd4..fd88bbaebc 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -936,7 +936,7 @@ contexts: - match: '\\(x[\da-fA-F]{2}|u[\da-fA-F]{4}|.)' scope: constant.character.escape.js support: - - match: \b(Array|Boolean|Date|Function|Map|Math|Number|Object|Promise|Proxy|RegExp|Set|String|WeakMap)\b + - match: \b(Array|Boolean|Date|Function|Map|Math|Number|Object|Promise|Proxy|RegExp|Set|String|WeakMap|XMLHttpRequest)\b scope: support.class.builtin.js - match: (? Date: Sun, 30 Aug 2015 21:27:59 -0400 Subject: [PATCH 17/17] Add back removed DOM functions --- JavaScript/JavaScript.sublime-syntax | 2 ++ 1 file changed, 2 insertions(+) diff --git a/JavaScript/JavaScript.sublime-syntax b/JavaScript/JavaScript.sublime-syntax index fd88bbaebc..d3c8f47c83 100644 --- a/JavaScript/JavaScript.sublime-syntax +++ b/JavaScript/JavaScript.sublime-syntax @@ -960,6 +960,8 @@ contexts: WRONG_DOCUMENT_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR|NOT_SUPPORTED_ERR|INUSE_ATTRIBUTE_ERR )\b scope: support.constant.dom.js + - match: \b(s(ub(stringData|mit)|plitText|e(t(NamedItem|Attribute(Node)?)|lect))|has(ChildNodes|Feature)|namedItem|c(l(ick|o(se|neNode))|reate(C(omment|DATASection|aption)|T(Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(ntityReference|lement)|Attribute))|tabIndex|i(nsert(Row|Before|Cell|Data)|tem)|open|delete(Row|C(ell|aption)|T(Head|Foot)|Data)|focus|write(ln)?|a(dd|ppend(Child|Data))|re(set|place(Child|Data)|move(NamedItem|Child|Attribute(Node)?)?)|get(NamedItem|Element(sBy(Name|TagName)|ById)|Attribute(Node)?)|blur)\b(?=\() + scope: support.function.dom.js - match: (?