diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2016-05-03 12:56:11 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2016-05-03 12:56:11 +0200 | 
| commit | 8cd62b9eab04cd80998a810c103b80d49fc64a89 (patch) | |
| tree | 231115681ec694907a923745892508358ff529be | |
| parent | 93e3f020a9637b3df9109348cef5fcc3e0bbda43 (diff) | |
| download | vim-polyglot-8cd62b9eab04cd80998a810c103b80d49fc64a89.tar.gz vim-polyglot-8cd62b9eab04cd80998a810c103b80d49fc64a89.zip | |
Change javascript provider to pangloss/vim-javascript, closes #80v2.9.0
Diffstat (limited to '')
| -rw-r--r-- | README.md | 2 | ||||
| -rwxr-xr-x | build | 2 | ||||
| -rw-r--r-- | ftdetect/polyglot.vim | 12 | ||||
| -rw-r--r-- | ftplugin/javascript.vim (renamed from syntax/yajs/web.vim) | 1 | ||||
| -rw-r--r-- | indent/javascript.vim | 182 | ||||
| -rw-r--r-- | syntax/javascript.vim | 672 | ||||
| -rw-r--r-- | syntax/semhl.vim | 8 | ||||
| -rw-r--r-- | syntax/yajs/ecma-402.vim | 5 | ||||
| -rw-r--r-- | syntax/yajs/es6-array.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-date.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-function.vim | 5 | ||||
| -rw-r--r-- | syntax/yajs/es6-json.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-map.vim | 5 | ||||
| -rw-r--r-- | syntax/yajs/es6-math.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-number.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-object.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-promise.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-proxy.vim | 5 | ||||
| -rw-r--r-- | syntax/yajs/es6-regexp.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-set.vim | 5 | ||||
| -rw-r--r-- | syntax/yajs/es6-string.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/es6-symbol.vim | 6 | ||||
| -rw-r--r-- | syntax/yajs/event.vim | 4 | ||||
| -rw-r--r-- | syntax/yajs/javascript.vim | 17 | ||||
| -rw-r--r-- | syntax/yajs/node.vim | 8 | 
25 files changed, 471 insertions, 522 deletions
| @@ -56,7 +56,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo  - [haxe](https://github.com/yaymukund/vim-haxe) (syntax, ftdetect)  - [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)  - [jasmine](https://github.com/glanotte/vim-jasmine) (syntax, ftdetect) -- [javascript](https://github.com/sheerun/yajs.vim) (syntax, indent) +- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftplugin, ftdetect)  - [json](https://github.com/sheerun/vim-json) (syntax, indent, ftdetect)  - [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)  - [jsx](https://github.com/mxw/vim-jsx) (ftdetect, after) @@ -127,7 +127,7 @@ PACKS="    haxe:yaymukund/vim-haxe    html5:othree/html5.vim    jasmine:glanotte/vim-jasmine -  javascript:sheerun/yajs.vim +  javascript:pangloss/vim-javascript    json:sheerun/vim-json    jst:briancollins/vim-jst    jsx:mxw/vim-jsx:_ALL diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index 3866d907..5f30e46e 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -192,6 +192,18 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jasmine') == -1  autocmd BufNewFile,BufRead *Spec.js,*_spec.js set filetype=jasmine.javascript syntax=jasmine  endif +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 +   +au BufNewFile,BufRead *.js setf javascript +au BufNewFile,BufRead *.jsm setf javascript +au BufNewFile,BufRead Jakefile setf javascript +fun! s:SelectJavascript() +  if getline(1) =~# '^#!.*/bin/env\s\+node\>' +    set ft=javascript +  endif +endfun +au BufNewFile,BufRead * call s:SelectJavascript() +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jsx') == -1  if !exists('g:jsx_ext_required') diff --git a/syntax/yajs/web.vim b/ftplugin/javascript.vim index af40b194..f89932f2 100644 --- a/syntax/yajs/web.vim +++ b/ftplugin/javascript.vim @@ -1,4 +1,5 @@  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 +setlocal suffixesadd+=.js  endif diff --git a/indent/javascript.vim b/indent/javascript.vim index dedc41fa..90e84cb5 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -18,7 +18,7 @@ setlocal nosmartindent  " Now, set up our indentation expression and keys that trigger it.  setlocal indentexpr=GetJavascriptIndent()  setlocal formatexpr=Fixedgq(v:lnum,v:count) -setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e +setlocal indentkeys=0{,0},0),0],0\,:,!^F,o,O,e  " Only define the function once.  if exists("*GetJavascriptIndent") @@ -28,13 +28,27 @@ endif  let s:cpo_save = &cpo  set cpo&vim +" Get shiftwidth value +if exists('*shiftwidth') +  func s:sw() +    return shiftwidth() +  endfunc +else +  func s:sw() +    return &sw +  endfunc +endif +  " 1. Variables {{{1  " ============ -let s:js_keywords = '^\s*\(break\|case\|catch\|continue\|debugger\|default\|delete\|do\|else\|finally\|for\|function\|if\|in\|instanceof\|new\|return\|switch\|this\|throw\|try\|typeof\|var\|void\|while\|with\)' - +let s:js_keywords = '^\s*\(break\|catch\|const\|continue\|debugger\|delete\|do\|else\|finally\|for\|function\|if\|in\|instanceof\|let\|new\|return\|switch\|this\|throw\|try\|typeof\|var\|void\|while\|with\)' +let s:expr_case = '^\s*\(case\s\+[^\:]*\|default\)\s*:\s*'  " Regex of syntax group names that are or delimit string or are comments. -let s:syng_strcom = 'string\|regex\|comment\c' +let s:syng_strcom = '\%(\%(template\)\@<!string\|regex\|comment\)\c' + +" Regex of syntax group names that are or delimit template strings +let s:syng_template = 'template\c'  " Regex of syntax group names that are strings.  let s:syng_string = 'regex\c' @@ -51,25 +65,34 @@ let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_st  let s:line_term = '\s*\%(\%(\/\/\).*\)\=$'  " Regex that defines continuation lines, not including (, {, or [. -let s:continuation_regex = '\%([\\*+/.:]\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\|[^=]=[^=].*,\)' . s:line_term +let s:continuation_regex = '\%([\\*/.:]\|+\@<!+\|-\@<!-\|\%(<%\)\@<!=\|\W[|&?]\|||\|&&\|[^=]=[^=>].*,\)' . s:line_term  " Regex that defines continuation lines.  " TODO: this needs to deal with if ...: and so on -let s:msl_regex = s:continuation_regex +let s:msl_regex = s:continuation_regex.'\|'.s:expr_case -let s:one_line_scope_regex = '\<\%(if\|else\|for\|while\)\>[^{;]*' . s:line_term +let s:one_line_scope_regex = '\%(\%(\<else\>\|\<\%(if\|for\|while\)\>\s*(\%([^()]*\|[^()]*(\%([^()]*\|[^()]*(\%([^()]*\|[^()]*([^()]*)[^()]*\))[^()]*\))[^()]*\))\)\|=>\)' . s:line_term  " Regex that defines blocks. -let s:block_regex = '\%([{[]\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term +let s:block_regex = '\%([{([]\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term + +let s:operator_first = '^\s*\%([*/.:?]\|\([-+]\)\1\@!\|||\|&&\)' -let s:var_stmt = '^\s*var' +let s:var_stmt = '^\s*\%(const\|let\|var\)'  let s:comma_first = '^\s*,'  let s:comma_last = ',\s*$' -let s:ternary = '^\s\+[?|:]' -let s:ternary_q = '^\s\+?' - +let s:case_indent = s:sw() +let s:case_indent_after = s:sw() +let s:m = matchlist(&cinoptions, ':\(.\)') +if (len(s:m) > 2) +    let s:case_indent = s:m[1] +endif +let s:m = matchlist(&cinoptions, '=\(.\)') +if (len(s:m) > 2) +    let s:case_indent_after = s:m[1] +endif  " 2. Auxiliary Functions {{{1  " ====================== @@ -83,6 +106,11 @@ function s:IsInString(lnum, col)    return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string  endfunction +" Check if the character at lnum:col is inside a template string. +function s:IsInTempl(lnum, col) +  return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_template +endfunction +  " Check if the character at lnum:col is inside a multi-line comment.  function s:IsInMultilineComment(lnum, col)    return !s:IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline @@ -101,13 +129,13 @@ function s:PrevNonBlankNonString(lnum)      " Go in and out of blocks comments as necessary.      " If the line isn't empty (with opt. comment) or in a string, end search.      let line = getline(lnum) -    if line =~ '/\*' +    if s:IsInMultilineComment(lnum, matchend(line, '/\*') - 1)        if in_block          let in_block = 0        else          break        endif -    elseif !in_block && line =~ '\*/' +    elseif !in_block && s:IsInMultilineComment(lnum, matchend(line, '\*/') - 1)        let in_block = 1      elseif !in_block && line !~ '^\s*\%(//\).*$' && !(s:IsInStringOrComment(lnum, 1) && s:IsInStringOrComment(lnum, strlen(line)))        break @@ -127,9 +155,21 @@ function s:GetMSL(lnum, in_one_line_scope)      " Otherwise, terminate search as we have found our MSL already.      let line = getline(lnum)      let col = match(line, s:msl_regex) + 1 +    let line2 = getline(msl) +    let col2 = matchend(line2, ')')      if (col > 0 && !s:IsInStringOrComment(lnum, col)) || s:IsInString(lnum, strlen(line))        let msl = lnum + +    " if there are more closing brackets, continue from the line which has the matching opening bracket +    elseif col2 > 0 && !s:IsInStringOrComment(msl, col2) && s:LineHasOpeningBrackets(msl)[0] == '2' && !a:in_one_line_scope +      call cursor(msl, 1) +      if searchpair('(', '', ')', 'bW', s:skip_expr) > 0 +        let lnum = line('.') +        let msl = lnum +      endif +      else +        " Don't use lines that are part of a one line scope as msl unless the        " flag in_one_line_scope is set to 1        " @@ -140,7 +180,7 @@ function s:GetMSL(lnum, in_one_line_scope)        if msl_one_line == 0          break        endif -    endif +    end      let lnum = s:PrevNonBlankNonString(lnum - 1)    endwhile    return msl @@ -193,9 +233,9 @@ function s:GetVarIndent(lnum)      " if the previous line doesn't end in a comma, return to regular indent      if (line !~ s:comma_last) -      return indent(prev_lnum) - &sw +      return indent(prev_lnum) - s:sw()      else -      return indent(lvar) + &sw +      return indent(lvar) + s:sw()      endif    endif @@ -221,7 +261,7 @@ function s:LineHasOpeningBrackets(lnum)      endif      let pos = match(line, '[][(){}]', pos + 1)    endwhile -  return (open_0 > 0) . (open_2 > 0) . (open_4 > 0) +  return (open_0 > 0 ? 1 : (open_0 == 0 ? 0 : 2)) . (open_2 > 0) . (open_4 > 0)  endfunction  function s:Match(lnum, regex) @@ -302,6 +342,17 @@ function GetJavascriptIndent()    " previous nonblank line number    let prevline = prevnonblank(v:lnum - 1) +  if (line =~ s:expr_case) +    if (getline(prevline) =~ s:expr_case) +      return indent(prevline) +    else +      if (getline(prevline) =~ s:block_regex) +        return indent(prevline) + s:case_indent +      else +        return indent(prevline) - s:case_indent_after +      endif +    endif +  endif    " If we got a closing bracket on an empty line, find its match and indent    " according to it.  For parentheses we indent to its column - 1, for the    " others we indent to the containing line's MSL's level.  Return -1 if fail. @@ -323,7 +374,7 @@ function GetJavascriptIndent()            return indent(prevline)          " otherwise we indent 1 level          else -          return indent(lvar) + &sw +          return indent(lvar) + s:sw()          endif        endif      endif @@ -342,15 +393,51 @@ function GetJavascriptIndent()    " If the line is comma first, dedent 1 level    if (getline(prevline) =~ s:comma_first) -    return indent(prevline) - &sw +    return indent(prevline) - s:sw() +  endif +  if (getline(prevline) =~ s:expr_case) +    return indent(prevline) + s:case_indent_after    endif -  if (line =~ s:ternary) -    if (getline(prevline) =~ s:ternary_q) +  " If line starts with an operator... +  if (s:Match(v:lnum, s:operator_first)) +    if (s:Match(prevline, s:operator_first)) +      " and so does previous line, don't indent        return indent(prevline) -    else -      return indent(prevline) + &sw +    end +    let counts = s:LineHasOpeningBrackets(prevline) +    if counts[0] == '2' +      call cursor(prevline, 1) +      " Search for the opening tag +      let mnum = searchpair('(', '', ')', 'bW', s:skip_expr) +      if mnum > 0 && s:Match(mnum, s:operator_first) +        return indent(mnum) +      end +    elseif counts[0] != '1' && counts[1] != '1' && counts[2] != '1' +      " otherwise, indent 1 level +      return indent(prevline) + s:sw() +    end +    " If previous line starts with an operator... +  elseif s:Match(prevline, s:operator_first) && !s:Match(prevline, s:comma_last) && !s:Match(prevline, '};\=' . s:line_term) +    let counts = s:LineHasOpeningBrackets(prevline) +    if counts[0] == '2' && counts[1] == '1' +      call cursor(prevline, 1) +      " Search for the opening tag +      let mnum = searchpair('(', '', ')', 'bW', s:skip_expr) +      if mnum > 0 && !s:Match(mnum, s:operator_first) +        return indent(mnum) + s:sw() +      end +    elseif counts[0] != '1' && counts[1] != '1' && counts[2] != '1' +      return indent(prevline) - s:sw() +    end +  end + +  if getline(prevline) =~ '^\s*`$' && s:IsInTempl(v:lnum, 1) +    if line !~ '^\s*`$' +      return indent(prevline) + s:sw()      endif +  elseif line =~ '^\s*`$' && s:IsInTempl(prevline, 1) +    return indent(prevline) - s:sw()    endif    " If we are in a multi-line comment, cindent does the right thing. @@ -387,48 +474,71 @@ function GetJavascriptIndent()      return 0    endif -  " Set up variables for current line. -  let line = getline(lnum) -  let ind = indent(lnum)    " If the previous line ended with a block opening, add a level of indent.    if s:Match(lnum, s:block_regex) -    return indent(s:GetMSL(lnum, 0)) + &sw +    if (line =~ s:expr_case) +      return indent(s:GetMSL(lnum, 0)) + s:sw()/2 +    else +      return indent(s:GetMSL(lnum, 0)) + s:sw() +    endif    endif +  " Set up variables for current line. +  let line = getline(lnum) +  let ind = indent(lnum)    " If the previous line contained an opening bracket, and we are still in it,    " add indent depending on the bracket type.    if line =~ '[[({]'      let counts = s:LineHasOpeningBrackets(lnum)      if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0 -      if col('.') + 1 == col('$') -        return ind + &sw +      if col('.') + 1 == col('$') || line =~ s:one_line_scope_regex +        return ind + s:sw()        else          return virtcol('.')        endif -    elseif counts[1] == '1' || counts[2] == '1' -      return ind + &sw +    elseif counts[1] == '1' || counts[2] == '1' && counts[0] != '2' +      return ind + s:sw()      else        call cursor(v:lnum, vcol)      end -  endif +  elseif line =~ '.\+};\=' . s:line_term +    call cursor(lnum, 1) +    " Search for the opening tag +    let mnum = searchpair('{', '', '}', 'bW', s:skip_expr) +    if mnum > 0 +      return indent(s:GetMSL(mnum, 0))  +    end +  elseif line =~ '.\+);\=' || line =~ s:comma_last +    let counts = s:LineHasOpeningBrackets(lnum) +    if counts[0] == '2' +      call cursor(lnum, 1) +      " Search for the opening tag +      let mnum = searchpair('(', '', ')', 'bW', s:skip_expr) +      if mnum > 0 +        return indent(s:GetMSL(mnum, 0))  +      end +    elseif line !~ s:var_stmt +      return indent(prevline) +    end +  end    " 3.4. Work on the MSL line. {{{2    " --------------------------    let ind_con = ind -  let ind = s:IndentWithContinuation(lnum, ind_con, &sw) +  let ind = s:IndentWithContinuation(lnum, ind_con, s:sw())    " }}}2    "    "    let ols = s:InOneLineScope(lnum)    if ols > 0 -    let ind = ind + &sw +    let ind = ind + s:sw()    else      let ols = s:ExitingOneLineScope(lnum)      while ols > 0 && ind > 0 -      let ind = ind - &sw +      let ind = ind - s:sw()        let ols = s:InOneLineScope(ols - 1)      endwhile    endif diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 603358ae..274eebfe 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -2,21 +2,9 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') ==  " Vim syntax file  " Language:     JavaScript -" Maintainer:   Kao Wei-Ko(othree) <othree@gmail.com> -" Last Change:  2015-05-11 -" Version:      1.5 -" Changes:      Go to https://github.com/othree/yajs.vim for recent changes. -" Origin:       https://github.com/jelera/vim-javascript-syntax -" Credits:      Jose Elera Campana, Zhao Yi, Claudio Fleiner, Scott Shattuck  -"               (This file is based on their hard work), gumnos (From the #vim  -"               IRC Channel in Freenode) - - -" if exists("b:yajs_loaded") -  " finish -" else -  " let b:yajs_loaded = 1 -" endif +" Maintainer:   vim-javascript community +" URL:          https://github.com/pangloss/vim-javascript +  if !exists("main_syntax")    if version < 600      syntax clear @@ -26,371 +14,331 @@ if !exists("main_syntax")    let main_syntax = 'javascript'  endif -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_javascript_syn_inits") -  let did_javascript_hilink = 1 -  if version < 508 -    let did_javascript_syn_inits = 1 -    command -nargs=+ HiLink hi link <args> -  else -    command -nargs=+ HiLink hi def link <args> -  endif -else -  finish +if !exists('g:javascript_conceal') +  let g:javascript_conceal = 0  endif -"Dollar sign is permitted anywhere in an identifier -setlocal iskeyword-=$ -if &filetype =~ 'javascript' -  setlocal iskeyword+=$ -  syntax cluster htmlJavaScript                 contains=TOP -endif +"" dollar sign is permittd anywhere in an identifier +setlocal iskeyword+=$  syntax sync fromstart -"Syntax coloring for Node.js shebang line -syntax match   shellbang "^#!.*node\>" -syntax match   shellbang "^#!.*iojs\>" - -syntax match   javascriptOpSymbols            /:\ze\_[^+\-*/%\^=!<>&|?:]/ nextgroup=@javascriptStatement,javascriptCase skipwhite skipempty -syntax match   javascriptOpSymbols            /[+\-*/%\^=!<>&|?:]\+/ contains=javascriptOpSymbol nextgroup=@javascriptExpression skipwhite skipempty +syntax match   jsNoise           /[:,\;\.]\{1}/ + +"" Program Keywords +syntax keyword jsStorageClass   const var let +syntax keyword jsOperator       delete instanceof typeof void new in +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 -"JavaScript comments -syntax keyword javascriptCommentTodo           contained TODO FIXME XXX TBD -syntax match   javascriptLineComment           "//.*" contains=@Spell,javascriptCommentTodo -syntax region  javascriptComment               start="/\*"  end="\*/" contains=@Spell,javascriptCommentTodo extend -syntax cluster javascriptComments              contains=javascriptDocComment,javascriptComment,javascriptLineComment +syntax case match -"JSDoc +"" 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\+\>/ +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 + +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 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 +syntax keyword jsAsyncKeyword   async await + +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 + +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 + +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 + +" 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 + +" 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 + +" 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 -syntax region  javascriptDocComment            start="/\*\*"  end="\*/" contains=javascriptDocNotation,javascriptCommentTodo,@Spell fold keepend -syntax match   javascriptDocNotation           contained / @/ nextgroup=javascriptDocTags - -syntax keyword javascriptDocTags               contained constant constructor constructs function ignore inner private public readonly static -syntax keyword javascriptDocTags               contained const dict expose inheritDoc interface nosideeffects override protected struct -syntax keyword javascriptDocTags               contained example global - -" syntax keyword javascriptDocTags               contained ngdoc nextgroup=javascriptDocNGDirective -syntax keyword javascriptDocTags               contained ngdoc scope priority animations -syntax keyword javascriptDocTags               contained ngdoc restrict methodOf propertyOf eventOf eventType nextgroup=javascriptDocParam skipwhite -syntax keyword javascriptDocNGDirective        contained overview service object function method property event directive filter inputType error - -syntax keyword javascriptDocTags               contained abstract virtual access augments - -syntax keyword javascriptDocTags               contained arguments callback lends memberOf name type kind link mixes mixin tutorial nextgroup=javascriptDocParam skipwhite -syntax keyword javascriptDocTags               contained variation nextgroup=javascriptDocNumParam skipwhite - -syntax keyword javascriptDocTags               contained author class classdesc copyright default defaultvalue nextgroup=javascriptDocDesc skipwhite -syntax keyword javascriptDocTags               contained deprecated description external host nextgroup=javascriptDocDesc skipwhite -syntax keyword javascriptDocTags               contained file fileOverview overview namespace requires since version nextgroup=javascriptDocDesc skipwhite -syntax keyword javascriptDocTags               contained summary todo license preserve nextgroup=javascriptDocDesc skipwhite - -syntax keyword javascriptDocTags               contained borrows exports nextgroup=javascriptDocA skipwhite -syntax keyword javascriptDocTags               contained param arg argument property prop module nextgroup=javascriptDocNamedParamType,javascriptDocParamName skipwhite -syntax keyword javascriptDocTags               contained type nextgroup=javascriptDocParamType skipwhite -syntax keyword javascriptDocTags               contained define enum extends implements this typedef nextgroup=javascriptDocParamType skipwhite -syntax keyword javascriptDocTags               contained return returns throws exception nextgroup=javascriptDocParamType,javascriptDocParamName skipwhite -syntax keyword javascriptDocTags               contained see nextgroup=javascriptDocRef skipwhite - -"syntax for event firing -syntax keyword javascriptDocTags               contained emits fires nextgroup=javascriptDocEventRef skipwhite - -syntax keyword javascriptDocTags               contained function func method nextgroup=javascriptDocName skipwhite -syntax match   javascriptDocName               contained /\h\w*/ - -syntax keyword javascriptDocTags               contained fires event nextgroup=javascriptDocEventRef skipwhite -syntax match   javascriptDocEventRef           contained /\h\w*#\(\h\w*\:\)\?\h\w*/ - -syntax match   javascriptDocNamedParamType     contained /{.\+}/ nextgroup=javascriptDocParamName skipwhite -syntax match   javascriptDocParamName          contained /\[\?[0-9a-zA-Z_\.]\+=\?[0-9a-zA-Z_\.]*\]\?/ nextgroup=javascriptDocDesc skipwhite -syntax match   javascriptDocParamType          contained /{.\+}/ nextgroup=javascriptDocDesc skipwhite -syntax match   javascriptDocA                  contained /\%(#\|\w\|\.\|:\|\/\)\+/ nextgroup=javascriptDocAs skipwhite -syntax match   javascriptDocAs                 contained /\s*as\s*/ nextgroup=javascriptDocB skipwhite -syntax match   javascriptDocB                  contained /\%(#\|\w\|\.\|:\|\/\)\+/ -syntax match   javascriptDocParam              contained /\%(#\|\w\|\.\|:\|\/\|-\)\+/ -syntax match   javascriptDocNumParam           contained /\d\+/ -syntax match   javascriptDocRef                contained /\%(#\|\w\|\.\|:\|\/\)\+/ -syntax region  javascriptDocLinkTag            contained matchgroup=javascriptDocLinkTag start=/{/ end=/}/ contains=javascriptDocTags +" 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 +syntax match   jsFuncArgCommas   contained ',' +syntax match   jsFuncArgRest     contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/ contains=jsFuncArgRestDots +syntax match   jsFuncArgRestDots contained /\.\.\./ + +" Matches a single keyword argument with no parens +syntax match   jsArrowFuncArgs  /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs nextgroup=jsArrowFunction extend +" Matches a series of arguments surrounded in parens +syntax match   jsArrowFuncArgs  /([^()]*)\s*\(=>\)\@=/ skipempty skipwhite contains=jsFuncArgs nextgroup=jsArrowFunction extend + +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 -syntax cluster javascriptDocs                  contains=javascriptDocParamType,javascriptDocNamedParamType,javascriptDocParam +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_javascript_syn_inits") +  if version < 508 +    let did_javascript_syn_inits = 1 +    command -nargs=+ HiLink hi link <args> +  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 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 jsTemplateString       String +  HiLink jsTaggedTemplate       StorageClass +  HiLink jsTernaryIfOperator    Conditional +  HiLink jsRegexpString         String +  HiLink jsRegexpBoundary       SpecialChar +  HiLink jsRegexpQuantifier     SpecialChar +  HiLink jsRegexpOr             Conditional +  HiLink jsRegexpMod            SpecialChar +  HiLink jsRegexpBackRef        SpecialChar +  HiLink jsRegexpGroup          jsRegexpString +  HiLink jsRegexpCharClass      Character +  HiLink jsCharacter            Character +  HiLink jsPrototype            Special +  HiLink jsConditional          Conditional +  HiLink jsBranch               Conditional +  HiLink jsLabel                Label +  HiLink jsReturn               Statement +  HiLink jsRepeat               Repeat +  HiLink jsStatement            Statement +  HiLink jsException            Exception +  HiLink jsKeyword              Keyword +  HiLink jsAsyncKeyword         Keyword +  HiLink jsArrowFunction        Type +  HiLink jsFunction             Type +  HiLink jsGenerator            jsFunction +  HiLink jsArrowFuncArgs        jsFuncArgs +  HiLink jsFuncName             Function +  HiLink jsArgsObj              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 jsThis                 Special +  HiLink jsStatic               Special +  HiLink jsSuper                Special +  HiLink jsNan                  Number +  HiLink jsNull                 Type +  HiLink jsUndefined            Type +  HiLink jsNumber               Number +  HiLink jsFloat                Float +  HiLink jsBooleanTrue          Boolean +  HiLink jsBooleanFalse         Boolean +  HiLink jsNoise                Noise +  HiLink jsBrackets             Noise +  HiLink jsParens               Noise +  HiLink jsBraces               Noise +  HiLink jsFuncBraces           Noise +  HiLink jsFuncParens           Noise +  HiLink jsClassBraces          Noise +  HiLink jsClassNoise           Noise +  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 jsDecorator            Special +  HiLink jsFuncArgRestDots      Noise +  HiLink jsFuncArgDestructuring Noise + +  HiLink jsDomErrNo             Constant +  HiLink jsDomNodeConsts        Constant +  HiLink jsDomElemAttrs         Label +  HiLink jsDomElemFuncs         PreProc + +  HiLink jsHtmlEvents           Special +  HiLink jsHtmlElemAttrs        Label +  HiLink jsHtmlElemFuncs        PreProc + +  HiLink jsCssStyles            Label + +  HiLink jsClassMethodDefinitions Type -if main_syntax == "javascript" -  syntax sync clear -  syntax sync ccomment javascriptComment minlines=200 +  delcommand HiLink  endif -syntax case match +" 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 javascriptAfterIdentifier       contains=javascriptDotNotation,javascriptFuncCallArg,javascriptComputedProperty,javascriptWSymbols,@javascriptSymbols - -syntax match   javascriptIdentifierName        /\<[^=<>!?+\-*\/%|&,;:. ~@#`"'\[\]\(\)\{\}\^0-9][^=<>!?+\-*\/%|&,;:. ~@#`"'\[\]\(\)\{\}\^]*/ nextgroup=@javascriptAfterIdentifier contains=@_semantic - -"Block VariableStatement EmptyStatement ExpressionStatement IfStatement IterationStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement SwitchStatement ThrowStatement TryStatement DebuggerStatement - -syntax cluster javascriptStatement             contains=javascriptBlock,javascriptVariable,@javascriptExpression,javascriptConditional,javascriptRepeat,javascriptBranch,javascriptLabel,javascriptStatementKeyword,javascriptTry,javascriptDebugger - -"Syntax in the JavaScript code -" syntax match   javascriptASCII                 contained /\\\d\d\d/ -syntax region  javascriptTemplateSubstitution  contained matchgroup=javascriptTemplateSB start=/\${/ end=/}/ contains=javascriptTemplateSBlock,javascriptTemplateSString  -syntax region  javascriptTemplateSBlock        contained start=/{/ end=/}/ contains=javascriptTemplateSBlock,javascriptTemplateSString transparent -syntax region  javascriptTemplateSString       contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/ extend contains=javascriptTemplateSStringRB transparent -syntax match   javascriptTemplateSStringRB     /}/ contained  -syntax region  javascriptString                start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/ nextgroup=@javascriptSymbols skipwhite skipempty -syntax region  javascriptTemplate              start=/`/  skip=/\\\\\|\\`\|\n/  end=/`\|$/ contains=javascriptTemplateSubstitution nextgroup=@javascriptSymbols skipwhite skipempty -" syntax match   javascriptTemplateTag           /\k\+/ nextgroup=javascriptTemplate -syntax region  javascriptArray                 matchgroup=javascriptBraces start=/\[/ end=/]/ contains=@javascriptValue,javascriptForComprehension,@javascriptComments nextgroup=@javascriptSymbols,@javascriptComments skipwhite skipempty - -syntax match   javascriptNumber                /\<0[bB][01]\+\>/ nextgroup=@javascriptSymbols skipwhite skipempty -syntax match   javascriptNumber                /\<0[oO][0-7]\+\>/ nextgroup=@javascriptSymbols skipwhite skipempty -syntax match   javascriptNumber                /\<0[xX][0-9a-fA-F]\+\>/ nextgroup=@javascriptSymbols skipwhite skipempty -syntax match   javascriptNumber                /[+-]\=\%(\d\+\.\d\+\|\d\+\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ nextgroup=@javascriptSymbols skipwhite skipempty - -syntax cluster javascriptTypes                 contains=javascriptString,javascriptTemplate,javascriptRegexpString,javascriptNumber,javascriptBoolean,javascriptNull,javascriptArray -syntax cluster javascriptValue                 contains=@javascriptTypes,@javascriptExpression,javascriptFuncKeyword,javascriptClassKeyword,javascriptObjectLiteral,javascriptIdentifier,javascriptIdentifierName,javascriptOperator,@javascriptSymbols - -syntax match   javascriptLabel                 /[a-zA-Z_$]\k*\_s*:/he=e-1 nextgroup=@javascriptValue,@javascriptStatement skipwhite skipempty -syntax match   javascriptObjectLabel           contained /\k\+\_s*:/he=e-1 contains=javascriptObjectLabelColon nextgroup=@javascriptValue,@javascriptStatement skipwhite skipempty -syntax match   javascriptObjectLabelColon      contained /:/ nextgroup=@javascriptValue,@javascriptStatement skipwhite skipempty -" syntax match   javascriptPropertyName          contained /"[^"]\+"\s*:/he=e-1 nextgroup=@javascriptValue skipwhite skipempty -" syntax match   javascriptPropertyName          contained /'[^']\+'\s*:/he=e-1 nextgroup=@javascriptValue skipwhite skipempty -syntax region  javascriptPropertyName          contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/ nextgroup=javascriptObjectLabelColon skipwhite skipempty -syntax region  javascriptComputedPropertyName  contained matchgroup=javascriptPropertyName start=/\[/rs=s+1 end=/]/ contains=@javascriptValue nextgroup=javascriptObjectLabelColon skipwhite skipempty -syntax region  javascriptComputedProperty      contained matchgroup=javascriptProperty start=/\[/rs=s+1 end=/]/ contains=@javascriptValue,@javascriptSymbols nextgroup=@javascriptAfterIdentifier skipwhite skipempty -" Value for object, statement for label statement - -syntax cluster javascriptTemplates             contains=javascriptTemplate,javascriptTemplateSubstitution,javascriptTemplateSBlock,javascriptTemplateSString,javascriptTemplateSStringRB,javascriptTemplateSB -syntax cluster javascriptStrings               contains=javascriptProp,javascriptString,@javascriptTemplates,@javascriptComments,javascriptDocComment,javascriptRegexpString,javascriptPropertyName - -"this - -"JavaScript Prototype -syntax keyword javascriptPrototype             prototype - -"Program Keywords -syntax keyword javascriptIdentifier            arguments this nextgroup=@javascriptAfterIdentifier -syntax keyword javascriptVariable              let var const -syntax keyword javascriptOperator              delete new instanceof typeof void in nextgroup=@javascriptValue,@javascriptTypes skipwhite skipempty -syntax keyword javascriptForOperator           contained in of -syntax keyword javascriptBoolean               true false nextgroup=@javascriptSymbols skipwhite skipempty -syntax keyword javascriptNull                  null undefined nextgroup=@javascriptSymbols skipwhite skipempty -syntax keyword javascriptMessage               alert confirm prompt status -syntax keyword javascriptGlobal                self top parent - -"Statement Keywords -syntax keyword javascriptConditional           if else switch -syntax keyword javascriptConditionalElse       else -syntax keyword javascriptRepeat                do while for nextgroup=javascriptLoopParen skipwhite skipempty -syntax keyword javascriptBranch                break continue -syntax keyword javascriptCase                  case nextgroup=@javascriptTypes skipwhite -syntax keyword javascriptDefault               default -syntax keyword javascriptStatementKeyword      return with yield -syntax keyword javascriptReturn                return nextgroup=@javascriptValue skipwhite -syntax keyword javascriptYield                 yield - -syntax keyword javascriptTry                   try -syntax keyword javascriptExceptions            catch throw finally -syntax keyword javascriptDebugger              debugger - -syntax match   javascriptProp                  contained /[a-zA-Z_$][a-zA-Z0-9_$]*/ contains=@props,@_semantic transparent nextgroup=@javascriptAfterIdentifier -syntax match   javascriptMethod                contained /[a-zA-Z_$][a-zA-Z0-9_$]*\ze(/ contains=@props transparent nextgroup=javascriptFuncCallArg -syntax match   javascriptDotNotation           /\./ nextgroup=javascriptProp,javascriptMethod -syntax match   javascriptDotStyleNotation      /\.style\./ nextgroup=javascriptDOMStyle transparent - -runtime syntax/yajs/javascript.vim -runtime syntax/yajs/es6-number.vim -runtime syntax/yajs/es6-string.vim -runtime syntax/yajs/es6-array.vim -runtime syntax/yajs/es6-object.vim -runtime syntax/yajs/es6-symbol.vim -runtime syntax/yajs/es6-function.vim -runtime syntax/yajs/es6-math.vim -runtime syntax/yajs/es6-date.vim -runtime syntax/yajs/es6-json.vim -runtime syntax/yajs/es6-regexp.vim -runtime syntax/yajs/es6-map.vim -runtime syntax/yajs/es6-set.vim -runtime syntax/yajs/es6-proxy.vim -runtime syntax/yajs/es6-promise.vim -runtime syntax/yajs/node.vim -runtime syntax/yajs/web.vim - -let javascript_props = 1 - -runtime syntax/yajs/event.vim -syntax region  javascriptEventString           contained start=/\z(["']\)/  skip=/\\\\\|\\\z1\|\\\n/  end=/\z1\|$/ contains=javascriptASCII,@events - -"Import -syntax region  javascriptImportDef             start=/import/ end=/;\|\n/ contains=javascriptImport,javascriptString,javascriptEndColons -syntax keyword javascriptImport                contained from as import -syntax keyword javascriptExport                export module - -syntax region  javascriptBlock                 matchgroup=javascriptBraces start=/\([\^:]\s\*\)\=\zs{/ end=/}/ contains=@htmlJavaScript - -syntax region  javascriptMethodDef             contained start=/\(\(\(set\|get\)\_s\+\)\?\)[a-zA-Z_$]\k*\_s*(/ end=/)/ contains=javascriptMethodAccessor,javascriptMethodName,javascriptFuncArg nextgroup=javascriptBlock skipwhite keepend -syntax region  javascriptMethodArgs            contained start=/(/ end=/)/ contains=javascriptFuncArg,@javascriptComments nextgroup=javascriptBlock skipwhite keepend -syntax match   javascriptMethodName            contained /[a-zA-Z_$]\k*/ nextgroup=javascriptMethodArgs skipwhite skipempty -syntax match   javascriptMethodAccessor        contained /\(set\|get\)\s\+\ze\k/ contains=javascriptMethodAccessorWords -syntax keyword javascriptMethodAccessorWords   contained get set -syntax region  javascriptMethodName            contained matchgroup=javascriptPropertyName start=/\[/ end=/]/ contains=@javascriptValue nextgroup=javascriptMethodArgs skipwhite skipempty - -syntax keyword javascriptAsyncFuncKeyword      async await -" syntax keyword javascriptFuncKeyword           function nextgroup=javascriptFuncName,javascriptFuncArg skipwhite -syntax keyword javascriptFuncKeyword           function nextgroup=javascriptAsyncFunc,javascriptSyncFunc -syntax match   javascriptSyncFunc              contained // nextgroup=javascriptFuncName,javascriptFuncArg skipwhite skipempty -syntax match   javascriptAsyncFunc             contained /\s*\*\s*/ nextgroup=javascriptFuncName,javascriptFuncArg skipwhite skipempty -syntax match   javascriptFuncName              contained /[a-zA-Z_$]\k*/ nextgroup=javascriptFuncArg skipwhite -syntax match   javascriptFuncArg               contained /(\_[^()]*)/ contains=javascriptParens,javascriptFuncKeyword,javascriptFuncComma nextgroup=javascriptBlock skipwhite skipwhite skipempty -syntax match   javascriptFuncComma             contained /,/ - - -"Class -syntax keyword javascriptClassKeyword          class nextgroup=javascriptClassName skipwhite -syntax keyword javascriptClassSuper            super -syntax match   javascriptClassName             contained /\k\+/ nextgroup=javascriptClassBlock,javascriptClassExtends skipwhite -syntax match   javascriptClassSuperName        contained /[a-zA-Z_$][a-zA-Z_$\[\]\.]*/ nextgroup=javascriptClassBlock skipwhite -syntax keyword javascriptClassExtends          contained extends nextgroup=javascriptClassSuperName skipwhite -syntax region  javascriptClassBlock            contained matchgroup=javascriptBraces start=/{/ end=/}/ contains=javascriptMethodName,javascriptMethodAccessor,javascriptClassStatic,@javascriptComments -syntax keyword javascriptClassStatic           contained static nextgroup=javascriptMethodName,javascriptMethodAccessor skipwhite - - -syntax keyword javascriptForComprehension      contained for nextgroup=javascriptForComprehensionTail skipwhite skipempty -syntax region  javascriptForComprehensionTail  contained matchgroup=javascriptParens start=/(/ end=/)/ contains=javascriptOfComprehension,@javascriptExpression nextgroup=javascriptForComprehension,javascriptIfComprehension,@javascriptExpression skipwhite skipempty -syntax keyword javascriptOfComprehension       contained of -syntax keyword javascriptIfComprehension       contained if nextgroup=javascriptIfComprehensionTail -syntax region  javascriptIfComprehensionTail   contained matchgroup=javascriptParens start=/(/ end=/)/ contains=javascriptExpression nextgroup=javascriptForComprehension,javascriptIfComprehension skipwhite skipempty - -syntax region  javascriptObjectLiteral         contained matchgroup=javascriptBraces start=/{/ end=/}/ contains=@javascriptComments,javascriptObjectLabel,javascriptPropertyName,javascriptMethodDef,javascriptComputedPropertyName,@javascriptValue - -" syntax match   javascriptBraces                /[\[\]]/ -syntax match   javascriptParens                /[()]/ -" syntax match   javascriptOpSymbols             /[^+\-*/%\^=!<>&|?]\@<=\(<\|>\|<=\|>=\|==\|!=\|===\|!==\|+\|-\|*\|%\|++\|--\|<<\|>>\|>>>\|&\||\|^\|!\|\~\|&&\|||\|?\|=\|+=\|-=\|*=\|%=\|<<=\|>>=\|>>>=\|&=\||=\|^=\|\/\|\/=\)\ze\_[^+\-*/%\^=!<>&|?]/ nextgroup=@javascriptExpression skipwhite -" syntax match   javascriptInvalidOp            contained /[+\-*/%\^=!<>&|?:]\+/  -syntax match   javascriptOpSymbol              contained /\(<\|>\|<=\|>=\|==\|!=\|===\|!==\|+\|*\|%\|++\|--\|<<\|>>\|>>>\|&\||\|^\|!\|\~\|&&\|||\|?\|=\|+=\|-=\|*=\|%=\|<<=\|>>=\|>>>=\|&=\||=\|^=\|\/\|\/=\)\ze\_[^+\-*/%\^=!<>&|?:]/ nextgroup=javascriptInvalidOp skipwhite skipempty -syn region  htmlScriptTag     contained start=+<script+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent -syntax match   javascriptWOpSymbols            contained /\_s\+/ nextgroup=javascriptOpSymbols -syntax match   javascriptEndColons             /[;,]/ -syntax match   javascriptLogicSymbols          /[^&|]\@<=\(&&\|||\)\ze\_[^&|]/ nextgroup=@javascriptExpression skipwhite skipempty -syntax cluster javascriptSymbols               contains=javascriptOpSymbols,javascriptLogicSymbols -syntax match   javascriptWSymbols              contained /\_s\+/ nextgroup=@javascriptSymbols - -syntax region  javascriptRegexpString          start="\(^\|&\||\|=\|(\|{\|;\|:\|\[\|!\)\@<=\_s*/[^/*]"me=e-1 skip="\\\\\|[^\\]\@<=\\/" end="/[gimy]\{0,2\}" oneline - -syntax cluster javascriptEventTypes            contains=javascriptEventString,javascriptTemplate,javascriptNumber,javascriptBoolean,javascriptNull -syntax cluster javascriptOps                   contains=javascriptOpSymbols,javascriptLogicSymbols,javascriptOperator -syntax region  javascriptParenExp              matchgroup=javascriptParens start=/(/ end=/)/ contains=@javascriptExpression nextgroup=@javascriptSymbols skipwhite skipempty -syntax cluster javascriptExpression            contains=javascriptArrowFuncDef,javascriptParenExp,@javascriptValue,javascriptObjectLiteral,javascriptFuncKeyword,javascriptYield,javascriptIdentifierName,javascriptRegexpString,@javascriptTypes,@javascriptOps,javascriptGlobal,jsxRegion -syntax cluster javascriptEventExpression       contains=javascriptArrowFuncDef,javascriptParenExp,@javascriptValue,javascriptObjectLiteral,javascriptFuncKeyword,javascriptIdentifierName,javascriptRegexpString,@javascriptEventTypes,@javascriptOps,javascriptGlobal,jsxRegion - -syntax region  javascriptLoopParen             contained matchgroup=javascriptParens start=/(/ end=/)/ contains=javascriptVariable,javascriptForOperator,javascriptEndColons,@javascriptExpression nextgroup=javascriptBlock skipwhite skipempty - -" syntax match   javascriptFuncCall              contained /[a-zA-Z]\k*\ze(/ nextgroup=javascriptFuncCallArg -syntax region  javascriptFuncCallArg           contained matchgroup=javascriptParens start=/(/ end=/)/ contains=@javascriptExpression,@javascriptComments nextgroup=@javascriptAfterIdentifier -syntax cluster javascriptSymbols               contains=javascriptOpSymbols,javascriptLogicSymbols -syntax match   javascriptWSymbols              contained /\_s\+/ nextgroup=@javascriptSymbols -syntax region  javascriptEventFuncCallArg      contained matchgroup=javascriptParens start=/(/ end=/)/ contains=@javascriptEventExpression,@javascriptComments - -syntax match   javascriptArrowFuncDef          contained /([^)]*)\_s*=>/ contains=javascriptFuncArg,javascriptArrowFunc nextgroup=javascriptBlock skipwhite skipempty -syntax match   javascriptArrowFuncDef          contained /[a-zA-Z_$][a-zA-Z0-9_$]*\_s*=>/ contains=javascriptArrowFuncArg,javascriptArrowFunc nextgroup=javascriptBlock skipwhite skipempty -syntax match   javascriptArrowFunc             /=>/ -syntax match   javascriptArrowFuncArg          contained /[a-zA-Z_$]\k*/ - -runtime syntax/semhl.vim - -if exists("did_javascript_hilink") -  HiLink javascriptEndColons            Exception -  HiLink javascriptOpSymbols            Normal -  HiLink javascriptLogicSymbols         Boolean -  HiLink javascriptBraces               Function -  HiLink javascriptParens               Normal -  HiLink javascriptComment              Comment -  HiLink javascriptLineComment          Comment -  HiLink javascriptDocComment           Comment -  HiLink javascriptCommentTodo          Todo -  HiLink javascriptDocNotation          SpecialComment -  HiLink javascriptDocTags              SpecialComment -  HiLink javascriptDocNGParam           javascriptDocParam -  HiLink javascriptDocParam             Function -  HiLink javascriptDocNumParam          Function -  HiLink javascriptDocEventRef          Function -  HiLink javascriptDocNamedParamType    Type -  HiLink javascriptDocParamName         Type -  HiLink javascriptDocParamType         Type -  HiLink javascriptString               String -  HiLink javascriptTemplate             String -  HiLink javascriptEventString          String -  HiLink javascriptASCII                Label -  HiLink javascriptTemplateSubstitution Label -  " HiLink javascriptTemplateSBlock       Label -  " HiLink javascriptTemplateSString      Label -  HiLink javascriptTemplateSStringRB    javascriptTemplateSubstitution -  HiLink javascriptTemplateSB           javascriptTemplateSubstitution -  HiLink javascriptRegexpString         String -  HiLink javascriptGlobal               Constant -  HiLink javascriptCharacter            Character -  HiLink javascriptPrototype            Type -  HiLink javascriptConditional          Conditional -  HiLink javascriptConditionalElse      Conditional -  HiLink javascriptCase                 Conditional -  HiLink javascriptDefault              javascriptCase -  HiLink javascriptBranch               Conditional -  HiLink javascriptIdentifier           Structure -  HiLink javascriptVariable             Identifier -  HiLink javascriptRepeat               Repeat -  HiLink javascriptForComprehension     Repeat -  HiLink javascriptIfComprehension      Repeat -  HiLink javascriptOfComprehension      Repeat -  HiLink javascriptForOperator          Repeat -  HiLink javascriptStatementKeyword     Statement -  HiLink javascriptReturn               Statement -  HiLink javascriptYield                Statement -  HiLink javascriptMessage              Keyword -  HiLink javascriptOperator             Identifier -  " HiLink javascriptType                 Type -  HiLink javascriptNull                 Boolean -  HiLink javascriptNumber               Number -  HiLink javascriptBoolean              Boolean -  HiLink javascriptObjectLabel          javascriptLabel -  HiLink javascriptLabel                Label -  HiLink javascriptPropertyName         Label -  HiLink javascriptImport               Special -  HiLink javascriptExport               Special -  HiLink javascriptTry                  Special -  HiLink javascriptExceptions           Special - -  HiLink javascriptMethodName           Function -  HiLink javascriptMethodAccessor       Operator - -  HiLink javascriptAsyncFuncKeyword     Keyword -  HiLink javascriptFuncKeyword          Keyword -  HiLink javascriptAsyncFunc            Keyword -  HiLink javascriptArrowFunc            Type -  HiLink javascriptFuncName             Function -  HiLink javascriptFuncArg              Special -  HiLink javascriptArrowFuncArg         javascriptFuncArg -  HiLink javascriptFuncComma            Operator - -  HiLink javascriptClassKeyword         Keyword -  HiLink javascriptClassExtends         Keyword -  HiLink javascriptClassName            Function -  HiLink javascriptClassSuperName       Function -  HiLink javascriptClassStatic          StorageClass -  HiLink javascriptClassSuper           keyword - -  HiLink shellbang                      Comment - -  highlight link javaScript             NONE - -  delcommand HiLink -  unlet did_javascript_hilink -endif +" Vim's default html.vim highlights all javascript as 'Special' +hi! def link javaScript              NONE  let b:current_syntax = "javascript"  if main_syntax == 'javascript'    unlet main_syntax  endif -  endif diff --git a/syntax/semhl.vim b/syntax/semhl.vim deleted file mode 100644 index 39df1258..00000000 --- a/syntax/semhl.vim +++ /dev/null @@ -1,8 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   - -" syntax match   javascriptIdentifierName        /\<[^=<>!?+\-*\/%|&,;:. ~@#`"'\[\]\(\)\{\}\^0-9][^=<>!?+\-*\/%|&,;:. ~@#`"'\[\]\(\)\{\}\^]*/ nextgroup=javascriptDotNotation,javascriptFuncCallArg,javascriptComputedProperty,javascriptWSymbols contains=@_smantic - -syntax cluster _semantic contains=_semantic0,_semantic1,_semantic2,_semantic3,_semantic4,_semantic5,_semantic6,_semantic7,_semantic8,_semantic9,_semantic10,_semantic11,_semantic12,_semantic13,_semantic14,_semantic15,_semantic16,_semantic17,_semantic18,_semantic19,_semantic20,_semantic21,_semantic22,_semantic23,_semantic24,_semantic25 - -endif diff --git a/syntax/yajs/ecma-402.vim b/syntax/yajs/ecma-402.vim deleted file mode 100644 index 1eefd610..00000000 --- a/syntax/yajs/ecma-402.vim +++ /dev/null @@ -1,5 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Intl - -endif diff --git a/syntax/yajs/es6-array.vim b/syntax/yajs/es6-array.vim deleted file mode 100644 index 6f12de82..00000000 --- a/syntax/yajs/es6-array.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Array nextgroup=javascriptGlobalArrayDot,javascriptFuncCallArg -syntax match   javascriptGlobalArrayDot /\./ contained nextgroup=javascriptArrayStaticMethod - -endif diff --git a/syntax/yajs/es6-date.vim b/syntax/yajs/es6-date.vim deleted file mode 100644 index 4d5a101a..00000000 --- a/syntax/yajs/es6-date.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Date nextgroup=javascriptGlobalDateDot,javascriptFuncCallArg -syntax match   javascriptGlobalDateDot /\./ contained nextgroup=javascriptDateStaticMethod - -endif diff --git a/syntax/yajs/es6-function.vim b/syntax/yajs/es6-function.vim deleted file mode 100644 index d0a54d2f..00000000 --- a/syntax/yajs/es6-function.vim +++ /dev/null @@ -1,5 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Function - -endif diff --git a/syntax/yajs/es6-json.vim b/syntax/yajs/es6-json.vim deleted file mode 100644 index 920c7386..00000000 --- a/syntax/yajs/es6-json.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal JSON nextgroup=javascriptGlobalJSONDot,javascriptFuncCallArg -syntax match   javascriptGlobalJSONDot /\./ contained nextgroup=javascriptJSONStaticMethod - -endif diff --git a/syntax/yajs/es6-map.vim b/syntax/yajs/es6-map.vim deleted file mode 100644 index e4fa7420..00000000 --- a/syntax/yajs/es6-map.vim +++ /dev/null @@ -1,5 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Map WeakMap - -endif diff --git a/syntax/yajs/es6-math.vim b/syntax/yajs/es6-math.vim deleted file mode 100644 index 689e2299..00000000 --- a/syntax/yajs/es6-math.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Math nextgroup=javascriptGlobalMathDot,javascriptFuncCallArg -syntax match   javascriptGlobalMathDot /\./ contained nextgroup=javascriptMathStaticProp,javascriptMathStaticMethod - -endif diff --git a/syntax/yajs/es6-number.vim b/syntax/yajs/es6-number.vim deleted file mode 100644 index a4db2410..00000000 --- a/syntax/yajs/es6-number.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Number nextgroup=javascriptGlobalNumberDot,javascriptFuncCallArg -syntax match   javascriptGlobalNumberDot /\./ contained nextgroup=javascriptNumberStaticProp,javascriptNumberStaticMethod - -endif diff --git a/syntax/yajs/es6-object.vim b/syntax/yajs/es6-object.vim deleted file mode 100644 index f887ab09..00000000 --- a/syntax/yajs/es6-object.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Object nextgroup=javascriptGlobalObjectDot,javascriptFuncCallArg -syntax match   javascriptGlobalObjectDot /\./ contained nextgroup=javascriptObjectStaticMethod - -endif diff --git a/syntax/yajs/es6-promise.vim b/syntax/yajs/es6-promise.vim deleted file mode 100644 index be94a4c6..00000000 --- a/syntax/yajs/es6-promise.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Promise nextgroup=javascriptGlobalPromiseDot,javascriptFuncCallArg -syntax match   javascriptGlobalPromiseDot /\./ contained nextgroup=javascriptPromiseStaticMethod - -endif diff --git a/syntax/yajs/es6-proxy.vim b/syntax/yajs/es6-proxy.vim deleted file mode 100644 index 12ad295f..00000000 --- a/syntax/yajs/es6-proxy.vim +++ /dev/null @@ -1,5 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Proxy - -endif diff --git a/syntax/yajs/es6-regexp.vim b/syntax/yajs/es6-regexp.vim deleted file mode 100644 index dec47f4b..00000000 --- a/syntax/yajs/es6-regexp.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal RegExp nextgroup=javascriptGlobalRegExpDot,javascriptFuncCallArg -syntax match   javascriptGlobalRegExpDot /\./ contained nextgroup=javascriptRegExpStaticProp - -endif diff --git a/syntax/yajs/es6-set.vim b/syntax/yajs/es6-set.vim deleted file mode 100644 index 19c01a76..00000000 --- a/syntax/yajs/es6-set.vim +++ /dev/null @@ -1,5 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Set WeakSet - -endif diff --git a/syntax/yajs/es6-string.vim b/syntax/yajs/es6-string.vim deleted file mode 100644 index 3c956422..00000000 --- a/syntax/yajs/es6-string.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal String nextgroup=javascriptGlobalStringDot,javascriptFuncCallArg -syntax match   javascriptGlobalStringDot /\./ contained nextgroup=javascriptStringStaticMethod - -endif diff --git a/syntax/yajs/es6-symbol.vim b/syntax/yajs/es6-symbol.vim deleted file mode 100644 index ab7dbca0..00000000 --- a/syntax/yajs/es6-symbol.vim +++ /dev/null @@ -1,6 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Symbol nextgroup=javascriptGlobalSymbolDot,javascriptFuncCallArg -syntax match   javascriptGlobalSymbolDot /\./ contained nextgroup=javascriptSymbolStaticProp,javascriptSymbolStaticMethod - -endif diff --git a/syntax/yajs/event.vim b/syntax/yajs/event.vim deleted file mode 100644 index af40b194..00000000 --- a/syntax/yajs/event.vim +++ /dev/null @@ -1,4 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   - -endif diff --git a/syntax/yajs/javascript.vim b/syntax/yajs/javascript.vim deleted file mode 100644 index a854b9ea..00000000 --- a/syntax/yajs/javascript.vim +++ /dev/null @@ -1,17 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptGlobal Function Boolean Error EvalError InternalError RangeError -syntax keyword javascriptGlobal ReferenceError StopIteration SyntaxError TypeError -syntax keyword javascriptGlobal URIError Date Float32Array Float64Array Int16Array -syntax keyword javascriptGlobal Int32Array Int8Array Uint16Array Uint32Array Uint8Array -syntax keyword javascriptGlobal Uint8ClampedArray ParallelArray ArrayBuffer DataView -syntax keyword javascriptGlobal Iterator Generator Reflect Proxy arguments -if exists("did_javascript_hilink") | HiLink javascriptGlobal Structure -endif -syntax keyword javascriptGlobalMethod eval uneval isFinite isNaN parseFloat parseInt nextgroup=javascriptFuncCallArg -syntax keyword javascriptGlobalMethod decodeURI decodeURIComponent encodeURI encodeURIComponent nextgroup=javascriptFuncCallArg -syntax cluster props add=javascriptGlobalMethod -if exists("did_javascript_hilink") | HiLink javascriptGlobalMethod Structure -endif - -endif diff --git a/syntax/yajs/node.vim b/syntax/yajs/node.vim deleted file mode 100644 index 4d68691e..00000000 --- a/syntax/yajs/node.vim +++ /dev/null @@ -1,8 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1 -   -syntax keyword javascriptNodeGlobal global process console Buffer module exports setTimeout -syntax keyword javascriptNodeGlobal clearTimeout setInterval clearInterval -if exists("did_javascript_hilink") | HiLink javascriptNodeGlobal Structure -endif - -endif | 
