From 72ae11adec9547b4ebdd0a8c5329243d7cdd286e Mon Sep 17 00:00:00 2001 From: Alexey Malinin Date: Thu, 23 Apr 2015 05:50:44 +0600 Subject: [PATCH] Added support for params in arrows --- grammars/javascript.cson | 19 +++++++++++++++++++ spec/javascript-spec.coffee | 8 ++++++++ 2 files changed, 27 insertions(+) diff --git a/grammars/javascript.cson b/grammars/javascript.cson index 48cfbe0b..f04a0feb 100644 --- a/grammars/javascript.cson +++ b/grammars/javascript.cson @@ -273,6 +273,25 @@ 'name': 'entity.name.type.js' 'name': 'meta.class.js' } + { + 'name': 'meta.function.arrow.js' + 'begin': '(?)' + 'beginCaptures': + '1': + 'name': 'punctuation.definition.parameters.begin.js' + + 'end': '(\\))(\\s*=>)' + 'endCaptures': + '1': + 'name': 'punctuation.definition.parameters.end.js' + '2': + 'name': 'storage.type.arrow.js' + 'patterns': [ + { + 'include': '#function-params' + } + ] + } { 'captures': '1': diff --git a/spec/javascript-spec.coffee b/spec/javascript-spec.coffee index 61c575b4..e787e923 100644 --- a/spec/javascript-spec.coffee +++ b/spec/javascript-spec.coffee @@ -227,6 +227,14 @@ describe "Javascript grammar", -> {tokens} = grammar.tokenizeLine('default: ') expect(tokens[0]).toEqual value: 'default', scopes: ['source.js', 'keyword.control.js'] + it "tokenizes arrow functions with params", -> + {tokens} = grammar.tokenizeLine('(param1,param2)=>{}') + expect(tokens[0]).toEqual value: '(', scopes: ['source.js', 'meta.function.arrow.js', 'punctuation.definition.parameters.begin.js'] + expect(tokens[1]).toEqual value: 'param1', scopes: ['source.js', 'meta.function.arrow.js', 'variable.parameter.function.js'] + expect(tokens[3]).toEqual value: 'param2', scopes: ['source.js', 'meta.function.arrow.js', 'variable.parameter.function.js'] + expect(tokens[4]).toEqual value: ')', scopes: ['source.js', 'meta.function.arrow.js', 'punctuation.definition.parameters.end.js'] + expect(tokens[5]).toEqual value: '=>', scopes: ['source.js', 'meta.function.arrow.js', 'storage.type.arrow.js'] + it "tokenizes comments in function params", -> {tokens} = grammar.tokenizeLine('foo: function (/**Bar*/bar){')