|  |  |  | @ -12,210 +12,223 @@ if !exists("main_syntax") | 
		
	
		
			
				|  |  |  |  |   let main_syntax = 'javascript' | 
		
	
		
			
				|  |  |  |  | endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | if !exists('g:javascript_conceal') | 
		
	
		
			
				|  |  |  |  |   let g:javascript_conceal = 0 | 
		
	
		
			
				|  |  |  |  | endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" dollar sign is permittd anywhere in an identifier | 
		
	
		
			
				|  |  |  |  | " Dollar sign is permitted anywhere in an identifier | 
		
	
		
			
				|  |  |  |  | if v:version > 704 || v:version == 704 && has('patch1142') | 
		
	
		
			
				|  |  |  |  |   syntax iskeyword @,48-57,_,192-255,$ | 
		
	
		
			
				|  |  |  |  | else | 
		
	
		
			
				|  |  |  |  |   setlocal iskeyword+=$ | 
		
	
		
			
				|  |  |  |  | endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax sync fromstart | 
		
	
		
			
				|  |  |  |  | " TODO: Figure out what type of casing I need | 
		
	
		
			
				|  |  |  |  | " syntax case ignore | 
		
	
		
			
				|  |  |  |  | syntax case match | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax match   jsNoise          /[:,\;\.]\{1}/ | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncCall       /\k\+\%(\s*(\)\@=/ | 
		
	
		
			
				|  |  |  |  | syntax match   jsParensError    /[)}\]]/ | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" Program Keywords | 
		
	
		
			
				|  |  |  |  | syntax keyword jsStorageClass   const var let | 
		
	
		
			
				|  |  |  |  | syntax keyword jsOperator       delete instanceof typeof void new in | 
		
	
		
			
				|  |  |  |  | " Program Keywords | 
		
	
		
			
				|  |  |  |  | syntax keyword jsStorageClass   const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray,jsVariableDef | 
		
	
		
			
				|  |  |  |  | syntax match   jsVariableDef    contained /\k\+/ nextgroup=jsFlowDefinition | 
		
	
		
			
				|  |  |  |  | syntax keyword jsOperator       delete instanceof typeof void new in of | 
		
	
		
			
				|  |  |  |  | syntax match   jsOperator       /[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}/ | 
		
	
		
			
				|  |  |  |  | syntax keyword jsBooleanTrue    true | 
		
	
		
			
				|  |  |  |  | syntax keyword jsBooleanFalse   false | 
		
	
		
			
				|  |  |  |  | syntax keyword jsModules        import export contained | 
		
	
		
			
				|  |  |  |  | syntax keyword jsModuleWords    default from as contained | 
		
	
		
			
				|  |  |  |  | syntax keyword jsOf             of contained | 
		
	
		
			
				|  |  |  |  | syntax keyword jsArgsObj        arguments | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax region jsImportContainer      start="^\s\?import \?" end=";\|$" contains=jsModules,jsModuleWords,jsLineComment,jsComment,jsStringS,jsStringD,jsTemplateString,jsNoise,jsBlock | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax region jsExportContainer      start="^\s\?export \?" end="$" contains=jsModules,jsModuleWords,jsComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsArgsObj,jsBlock,jsClassDefinition | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" JavaScript comments | 
		
	
		
			
				|  |  |  |  | syntax keyword jsCommentTodo    TODO FIXME XXX TBD contained | 
		
	
		
			
				|  |  |  |  | syntax region  jsLineComment    start=+\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell extend | 
		
	
		
			
				|  |  |  |  | syntax region  jsEnvComment     start="\%^#!" end="$" display | 
		
	
		
			
				|  |  |  |  | syntax region  jsLineComment    start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsCvsTag         start="\$\cid:" end="\$" oneline contained | 
		
	
		
			
				|  |  |  |  | syntax region  jsComment        start="/\*"  end="\*/" contains=jsCommentTodo,jsCvsTag,@Spell fold extend | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" JSDoc / JSDoc Toolkit | 
		
	
		
			
				|  |  |  |  | if !exists("javascript_ignore_javaScriptdoc") | 
		
	
		
			
				|  |  |  |  |   syntax case ignore | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   "" syntax coloring for javadoc comments (HTML) | 
		
	
		
			
				|  |  |  |  |   "syntax include @javaHtml <sfile>:p:h/html.vim | 
		
	
		
			
				|  |  |  |  |   "unlet b:current_syntax | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   syntax region jsBlockComment    matchgroup=jsComment start="/\*\s*"  end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   " tags containing a param | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocTags         contained "@\(alias\|api\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|fires\|kind\|link\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|template\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite | 
		
	
		
			
				|  |  |  |  |   " tags containing type and param | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocTags         contained "@\(arg\|argument\|cfg\|param\|property\|prop\)\>" nextgroup=jsDocType skipwhite | 
		
	
		
			
				|  |  |  |  |   " tags containing type but no param | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocTags         contained "@\(callback\|define\|enum\|external\|implements\|this\|type\|typedef\|return\|returns\)\>" nextgroup=jsDocTypeNoParam skipwhite | 
		
	
		
			
				|  |  |  |  |   " tags containing references | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocTags         contained "@\(lends\|see\|tutorial\)\>" nextgroup=jsDocSeeTag skipwhite | 
		
	
		
			
				|  |  |  |  |   " other tags (no extra syntax) | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocTags         contained "@\(abstract\|access\|accessor\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|dict\|event\|example\|file\|file[oO]verview\|final\|function\|global\|ignore\|inheritDoc\|inner\|instance\|interface\|license\|localdoc\|method\|mixin\|nosideeffects\|override\|overview\|preserve\|private\|protected\|public\|readonly\|since\|static\|struct\|todo\|summary\|undocumented\|virtual\)\>" | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   syntax region jsDocType         matchgroup=jsDocTypeBrackets start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite contains=jsDocTypeRecord | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocType         contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite | 
		
	
		
			
				|  |  |  |  |   syntax region jsDocTypeRecord   start=/{/ end=/}/ contained extend contains=jsDocTypeRecord | 
		
	
		
			
				|  |  |  |  |   syntax region jsDocTypeRecord   start=/\[/ end=/\]/ contained extend contains=jsDocTypeRecord | 
		
	
		
			
				|  |  |  |  |   syntax region jsDocTypeNoParam  start="{" end="}" oneline contained | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocTypeNoParam  contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" | 
		
	
		
			
				|  |  |  |  |   syntax match  jsDocParam        contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\.\|:\|\/\|\[.{-}]\|=\)\+" | 
		
	
		
			
				|  |  |  |  |   syntax region jsDocSeeTag       contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   syntax case match | 
		
	
		
			
				|  |  |  |  | endif   "" JSDoc end | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax case match | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" Syntax in the JavaScript code | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncCall         /\k\+\%(\s*(\)\@=/ | 
		
	
		
			
				|  |  |  |  | syntax match   jsSpecial          "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" contained | 
		
	
		
			
				|  |  |  |  | syntax region  jsTemplateVar      matchgroup=jsTemplateBraces start=+${+ end=+}+ contained contains=@jsExpression | 
		
	
		
			
				|  |  |  |  | syntax region  jsStringD          start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@htmlPreproc,@Spell | 
		
	
		
			
				|  |  |  |  | syntax region  jsStringS          start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@htmlPreproc,@Spell | 
		
	
		
			
				|  |  |  |  | syntax region  jsTemplateString   start=+`+  skip=+\\\(`\|$\)+  end=+`+     contains=jsTemplateVar,jsSpecial,@htmlPreproc | 
		
	
		
			
				|  |  |  |  | syntax region  jsTaggedTemplate   start=/\k\+\%([\n\s]\+\)\?`/ end=+`+ contains=jsTemplateString keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsRegexpCharClass  start=+\[+ skip=+\\.+ end=+\]+ contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpBoundary   "\v%(\<@![\^$]|\\[bB])" contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpBackRef    "\v\\[1-9][0-9]*" contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpOr         "\v\<@!\|" contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpMod        "\v\(@<=\?[:=!>]" contained | 
		
	
		
			
				|  |  |  |  | syntax cluster jsRegexpSpecial    contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod | 
		
	
		
			
				|  |  |  |  | syntax region  jsRegexpGroup      start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsRegexpString     start=+\%(\%(\%(return\|case\)\s\+\)\@50<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@50<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend | 
		
	
		
			
				|  |  |  |  | syntax match   jsNumber           /\<-\=\d\+\(L\|[eE][+-]\=\d\+\)\=\>\|\<0[xX]\x\+\>/ | 
		
	
		
			
				|  |  |  |  | " Modules | 
		
	
		
			
				|  |  |  |  | syntax keyword jsModuleKeywords  contained import | 
		
	
		
			
				|  |  |  |  | syntax keyword jsModuleKeywords  contained export skipwhite skipempty nextgroup=jsExportBlock,jsModuleDefault | 
		
	
		
			
				|  |  |  |  | syntax keyword jsModuleOperators contained from | 
		
	
		
			
				|  |  |  |  | syntax keyword jsModuleOperators contained as | 
		
	
		
			
				|  |  |  |  | syntax region  jsModuleGroup     contained matchgroup=jsModuleBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment | 
		
	
		
			
				|  |  |  |  | syntax match   jsModuleAsterisk  contained /*/ | 
		
	
		
			
				|  |  |  |  | syntax keyword jsModuleDefault   contained default skipwhite skipempty nextgroup=@jsExpression | 
		
	
		
			
				|  |  |  |  | syntax region  jsImportContainer start=/\<import\> / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsComment,jsString,jsTemplateString,jsNoise,jsModuleGroup,jsModuleAsterisk | 
		
	
		
			
				|  |  |  |  | syntax region  jsExportContainer start=/\<export\> / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsStorageClass,jsModuleDefault,@jsExpression | 
		
	
		
			
				|  |  |  |  | syntax region  jsExportBlock     contained matchgroup=jsExportBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Strings, Templates, Numbers | 
		
	
		
			
				|  |  |  |  | syntax region  jsString           start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend | 
		
	
		
			
				|  |  |  |  | syntax region  jsString           start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend | 
		
	
		
			
				|  |  |  |  | syntax region  jsTemplateString   start=+`+  skip=+\\\(`\|$\)+  end=+`+     contains=jsTemplateVar,jsSpecial extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsTaggedTemplate   /\k\+\%(`\)\@=/ nextgroup=jsTemplateString | 
		
	
		
			
				|  |  |  |  | syntax match   jsNumber           /\<\d\+\%([eE][+-]\=\d\+\)\=\>\|\<0[bB][01]\+\>\|\<0[oO]\o\+\>\|\<0[xX]\x\+\>/ | 
		
	
		
			
				|  |  |  |  | syntax keyword jsNumber           Infinity | 
		
	
		
			
				|  |  |  |  | syntax match   jsFloat            /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ | 
		
	
		
			
				|  |  |  |  | syntax match   jsObjectKey        /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsFunctionKey      /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/ contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsDecorator        "@" display contains=jsDecoratorFunction nextgroup=jsDecoratorFunction skipwhite | 
		
	
		
			
				|  |  |  |  | syntax match   jsDecoratorFunction "[a-zA-Z_][a-zA-Z0-9_.]*" display contained nextgroup=jsFunc skipwhite | 
		
	
		
			
				|  |  |  |  | syntax match   jsFloat            /\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Regular Expressions | 
		
	
		
			
				|  |  |  |  | syntax match   jsSpecial          contained "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" | 
		
	
		
			
				|  |  |  |  | syntax region  jsTemplateVar      contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=@jsExpression | 
		
	
		
			
				|  |  |  |  | syntax region  jsRegexpCharClass  contained start=+\[+ skip=+\\.+ end=+\]+ | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpBoundary   contained "\v%(\<@![\^$]|\\[bB])" | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpBackRef    contained "\v\\[1-9][0-9]*" | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpQuantifier contained "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpOr         contained "\v\<@!\|" | 
		
	
		
			
				|  |  |  |  | syntax match   jsRegexpMod        contained "\v\(@<=\?[:=!>]" | 
		
	
		
			
				|  |  |  |  | syntax region  jsRegexpGroup      contained start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contains=jsRegexpCharClass,@jsRegexpSpecial keepend | 
		
	
		
			
				|  |  |  |  | if v:version > 703 || v:version == 603 && has("patch1088") | 
		
	
		
			
				|  |  |  |  |   syntax region  jsRegexpString   start=+\%(\%(\%(return\|case\)\s\+\)\@50<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@50<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend | 
		
	
		
			
				|  |  |  |  | else | 
		
	
		
			
				|  |  |  |  |   syntax region  jsRegexpString   start=+\%(\%(\%(return\|case\)\s\+\)\@<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend | 
		
	
		
			
				|  |  |  |  | endif | 
		
	
		
			
				|  |  |  |  | syntax cluster jsRegexpSpecial    contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Objects | 
		
	
		
			
				|  |  |  |  | syntax match   jsObjectKey         contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey skipwhite skipempty nextgroup=jsObjectValue | 
		
	
		
			
				|  |  |  |  | syntax match   jsObjectColon       contained /:/ skipwhite skipempty | 
		
	
		
			
				|  |  |  |  | syntax region  jsObjectKeyString   contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue | 
		
	
		
			
				|  |  |  |  | syntax region  jsObjectKeyString   contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue | 
		
	
		
			
				|  |  |  |  | syntax region  jsObjectKeyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsObjectValue,jsFuncArgs extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsObjectSeparator   contained /,/ | 
		
	
		
			
				|  |  |  |  | syntax region  jsObjectValue       contained start=/:/ end=/\%(,\|}\)\@=/ contains=jsObjectColon,@jsExpression extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsObjectFuncName    contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>[\r\n\t ]*(\@=/ skipwhite skipempty nextgroup=jsFuncArgs | 
		
	
		
			
				|  |  |  |  | syntax match   jsFunctionKey       contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/ | 
		
	
		
			
				|  |  |  |  | syntax match   jsObjectMethodType  contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsObjectFuncName | 
		
	
		
			
				|  |  |  |  | syntax region  jsObjectStringKey   contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue | 
		
	
		
			
				|  |  |  |  | syntax region  jsObjectStringKey   contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsNull      null             '.(exists('g:javascript_conceal_null')      ? 'conceal cchar='.g:javascript_conceal_null       : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsReturn    return    '.(exists('g:javascript_conceal_return')      ? 'conceal cchar='.g:javascript_conceal_return      : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsReturn    return contained '.(exists('g:javascript_conceal_return')    ? 'conceal cchar='.g:javascript_conceal_return     : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsUndefined undefined        '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined  : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsNan       NaN              '.(exists('g:javascript_conceal_NaN')       ? 'conceal cchar='.g:javascript_conceal_NaN        : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsPrototype prototype        '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype  : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsThis      this             '.(exists('g:javascript_conceal_this')      ? 'conceal cchar='.g:javascript_conceal_this       : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsStatic    static    '.(exists('g:javascript_conceal_static')      ? 'conceal cchar='.g:javascript_conceal_static      : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsSuper     super     '.(exists('g:javascript_conceal_super')       ? 'conceal cchar='.g:javascript_conceal_super       : '') | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" Statement Keywords | 
		
	
		
			
				|  |  |  |  | syntax keyword jsStatement      break continue with | 
		
	
		
			
				|  |  |  |  | syntax keyword jsConditional    if else switch | 
		
	
		
			
				|  |  |  |  | syntax keyword jsRepeat         do while for | 
		
	
		
			
				|  |  |  |  | syntax keyword jsLabel          case default | 
		
	
		
			
				|  |  |  |  | syntax keyword jsKeyword        yield | 
		
	
		
			
				|  |  |  |  | syntax keyword jsException      try catch throw finally | 
		
	
		
			
				|  |  |  |  | exe 'syntax keyword jsSuper     super  contained '.(exists('g:javascript_conceal_super')     ? 'conceal cchar='.g:javascript_conceal_super      : '') | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Statement Keywords | 
		
	
		
			
				|  |  |  |  | syntax keyword jsStatement    contained break continue with yield debugger | 
		
	
		
			
				|  |  |  |  | syntax keyword jsConditional            if           skipwhite skipempty nextgroup=jsParenIfElse | 
		
	
		
			
				|  |  |  |  | syntax keyword jsConditional            else         skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock | 
		
	
		
			
				|  |  |  |  | syntax keyword jsConditional            switch       skipwhite skipempty nextgroup=jsParenSwitch | 
		
	
		
			
				|  |  |  |  | syntax keyword jsRepeat                 while for    skipwhite skipempty nextgroup=jsParenRepeat,jsForAwait | 
		
	
		
			
				|  |  |  |  | syntax keyword jsDo                     do           skipwhite skipempty nextgroup=jsRepeatBlock | 
		
	
		
			
				|  |  |  |  | syntax keyword jsLabel        contained case default | 
		
	
		
			
				|  |  |  |  | syntax keyword jsTry                    try          skipwhite skipempty nextgroup=jsTryCatchBlock | 
		
	
		
			
				|  |  |  |  | syntax keyword jsFinally      contained finally      skipwhite skipempty nextgroup=jsFinallyBlock | 
		
	
		
			
				|  |  |  |  | syntax keyword jsCatch        contained catch        skipwhite skipempty nextgroup=jsParenCatch | 
		
	
		
			
				|  |  |  |  | syntax keyword jsException              throw | 
		
	
		
			
				|  |  |  |  | syntax keyword jsAsyncKeyword           async await | 
		
	
		
			
				|  |  |  |  | syntax match   jsSwitchColon  contained /:/          skipwhite skipempty nextgroup=jsSwitchBlock | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax keyword jsGlobalObjects   Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Keywords | 
		
	
		
			
				|  |  |  |  | syntax keyword jsGlobalObjects      Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat fetch | 
		
	
		
			
				|  |  |  |  | syntax keyword jsGlobalNodeObjects  module exports global process | 
		
	
		
			
				|  |  |  |  | syntax match   jsGlobalNodeObjects  /require/ containedin=jsFuncCall | 
		
	
		
			
				|  |  |  |  | syntax keyword jsExceptions         Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax keyword jsBuiltins           decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval | 
		
	
		
			
				|  |  |  |  | " DISCUSS: How imporant is this, really? Perhaps it should be linked to an error because I assume the keywords are reserved? | 
		
	
		
			
				|  |  |  |  | syntax keyword jsFutureKeys         abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient implements protected volatile double public | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax keyword jsFutureKeys     abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient debugger implements protected volatile double public | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" DOM/HTML/CSS specified things | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " DISCUSS: Should we really be matching stuff like this? | 
		
	
		
			
				|  |  |  |  | " DOM2 Objects | 
		
	
		
			
				|  |  |  |  | syntax keyword jsGlobalObjects  DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction | 
		
	
		
			
				|  |  |  |  | syntax keyword jsExceptions     DOMException | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " DISCUSS: Should we really be matching stuff like this? | 
		
	
		
			
				|  |  |  |  | " DOM2 CONSTANT | 
		
	
		
			
				|  |  |  |  | syntax keyword jsDomErrNo       INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR | 
		
	
		
			
				|  |  |  |  | syntax keyword jsDomNodeConsts  ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " DISCUSS: Should we really be special matching on these props? | 
		
	
		
			
				|  |  |  |  | " HTML events and internal variables | 
		
	
		
			
				|  |  |  |  | syntax case ignore | 
		
	
		
			
				|  |  |  |  | syntax keyword jsHtmlEvents     onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize | 
		
	
		
			
				|  |  |  |  | syntax case match | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Follow stuff should be highligh within a special context | 
		
	
		
			
				|  |  |  |  | " While it can't be handled with context depended with Regex based highlight | 
		
	
		
			
				|  |  |  |  | " So, turn it off by default | 
		
	
		
			
				|  |  |  |  | if exists("javascript_enable_domhtmlcss") | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     " DOM2 things | 
		
	
		
			
				|  |  |  |  |     syntax match jsDomElemAttrs     contained /\%(nodeName\|nodeValue\|nodeType\|parentNode\|childNodes\|firstChild\|lastChild\|previousSibling\|nextSibling\|attributes\|ownerDocument\|namespaceURI\|prefix\|localName\|tagName\)\>/ | 
		
	
		
			
				|  |  |  |  |     syntax match jsDomElemFuncs     contained /\%(insertBefore\|replaceChild\|removeChild\|appendChild\|hasChildNodes\|cloneNode\|normalize\|isSupported\|hasAttributes\|getAttribute\|setAttribute\|removeAttribute\|getAttributeNode\|setAttributeNode\|removeAttributeNode\|getElementById\|getElementsByClassName\|getElementsByTagName\|querySelector\|querySelectorAll\|getAttributeNS\|setAttributeNS\|removeAttributeNS\|getAttributeNodeNS\|setAttributeNodeNS\|getElementsByTagNameNS\|hasAttribute\|hasAttributeNS\)\>/ nextgroup=jsParen skipwhite | 
		
	
		
			
				|  |  |  |  |     " HTML things | 
		
	
		
			
				|  |  |  |  |     syntax match jsHtmlElemAttrs    contained /\%(className\|clientHeight\|clientLeft\|clientTop\|clientWidth\|dir\|id\|innerHTML\|lang\|length\|offsetHeight\|offsetLeft\|offsetParent\|offsetTop\|offsetWidth\|scrollHeight\|scrollLeft\|scrollTop\|scrollWidth\|style\|tabIndex\|title\)\>/ | 
		
	
		
			
				|  |  |  |  |     syntax match jsHtmlElemFuncs    contained /\%(blur\|click\|focus\|scrollIntoView\|addEventListener\|dispatchEvent\|removeEventListener\|item\)\>/ nextgroup=jsParen skipwhite | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     " CSS Styles in JavaScript | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained bottom height left position right top width zIndex | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained listStyle listStyleImage listStylePosition listStyleType | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained background backgroundAttachment backgroundColor backgroundImage backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText | 
		
	
		
			
				|  |  |  |  |     syntax keyword jsCssStyles      contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     " Highlight ways | 
		
	
		
			
				|  |  |  |  |     syntax match jsDotNotation      "\." nextgroup=jsPrototype,jsDomElemAttrs,jsDomElemFuncs,jsHtmlElemAttrs,jsHtmlElemFuncs | 
		
	
		
			
				|  |  |  |  |     syntax match jsDotNotation      "\.style\." nextgroup=jsCssStyles | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | endif "DOM/HTML/CSS | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" end DOM/HTML/CSS specified things | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" Code blocks | 
		
	
		
			
				|  |  |  |  | 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,jsImportContainer,jsExportContainer,jsArgsObj,jsDecorator,jsAsyncKeyword,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs | 
		
	
		
			
				|  |  |  |  | syntax cluster jsAll        contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException | 
		
	
		
			
				|  |  |  |  | syntax region  jsBracket    matchgroup=jsBrackets     start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsParen      matchgroup=jsParens       start="("  end=")"  contains=@jsAll,jsOf,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold extend | 
		
	
		
			
				|  |  |  |  | syntax region  jsClassBlock matchgroup=jsClassBraces  start="{"  end="}"  contains=jsFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsBlockComment,jsLineComment contained fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsFuncBlock  matchgroup=jsFuncBraces   start="{"  end="}"  contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc,jsClassDefinition fold extend | 
		
	
		
			
				|  |  |  |  | syntax region  jsBlock      matchgroup=jsBraces       start="{"  end="}"  contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc,jsClassDefinition fold extend | 
		
	
		
			
				|  |  |  |  | syntax region  jsTernaryIf  matchgroup=jsTernaryIfOperator start=+?+  end=+:+  contains=@jsExpression,jsTernaryIf | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | "" catch errors caused by wrong parenthesis | 
		
	
		
			
				|  |  |  |  | syntax match   jsParensError    ")\|}\|\]" | 
		
	
		
			
				|  |  |  |  | syntax match   jsParensErrA     contained "\]" | 
		
	
		
			
				|  |  |  |  | syntax match   jsParensErrB     contained ")" | 
		
	
		
			
				|  |  |  |  | syntax match   jsParensErrC     contained "}" | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncArgDestructuring contained /\({\|}\|=\|:\|\[\|\]\)/ extend | 
		
	
		
			
				|  |  |  |  | exe 'syntax match jsFunction /\<function\>/ nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite '.(exists('g:javascript_conceal_function') ? 'conceal cchar='.g:javascript_conceal_function : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax match jsArrowFunction /=>/ skipwhite nextgroup=jsFuncBlock contains=jsFuncBraces '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax match   jsGenerator       contained '\*' nextgroup=jsFuncName,jsFuncArgs skipwhite | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncName        contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=jsFuncArgs skipwhite | 
		
	
		
			
				|  |  |  |  | syntax region  jsFuncArgs        contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest,jsComment,jsLineComment,jsStringS,jsStringD,jsNumber,jsFuncArgDestructuring,jsArrowFunction,jsParen,jsArrowFuncArgs nextgroup=jsFuncBlock keepend skipwhite skipempty | 
		
	
		
			
				|  |  |  |  | " Code blocks | 
		
	
		
			
				|  |  |  |  | syntax region  jsBracket                      matchgroup=jsBrackets            start=/\[/ end=/\]/ contains=@jsExpression extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsParen                        matchgroup=jsParens              start=/(/  end=/)/  contains=@jsAll extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsParenDecorator     contained matchgroup=jsParensDecorator     start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsParenIfElse        contained matchgroup=jsParensIfElse        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsIfElseBlock extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsParenRepeat        contained matchgroup=jsParensRepeat        start=/(/  end=/)/  contains=@jsAll skipwhite skipempty nextgroup=jsCommentMisc,jsRepeatBlock extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsParenSwitch        contained matchgroup=jsParensSwitch        start=/(/  end=/)/  contains=@jsAll 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,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,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  jsBlock              contained matchgroup=jsBraces              start=/{/  end=/}/  contains=@jsAll extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsTryCatchBlock      contained matchgroup=jsTryCatchBraces      start=/{/  end=/}/  contains=@jsAll skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsFinallyBlock       contained matchgroup=jsFinallyBraces       start=/{/  end=/}/  contains=@jsAll extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsSwitchBlock        contained matchgroup=jsSwitchBraces        start=/{/  end=/}/  contains=@jsAll,jsLabel,jsSwitchColon extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsRepeatBlock        contained matchgroup=jsRepeatBraces        start=/{/  end=/}/  contains=@jsAll extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/  end=/}/  contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsObject                       matchgroup=jsObjectBraces        start=/{/  end=/}/  contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator extend fold | 
		
	
		
			
				|  |  |  |  | syntax region  jsTernaryIf                    matchgroup=jsTernaryIfOperator   start=/?/  end=/\%(:\|[\}]\@=\)/  contains=@jsExpression | 
		
	
		
			
				|  |  |  |  | syntax region  jsSpreadExpression   contained matchgroup=jsSpreadOperator      start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression | 
		
	
		
			
				|  |  |  |  | syntax region  jsRestExpression     contained matchgroup=jsRestOperator        start=/\.\.\./ end=/[,)]\@=/ | 
		
	
		
			
				|  |  |  |  | syntax region  jsTernaryIf                    matchgroup=jsTernaryIfOperator   start=/?/  end=/\%(:\|[\}]\@=\)/  contains=@jsExpression | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax match   jsGenerator            contained /\*/ skipwhite skipempty nextgroup=jsFuncName,jsFuncArgs | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncName             contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/ skipwhite skipempty nextgroup=jsFuncArgs,jsFlowFunctionGroup | 
		
	
		
			
				|  |  |  |  | syntax region  jsFuncArgExpression    contained matchgroup=jsFuncArgOperator start=/=/ end=/[,)]\@=/ contains=@jsExpression extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncArgCommas        contained ',' | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncArgRest     contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/ contains=jsFuncArgRestDots | 
		
	
		
			
				|  |  |  |  | syntax match   jsFuncArgRestDots contained /\.\.\./ | 
		
	
		
			
				|  |  |  |  | syntax keyword jsArguments            contained arguments | 
		
	
		
			
				|  |  |  |  | syntax keyword jsForAwait             contained await skipwhite skipempty nextgroup=jsParenRepeat | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Matches a single keyword argument with no parens | 
		
	
		
			
				|  |  |  |  | syntax match   jsArrowFuncArgs  /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs nextgroup=jsArrowFunction extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsArrowFuncArgs  /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs skipwhite skipempty nextgroup=jsArrowFunction extend | 
		
	
		
			
				|  |  |  |  | " Matches a series of arguments surrounded in parens | 
		
	
		
			
				|  |  |  |  | syntax match   jsArrowFuncArgs  /([^()]*)\s*\(=>\)\@=/ skipempty skipwhite contains=jsFuncArgs nextgroup=jsArrowFunction extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsArrowFuncArgs  /([^()]*)\s*\(=>\)\@=/ contains=jsFuncArgs skipempty skipwhite nextgroup=jsArrowFunction extend | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | exe 'syntax match jsFunction /\<function\>/ skipwhite skipempty nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite '.(exists('g:javascript_conceal_function')       ? 'conceal cchar='.g:javascript_conceal_function : '') | 
		
	
		
			
				|  |  |  |  | exe 'syntax match jsArrowFunction /=>/      skipwhite skipempty nextgroup=jsFuncBlock,jsCommentFunction               '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '') | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Classes | 
		
	
		
			
				|  |  |  |  | syntax keyword jsClassKeywords          contained extends class | 
		
	
		
			
				|  |  |  |  | syntax match   jsClassNoise             contained /\./ | 
		
	
		
			
				|  |  |  |  | syntax match   jsClassMethodType        contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty | 
		
	
		
			
				|  |  |  |  | syntax match   jsClassDefinition        /\<class\>\%( [a-zA-Z_$][0-9a-zA-Z_$ \n.]*\)*/ contains=jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup=jsCommentClass,jsClassBlock,jsFlowClassGroup | 
		
	
		
			
				|  |  |  |  | syntax match   jsClassProperty          contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue | 
		
	
		
			
				|  |  |  |  | syntax region  jsClassValue             contained start=/=/ end=/\%(;\|}\|\n\)\@=/ contains=@jsExpression | 
		
	
		
			
				|  |  |  |  | syntax region  jsClassPropertyComputed  contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs,jsClassValue extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsClassFuncName          contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\%(\s*(\)\@=/ skipwhite skipempty nextgroup=jsFuncArgs | 
		
	
		
			
				|  |  |  |  | syntax region  jsClassStringKey         contained start=+"+  skip=+\\\("\|$\)+  end=+"\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs | 
		
	
		
			
				|  |  |  |  | syntax region  jsClassStringKey         contained start=+'+  skip=+\\\('\|$\)+  end=+'\|$+  contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Destructuring | 
		
	
		
			
				|  |  |  |  | syntax match   jsDestructuringPropertyValue     contained /\<[0-9a-zA-Z_$]*\>/ | 
		
	
		
			
				|  |  |  |  | syntax match   jsDestructuringProperty          contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValue | 
		
	
		
			
				|  |  |  |  | syntax match   jsDestructuringAssignment        contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValueAssignment | 
		
	
		
			
				|  |  |  |  | syntax region  jsDestructuringValue             contained start=/=/ end=/[,}\]]\@=/ contains=@jsExpression extend | 
		
	
		
			
				|  |  |  |  | syntax region  jsDestructuringValueAssignment   contained start=/:/ end=/[,}=]\@=/ contains=jsDestructuringPropertyValue,jsDestructuringBlock,jsNoise,jsDestructuringNoise skipwhite skipempty nextgroup=jsDestructuringValue extend | 
		
	
		
			
				|  |  |  |  | syntax match   jsDestructuringNoise             contained /[,\[\]]/ | 
		
	
		
			
				|  |  |  |  | syntax region  jsDestructuringPropertyComputed  contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsDestructuringValue,jsDestructuringNoise extend fold | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Comments | 
		
	
		
			
				|  |  |  |  | syntax keyword jsCommentTodo    contained TODO FIXME XXX TBD | 
		
	
		
			
				|  |  |  |  | syntax region  jsComment        start=/\/\// end=/$/ contains=jsCommentTodo,@Spell extend keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsComment        start=/\/\*/  end=/\*\// contains=jsCommentTodo,@Spell fold extend keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsEnvComment     start=/\%^#!/ end=/$/ display | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Specialized Comments - These are special comment regexes that are used in | 
		
	
		
			
				|  |  |  |  | " odd places that maintain the proper nextgroup functionality. It sucks we | 
		
	
		
			
				|  |  |  |  | " can't make jsComment a skippable type of group for nextgroup | 
		
	
		
			
				|  |  |  |  | syntax region  jsCommentFunction    contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn extend keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsCommentFunction    contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn fold extend keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsCommentClass       contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClassGroup extend keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsCommentClass       contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsClassBlock,jsFlowClassGroup fold extend keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsCommentMisc        contained start=/\/\// end=/$/    contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock extend keepend | 
		
	
		
			
				|  |  |  |  | syntax region  jsCommentMisc        contained start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell skipwhite skipempty nextgroup=jsBlock fold extend keepend | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Decorators | 
		
	
		
			
				|  |  |  |  | syntax match   jsDecorator                    /^\s*@/ nextgroup=jsDecoratorFunction | 
		
	
		
			
				|  |  |  |  | syntax match   jsDecoratorFunction  contained /[a-zA-Z_][a-zA-Z0-9_.]*/ nextgroup=jsParenDecorator | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | if exists("javascript_plugin_jsdoc") | 
		
	
		
			
				|  |  |  |  |   runtime extras/jsdoc.vim | 
		
	
		
			
				|  |  |  |  |   " NGDoc requires JSDoc | 
		
	
		
			
				|  |  |  |  |   if exists("javascript_plugin_ngdoc") | 
		
	
		
			
				|  |  |  |  |     runtime extras/ngdoc.vim | 
		
	
		
			
				|  |  |  |  |   endif | 
		
	
		
			
				|  |  |  |  | endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax keyword jsClassKeywords extends class contained | 
		
	
		
			
				|  |  |  |  | syntax match   jsClassNoise /\./ contained | 
		
	
		
			
				|  |  |  |  | syntax keyword jsClassMethodDefinitions get set static contained nextgroup=jsFuncName skipwhite skipempty | 
		
	
		
			
				|  |  |  |  | syntax match   jsClassDefinition /class [a-zA-Z_$][0-9a-zA-Z_$ \n.]*/  contains=jsClassKeywords,jsClassNoise nextgroup=jsClassBlock skipwhite skipempty | 
		
	
		
			
				|  |  |  |  | if exists("javascript_plugin_flow") | 
		
	
		
			
				|  |  |  |  |   runtime extras/flow.vim | 
		
	
		
			
				|  |  |  |  | endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | syntax cluster jsExpression  contains=jsBracket,jsParen,jsObject,jsBlock,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,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 | 
		
	
		
			
				|  |  |  |  | syntax cluster jsAll         contains=@jsExpression,jsExportContainer,jsImportContainer,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Define the default highlighting. | 
		
	
		
			
				|  |  |  |  | " For version 5.7 and earlier: only when not done already | 
		
	
	
		
			
				
					|  |  |  | @ -227,25 +240,20 @@ if version >= 508 || !exists("did_javascript_syn_inits") | 
		
	
		
			
				|  |  |  |  |   else | 
		
	
		
			
				|  |  |  |  |     command -nargs=+ HiLink hi def link <args> | 
		
	
		
			
				|  |  |  |  |   endif | 
		
	
		
			
				|  |  |  |  |   HiLink jsFuncArgRest          Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsComment              Comment | 
		
	
		
			
				|  |  |  |  |   HiLink jsLineComment          Comment | 
		
	
		
			
				|  |  |  |  |   HiLink jsEnvComment           PreProc | 
		
	
		
			
				|  |  |  |  |   HiLink jsBlockComment         Comment | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensIfElse         jsParens | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensRepeat         jsParens | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensSwitch         jsParens | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensCatch          jsParens | 
		
	
		
			
				|  |  |  |  |   HiLink jsCommentTodo          Todo | 
		
	
		
			
				|  |  |  |  |   HiLink jsCvsTag               Function | 
		
	
		
			
				|  |  |  |  |   HiLink jsDocTags              Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsDocSeeTag            Function | 
		
	
		
			
				|  |  |  |  |   HiLink jsDocType              Type | 
		
	
		
			
				|  |  |  |  |   HiLink jsDocTypeBrackets      jsDocType | 
		
	
		
			
				|  |  |  |  |   HiLink jsDocTypeRecord        jsDocType | 
		
	
		
			
				|  |  |  |  |   HiLink jsDocTypeNoParam       Type | 
		
	
		
			
				|  |  |  |  |   HiLink jsDocParam             Label | 
		
	
		
			
				|  |  |  |  |   HiLink jsStringS              String | 
		
	
		
			
				|  |  |  |  |   HiLink jsStringD              String | 
		
	
		
			
				|  |  |  |  |   HiLink jsString               String | 
		
	
		
			
				|  |  |  |  |   HiLink jsObjectKeyString      String | 
		
	
		
			
				|  |  |  |  |   HiLink jsTemplateString       String | 
		
	
		
			
				|  |  |  |  |   HiLink jsObjectStringKey      String | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassStringKey       String | 
		
	
		
			
				|  |  |  |  |   HiLink jsTaggedTemplate       StorageClass | 
		
	
		
			
				|  |  |  |  |   HiLink jsTernaryIfOperator    Conditional | 
		
	
		
			
				|  |  |  |  |   HiLink jsTernaryIfOperator    Operator | 
		
	
		
			
				|  |  |  |  |   HiLink jsRegexpString         String | 
		
	
		
			
				|  |  |  |  |   HiLink jsRegexpBoundary       SpecialChar | 
		
	
		
			
				|  |  |  |  |   HiLink jsRegexpQuantifier     SpecialChar | 
		
	
	
		
			
				
					|  |  |  | @ -261,28 +269,30 @@ if version >= 508 || !exists("did_javascript_syn_inits") | 
		
	
		
			
				|  |  |  |  |   HiLink jsLabel                Label | 
		
	
		
			
				|  |  |  |  |   HiLink jsReturn               Statement | 
		
	
		
			
				|  |  |  |  |   HiLink jsRepeat               Repeat | 
		
	
		
			
				|  |  |  |  |   HiLink jsDo                   Repeat | 
		
	
		
			
				|  |  |  |  |   HiLink jsStatement            Statement | 
		
	
		
			
				|  |  |  |  |   HiLink jsException            Exception | 
		
	
		
			
				|  |  |  |  |   HiLink jsKeyword              Keyword | 
		
	
		
			
				|  |  |  |  |   HiLink jsTry                  Exception | 
		
	
		
			
				|  |  |  |  |   HiLink jsFinally              Exception | 
		
	
		
			
				|  |  |  |  |   HiLink jsCatch                Exception | 
		
	
		
			
				|  |  |  |  |   HiLink jsAsyncKeyword         Keyword | 
		
	
		
			
				|  |  |  |  |   HiLink jsForAwait             Keyword | 
		
	
		
			
				|  |  |  |  |   HiLink jsArrowFunction        Type | 
		
	
		
			
				|  |  |  |  |   HiLink jsFunction             Type | 
		
	
		
			
				|  |  |  |  |   HiLink jsGenerator            jsFunction | 
		
	
		
			
				|  |  |  |  |   HiLink jsArrowFuncArgs        jsFuncArgs | 
		
	
		
			
				|  |  |  |  |   HiLink jsFuncName             Function | 
		
	
		
			
				|  |  |  |  |   HiLink jsArgsObj              Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassFuncName        jsFuncName | 
		
	
		
			
				|  |  |  |  |   HiLink jsObjectFuncName       Function | 
		
	
		
			
				|  |  |  |  |   HiLink jsArguments            Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsError                Error | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensError          Error | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensErrA           Error | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensErrB           Error | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensErrC           Error | 
		
	
		
			
				|  |  |  |  |   HiLink jsOperator             Operator | 
		
	
		
			
				|  |  |  |  |   HiLink jsOf                   Operator | 
		
	
		
			
				|  |  |  |  |   HiLink jsStorageClass         StorageClass | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassKeywords        Structure | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassKeywords        Keyword | 
		
	
		
			
				|  |  |  |  |   HiLink jsThis                 Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsStatic               Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsSuper                Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsSuper                Constant | 
		
	
		
			
				|  |  |  |  |   HiLink jsNan                  Number | 
		
	
		
			
				|  |  |  |  |   HiLink jsNull                 Type | 
		
	
		
			
				|  |  |  |  |   HiLink jsUndefined            Type | 
		
	
	
		
			
				
					|  |  |  | @ -290,6 +300,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") | 
		
	
		
			
				|  |  |  |  |   HiLink jsFloat                Float | 
		
	
		
			
				|  |  |  |  |   HiLink jsBooleanTrue          Boolean | 
		
	
		
			
				|  |  |  |  |   HiLink jsBooleanFalse         Boolean | 
		
	
		
			
				|  |  |  |  |   HiLink jsObjectColon          jsNoise | 
		
	
		
			
				|  |  |  |  |   HiLink jsNoise                Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsBrackets             Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsParens               Noise | 
		
	
	
		
			
				
					|  |  |  | @ -298,18 +309,47 @@ if version >= 508 || !exists("did_javascript_syn_inits") | 
		
	
		
			
				|  |  |  |  |   HiLink jsFuncParens           Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassBraces          Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassNoise           Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsIfElseBraces         jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsTryCatchBraces       jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsModuleBraces         jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsObjectBraces         Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsObjectSeparator      Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsFinallyBraces        jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsRepeatBraces         jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsSwitchBraces         jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsExportBraces         jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsSpecial              Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsTemplateVar          Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsTemplateBraces       jsBraces | 
		
	
		
			
				|  |  |  |  |   HiLink jsGlobalObjects        Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsExceptions           Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsFutureKeys           Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsBuiltins             Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsModules              Include | 
		
	
		
			
				|  |  |  |  |   HiLink jsModuleWords          Include | 
		
	
		
			
				|  |  |  |  |   HiLink jsGlobalObjects        Constant | 
		
	
		
			
				|  |  |  |  |   HiLink jsGlobalNodeObjects    Constant | 
		
	
		
			
				|  |  |  |  |   HiLink jsExceptions           Constant | 
		
	
		
			
				|  |  |  |  |   HiLink jsBuiltins             Constant | 
		
	
		
			
				|  |  |  |  |   HiLink jsModuleKeywords       Include | 
		
	
		
			
				|  |  |  |  |   HiLink jsModuleOperators      Include | 
		
	
		
			
				|  |  |  |  |   HiLink jsModuleDefault        Include | 
		
	
		
			
				|  |  |  |  |   HiLink jsDecorator            Special | 
		
	
		
			
				|  |  |  |  |   HiLink jsFuncArgRestDots      Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsFuncArgDestructuring Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsDecoratorFunction    Function | 
		
	
		
			
				|  |  |  |  |   HiLink jsParensDecorator      jsParens | 
		
	
		
			
				|  |  |  |  |   HiLink jsFuncArgOperator      jsFuncArgs | 
		
	
		
			
				|  |  |  |  |   HiLink jsModuleAsterisk       Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassProperty        jsObjectKey | 
		
	
		
			
				|  |  |  |  |   HiLink jsSpreadOperator       Operator | 
		
	
		
			
				|  |  |  |  |   HiLink jsRestOperator         Operator | 
		
	
		
			
				|  |  |  |  |   HiLink jsRestExpression       jsFuncArgs | 
		
	
		
			
				|  |  |  |  |   HiLink jsSwitchColon          Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassMethodType      Type | 
		
	
		
			
				|  |  |  |  |   HiLink jsObjectMethodType     Type | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassDefinition      jsFuncName | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   HiLink jsDestructuringBraces     Noise | 
		
	
		
			
				|  |  |  |  |   HiLink jsDestructuringProperty   jsFuncArgs | 
		
	
		
			
				|  |  |  |  |   HiLink jsDestructuringAssignment jsObjectKey | 
		
	
		
			
				|  |  |  |  |   HiLink jsDestructuringNoise      Noise | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   HiLink jsCommentFunction      jsComment | 
		
	
		
			
				|  |  |  |  |   HiLink jsCommentClass         jsComment | 
		
	
		
			
				|  |  |  |  |   HiLink jsCommentMisc          jsComment | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   HiLink jsDomErrNo             Constant | 
		
	
		
			
				|  |  |  |  |   HiLink jsDomNodeConsts        Constant | 
		
	
	
		
			
				
					|  |  |  | @ -322,14 +362,12 @@ if version >= 508 || !exists("did_javascript_syn_inits") | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   HiLink jsCssStyles            Label | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   HiLink jsClassMethodDefinitions Type | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   delcommand HiLink | 
		
	
		
			
				|  |  |  |  | endif | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Define the htmlJavaScript for HTML syntax html.vim | 
		
	
		
			
				|  |  |  |  | syntax cluster  htmlJavaScript       contains=@jsAll,jsBracket,jsParen,jsBlock | 
		
	
		
			
				|  |  |  |  | syntax cluster  javaScriptExpression contains=@jsAll,jsBracket,jsParen,jsBlock,@htmlPreproc | 
		
	
		
			
				|  |  |  |  | syntax cluster  htmlJavaScript       contains=@jsAll | 
		
	
		
			
				|  |  |  |  | syntax cluster  javaScriptExpression contains=@jsAll | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | " Vim's default html.vim highlights all javascript as 'Special' | 
		
	
		
			
				|  |  |  |  | hi! def link javaScript              NONE | 
		
	
	
		
			
				
					|  |  |  | 
 |