diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 02b0c78c..ff69f664 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -57,13 +57,14 @@ 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\+\)\=\>/ " 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 jsTemplateExpression contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=jsTemplateString keepend +syntax region jsRegexpCharClass contained start=+\\\@/ 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 syntax keyword jsExtendsKeyword contained extends skipwhite skipempty nextgroup=@jsExpression +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 @@ -307,6 +310,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