@@ -192,13 +192,13 @@ endif "DOM/HTML/CSS
192192" " end DOM/HTML/CSS specified things
193193
194194" " Code blocks
195- syntax cluster jsExpression contains =jsComment,jsLineComment,jsBlockComment,jsTaggedTemplate,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsStatic,jsSuper,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsCommonJS,jsAssignmentExpr,jsImportContainer,jsExportContainer,jsArgsObj,jsDecorator,jsAsyncKeyword,jsClassDefinition
195+ syntax cluster jsExpression contains =jsComment,jsLineComment,jsBlockComment,jsTaggedTemplate,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsStatic,jsSuper,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsCommonJS,jsAssignmentExpr,jsImportContainer,jsExportContainer,jsArgsObj,jsDecorator,jsAsyncKeyword,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs
196196syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
197197syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
198198syntax region jsParen matchgroup =jsParens start =" (" end =" )" contains =@jsAll,jsOf,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
199199syntax region jsBlock matchgroup =jsBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc,jsClassDefinition fold
200200syntax region jsClassBlock matchgroup =jsClassBraces start =" {" end =" }" contains =jsFuncName,jsClassMethodDefinitions contained fold
201- syntax region jsFuncBlock matchgroup =jsFuncBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc,jsClassDefinition contained fold
201+ syntax region jsFuncBlock matchgroup =jsFuncBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc,jsClassDefinition fold
202202syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =+ ?+ end =+ :+ contains =@jsExpression,jsTernaryIf
203203
204204" " catch errors caused by wrong parenthesis
@@ -214,15 +214,19 @@ if main_syntax == "javascript"
214214endif
215215
216216exe ' syntax match jsFunction /\<function\>/ nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite ' .(exists (' g:javascript_conceal_function' ) ? ' conceal cchar=' .g: javascript_conceal_function : ' ' )
217+ exe ' syntax match jsArrowFunction /=>/ skipwhite nextgroup=jsFuncBlock contains=jsFuncBraces ' .(exists (' g:javascript_conceal_arrow_function' ) ? ' conceal cchar=' .g: javascript_conceal_arrow_function : ' ' )
217218
218- syntax match jsGenerator contained ' \* ' nextgroup =jsFuncName skipwhite
219+ syntax match jsGenerator contained ' \* ' nextgroup =jsFuncName,jsFuncArgs skipwhite
219220syntax match jsFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup =jsFuncArgs skipwhite
220221syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas,jsFuncArgRest,jsAssignmentExpr,jsComment,jsLineComment nextgroup =jsFuncBlock keepend skipwhite skipempty
221222syntax match jsFuncArgCommas contained ' ,'
222223syntax match jsFuncArgRest contained / \% (\.\.\. [a-zA-Z_$][0-9a-zA-Z_$]*\) )/ contains =jsFuncArgRestDots
223224syntax match jsFuncArgRestDots contained / \.\.\. /
224225
225- exe ' syntax match jsArrowFunction /=>/ ' .(exists (' g:javascript_conceal_arrow_function' ) ? ' conceal cchar=' .g: javascript_conceal_arrow_function : ' ' )
226+ " Matches a single keyword argument with no parens
227+ syntax match jsArrowFuncArgs / \(\k\)\+\s\+\( =>\)\@ =/ skipwhite contains =jsFuncArgs extend
228+ " Matches a series of arguments surrounded in parens
229+ syntax match jsArrowFuncArgs / (\(\k\| ,\|\s\|\n\|\.\) *)\s\+\( =>\)\@ =/ skipwhite contains =jsFuncArgs extend
226230
227231syntax keyword jsClassKeywords extends class contained
228232syntax match jsClassNoise / \. / contained
@@ -278,6 +282,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
278282 HiLink jsArrowFunction Type
279283 HiLink jsFunction Type
280284 HiLink jsGenerator jsFunction
285+ HiLink jsArrowFuncArgs jsFuncArgs
281286 HiLink jsFuncName Function
282287 HiLink jsArgsObj Special
283288 HiLink jsError Error
0 commit comments