From 71a1400c9d07810f26ef25d31a37ab87bf7935ad Mon Sep 17 00:00:00 2001 From: Santosh Bandichode Date: Sat, 22 Feb 2025 16:54:54 +0530 Subject: [PATCH 1/6] Not a character class if escaped --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 02b0c78c..62b97256 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -63,7 +63,7 @@ syntax match jsFloat /\c\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%(e[+-]\= " Regular Expressions syntax match jsSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)" syntax region jsTemplateExpression contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=@jsExpression keepend -syntax region jsRegexpCharClass contained start=+\[+ skip=+\\.+ end=+\]+ contains=jsSpecial extend +syntax region jsRegexpCharClass contained start=+\\\@ Date: Thu, 19 Feb 2026 20:17:31 +0530 Subject: [PATCH 2/6] Match one more number pattern --- syntax/javascript.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 62b97256..468a4836 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -57,6 +57,7 @@ syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+ syntax region jsTemplateString start=+`+ skip=+\\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend syntax match jsTaggedTemplate /\<\K\k*\ze`/ nextgroup=jsTemplateString syntax match jsNumber /\c\<\%(\d\+\%(e[+-]\=\d\+\)\=\|0b[01]\+\|0o\o\+\|0x\%(\x\|_\)\+\)n\=\>/ +syntax match jsNumber /\.\d[0-9_]*\%([eE][+-]\=\d[0-9_]*\)\=\>/ syntax keyword jsNumber Infinity syntax match jsFloat /\c\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%(e[+-]\=\d\+\)\=\>/ From 6b8c2a8513f09057a470501ddd57ac40863c99e6 Mon Sep 17 00:00:00 2001 From: Santosh Bandichode Date: Thu, 19 Feb 2026 20:18:28 +0530 Subject: [PATCH 3/6] Contain only jsTemplateString in jsTemplateExpression --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 468a4836..3a4e77b6 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -63,7 +63,7 @@ syntax match jsFloat /\c\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%(e[+-]\= " Regular Expressions syntax match jsSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)" -syntax region jsTemplateExpression contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=@jsExpression keepend +syntax region jsTemplateExpression contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=jsTemplateString keepend syntax region jsRegexpCharClass contained start=+\\\@ Date: Thu, 19 Feb 2026 20:20:14 +0530 Subject: [PATCH 4/6] Add class constructor --- syntax/javascript.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 3a4e77b6..25664503 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -146,7 +146,7 @@ syntax region jsParenFor contained matchgroup=jsParensFor s syntax region jsParenSwitch contained matchgroup=jsParensSwitch start=/(/ end=/)/ contains=@jsExpression skipwhite skipempty nextgroup=jsSwitchBlock extend fold syntax region jsParenCatch contained matchgroup=jsParensCatch start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsDestructuringArray,jsRestExpression,jsFlowArgumentDef skipwhite skipempty nextgroup=jsCommentFunction,jsFuncBlock,jsFlowReturn extend fold -syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsAsyncKeyword,jsNoise extend fold +syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassConstructor,jsClassFuncName,jsClassMethodType,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsAsyncKeyword,jsNoise extend fold syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll extend fold syntax region jsIfElseBlock contained matchgroup=jsIfElseBraces start=/{/ end=/}/ contains=@jsAll extend fold syntax region jsTryCatchBlock contained matchgroup=jsTryCatchBraces start=/{/ end=/}/ contains=@jsAll skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold @@ -185,6 +185,7 @@ exe 'syntax match jsArrowFunction /_\ze\s*=>/ skipwhite skipempty nextgroup=j " Classes syntax keyword jsClassKeyword contained class syntax keyword jsExtendsKeyword contained extends skipwhite skipempty nextgroup=@jsExpression +syntax keyword jsClassConstructor contained constructor syntax match jsClassNoise contained /\./ syntax match jsClassFuncName contained /\<\K\k*\ze\s*[(<]/ skipwhite skipempty nextgroup=jsFuncArgs,jsFlowClassFunctionGroup syntax match jsClassMethodType contained /\<\%([gs]et\|static\)\ze\s\+\K\k*/ skipwhite skipempty nextgroup=jsAsyncKeyword,jsClassFuncName,jsClassProperty @@ -308,6 +309,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsStorageClass StorageClass HiLink jsClassKeyword Keyword HiLink jsExtendsKeyword Keyword + HiLink jsClassConstructor Keyword HiLink jsThis Special HiLink jsSuper Constant HiLink jsNan Number From 03394e21ed5d78ddaa70ee5262e12e3ef836f395 Mon Sep 17 00:00:00 2001 From: Santosh Bandichode Date: Thu, 19 Feb 2026 21:13:50 +0530 Subject: [PATCH 5/6] Match for parens in arrow function --- syntax/javascript.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 25664503..14c93bad 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -181,6 +181,7 @@ exe 'syntax match jsFunction /\/ skipwhite skipempty nextgroup=j exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') exe 'syntax match jsArrowFunction /()\ze\s*=>/ skipwhite skipempty nextgroup=jsArrowFunction '.(exists('g:javascript_conceal_noarg_arrow_function') ? 'conceal cchar='.g:javascript_conceal_noarg_arrow_function : '') exe 'syntax match jsArrowFunction /_\ze\s*=>/ skipwhite skipempty nextgroup=jsArrowFunction '.(exists('g:javascript_conceal_underscore_arrow_function') ? 'conceal cchar='.g:javascript_conceal_underscore_arrow_function : '') +syntax match jsArrowFunctionParens /()/ contained containedin=jsArrowFunction " Classes syntax keyword jsClassKeyword contained class From eef2d55c383cf4859d01e735fa96e585125afcc5 Mon Sep 17 00:00:00 2001 From: Santosh Bandichode Date: Fri, 20 Feb 2026 13:52:19 +0530 Subject: [PATCH 6/6] Add nextgroup for JavaScript class constructor --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 14c93bad..ff69f664 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -186,7 +186,7 @@ syntax match jsArrowFunctionParens /()/ contained containedin=jsArrowFunction " Classes syntax keyword jsClassKeyword contained class syntax keyword jsExtendsKeyword contained extends skipwhite skipempty nextgroup=@jsExpression -syntax keyword jsClassConstructor contained constructor +syntax keyword jsClassConstructor contained constructor skipwhite skipempty nextgroup=jsFuncArgs,jsFlowClassFunctionGroup syntax match jsClassNoise contained /\./ syntax match jsClassFuncName contained /\<\K\k*\ze\s*[(<]/ skipwhite skipempty nextgroup=jsFuncArgs,jsFlowClassFunctionGroup syntax match jsClassMethodType contained /\<\%([gs]et\|static\)\ze\s\+\K\k*/ skipwhite skipempty nextgroup=jsAsyncKeyword,jsClassFuncName,jsClassProperty