@@ -24,7 +24,8 @@ syntax sync fromstart
2424" syntax case ignore
2525syntax case match
2626
27- syntax match jsNoise / [:,;]/
27+ syntax match jsNoise / [:;]/
28+ syntax match jsNoise / ,/ skipwhite skipempty nextgroup =@jsExpression
2829syntax match jsDot / \. / skipwhite skipempty nextgroup =jsObjectProp,jsFuncCall,jsPrototype,jsTaggedTemplate
2930syntax match jsObjectProp contained / \<\K\k */
3031syntax match jsFuncCall / \<\K\k *\z e\s *(/
@@ -33,7 +34,8 @@ syntax match jsParensError /[)}\]]/
3334" Program Keywords
3435syntax keyword jsStorageClass const var let skipwhite skipempty nextgroup =jsDestructuringBlock,jsDestructuringArray,jsVariableDef
3536syntax match jsVariableDef contained / \<\K\k */ skipwhite skipempty nextgroup =jsFlowDefinition
36- syntax keyword jsOperatorKeyword delete instanceof typeof void new in of skipwhite skipempty nextgroup =@jsExpression
37+ syntax keyword jsOperatorKeyword delete instanceof typeof void new in skipwhite skipempty nextgroup =@jsExpression
38+ syntax keyword jsOf of skipwhite skipempty nextgroup =@jsExpression
3739syntax match jsOperator " [-!|&+<>=%/*~^]" skipwhite skipempty nextgroup =@jsExpression
3840syntax match jsOperator / ::/ skipwhite skipempty nextgroup =@jsExpression
3941syntax keyword jsBooleanTrue true
@@ -99,7 +101,8 @@ syntax keyword jsStatement contained break continue skipwhite skipempty next
99101syntax keyword jsConditional if skipwhite skipempty nextgroup =jsParenIfElse
100102syntax keyword jsConditional else skipwhite skipempty nextgroup =jsCommentIfElse,jsIfElseBlock
101103syntax keyword jsConditional switch skipwhite skipempty nextgroup =jsParenSwitch
102- syntax keyword jsRepeat while for skipwhite skipempty nextgroup =jsParenRepeat,jsForAwait
104+ syntax keyword jsWhile while skipwhite skipempty nextgroup =jsParenWhile
105+ syntax keyword jsFor for skipwhite skipempty nextgroup =jsParenFor,jsForAwait
103106syntax keyword jsDo do skipwhite skipempty nextgroup =jsRepeatBlock
104107syntax region jsSwitchCase contained matchgroup =jsLabel start =/ \<\% (case\| default\)\> / end =/ :\@ =/ contains =@jsExpression,jsLabel skipwhite skipempty nextgroup =jsSwitchColon keepend
105108syntax keyword jsTry try skipwhite skipempty nextgroup =jsTryCatchBlock
@@ -135,19 +138,20 @@ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus
135138" Code blocks
136139syntax region jsBracket matchgroup =jsBrackets start =/ \[ / end =/ \] / contains =@jsExpression,jsSpreadExpression extend fold
137140syntax region jsParen matchgroup =jsParens start =/ (/ end =/ )/ contains =@jsExpression extend fold nextgroup =jsFlowDefinition
138- syntax region jsParenDecorator contained matchgroup =jsParensDecorator start =/ (/ end =/ )/ contains =@jsAll extend fold
139- syntax region jsParenIfElse contained matchgroup =jsParensIfElse start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsCommentIfElse,jsIfElseBlock,jsReturn extend fold
140- syntax region jsParenRepeat contained matchgroup =jsParensRepeat start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsCommentRepeat,jsRepeatBlock,jsReturn extend fold
141- syntax region jsParenSwitch contained matchgroup =jsParensSwitch start =/ (/ end =/ )/ contains =@jsAll skipwhite skipempty nextgroup =jsSwitchBlock extend fold
141+ syntax region jsParenDecorator contained matchgroup =jsParensDecorator start =/ (/ end =/ )/ contains =@jsExpression extend fold
142+ syntax region jsParenIfElse contained matchgroup =jsParensIfElse start =/ (/ end =/ )/ contains =@jsExpression skipwhite skipempty nextgroup =jsCommentIfElse,jsIfElseBlock,jsReturn extend fold
143+ syntax region jsParenWhile contained matchgroup =jsParensWhile start =/ (/ end =/ )/ contains =@jsExpression skipwhite skipempty nextgroup =jsCommentRepeat,jsRepeatBlock,jsReturn extend fold
144+ syntax region jsParenFor contained matchgroup =jsParensFor start =/ (/ end =/ )/ contains =@jsExpression,jsStorageClass,jsOf skipwhite skipempty nextgroup =jsCommentRepeat,jsRepeatBlock,jsReturn extend fold
145+ syntax region jsParenSwitch contained matchgroup =jsParensSwitch start =/ (/ end =/ )/ contains =@jsExpression skipwhite skipempty nextgroup =jsSwitchBlock extend fold
142146syntax region jsParenCatch contained matchgroup =jsParensCatch start =/ (/ end =/ )/ skipwhite skipempty nextgroup =jsTryCatchBlock extend fold
143147syntax region jsFuncArgs contained matchgroup =jsFuncParens start =/ (/ end =/ )/ contains =jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsDestructuringArray,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup =jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold
144148syntax region jsClassBlock contained matchgroup =jsClassBraces start =/ {/ end =/ }/ contains =jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsAsyncKeyword,jsNoise extend fold
145- syntax region jsFuncBlock contained matchgroup =jsFuncBraces start =/ {/ end =/ }/ contains =@jsAll,jsBlock extend fold
146- syntax region jsIfElseBlock contained matchgroup =jsIfElseBraces start =/ {/ end =/ }/ contains =@jsAll,jsBlock extend fold
147- syntax region jsTryCatchBlock contained matchgroup =jsTryCatchBraces start =/ {/ end =/ }/ contains =@jsAll,jsBlock skipwhite skipempty nextgroup =jsCatch,jsFinally extend fold
148- syntax region jsFinallyBlock contained matchgroup =jsFinallyBraces start =/ {/ end =/ }/ contains =@jsAll,jsBlock extend fold
149- syntax region jsSwitchBlock contained matchgroup =jsSwitchBraces start =/ {/ end =/ }/ contains =@jsAll,jsBlock, jsSwitchCase extend fold
150- syntax region jsRepeatBlock contained matchgroup =jsRepeatBraces start =/ {/ end =/ }/ contains =@jsAll,jsBlock extend fold
149+ syntax region jsFuncBlock contained matchgroup =jsFuncBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
150+ syntax region jsIfElseBlock contained matchgroup =jsIfElseBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
151+ syntax region jsTryCatchBlock contained matchgroup =jsTryCatchBraces start =/ {/ end =/ }/ contains =@jsAll skipwhite skipempty nextgroup =jsCatch,jsFinally extend fold
152+ syntax region jsFinallyBlock contained matchgroup =jsFinallyBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
153+ syntax region jsSwitchBlock contained matchgroup =jsSwitchBraces start =/ {/ end =/ }/ contains =@jsAll,jsSwitchCase extend fold
154+ syntax region jsRepeatBlock contained matchgroup =jsRepeatBraces start =/ {/ end =/ }/ contains =@jsAll extend fold
151155syntax region jsDestructuringBlock contained matchgroup =jsDestructuringBraces start =/ {/ end =/ }/ contains =jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression,jsComment nextgroup =jsFlowDefinition extend fold
152156syntax region jsDestructuringArray contained matchgroup =jsDestructuringBraces start =/ \[ / end =/ \] / contains =jsDestructuringPropertyValue,jsDestructuringNoise,jsDestructuringProperty,jsSpreadExpression,jsDestructuringBlock,jsDestructuringArray,jsComment nextgroup =jsFlowDefinition extend fold
153157syntax region jsObject contained matchgroup =jsObjectBraces start =/ {/ end =/ }/ contains =jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectShorthandProp,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator,jsAsyncKeyword,jsTemplateString extend fold
@@ -165,7 +169,7 @@ syntax match jsFuncName contained /\<\K\k*/ skipwhite skipempty ne
165169syntax region jsFuncArgExpression contained matchgroup =jsFuncArgOperator start =/ =/ end =/ [,)]\@ =/ contains =@jsExpression extend
166170syntax match jsFuncArgCommas contained ' ,'
167171syntax keyword jsArguments contained arguments
168- syntax keyword jsForAwait contained await skipwhite skipempty nextgroup =jsParenRepeat
172+ syntax keyword jsForAwait contained await skipwhite skipempty nextgroup =jsParenFor
169173
170174" Matches a single keyword argument with no parens
171175syntax match jsArrowFuncArgs / \<\K\k *\z e\s *=>/ skipwhite contains =jsFuncArgs skipwhite skipempty nextgroup =jsArrowFunction extend
@@ -233,7 +237,7 @@ if exists("javascript_plugin_flow")
233237endif
234238
235239syntax cluster jsExpression contains =jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsOperatorKeyword,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo,jsForAwait,jsAsyncKeyword,jsStatement,jsDot
236- syntax cluster jsAll contains =@jsExpression,jsStorageClass,jsConditional,jsRepeat, jsReturn,jsException,jsTry,jsNoise,jsBlockLabel
240+ syntax cluster jsAll contains =@jsExpression,jsStorageClass,jsConditional,jsWhile,jsFor, jsReturn,jsException,jsTry,jsNoise,jsBlockLabel,jsBlock
237241
238242" Define the default highlighting.
239243" For version 5.7 and earlier: only when not done already
@@ -248,6 +252,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
248252 HiLink jsComment Comment
249253 HiLink jsEnvComment PreProc
250254 HiLink jsParensIfElse jsParens
255+ HiLink jsParensWhile jsParensRepeat
256+ HiLink jsParensFor jsParensRepeat
251257 HiLink jsParensRepeat jsParens
252258 HiLink jsParensSwitch jsParens
253259 HiLink jsParensCatch jsParens
@@ -273,6 +279,8 @@ if version >= 508 || !exists("did_javascript_syn_inits")
273279 HiLink jsBranch Conditional
274280 HiLink jsLabel Label
275281 HiLink jsReturn Statement
282+ HiLink jsWhile jsRepeat
283+ HiLink jsFor jsRepeat
276284 HiLink jsRepeat Repeat
277285 HiLink jsDo Repeat
278286 HiLink jsStatement Statement
0 commit comments