diff options
| -rw-r--r-- | syntax/javascript.vim | 58 | 
1 files changed, 33 insertions, 25 deletions
| diff --git a/syntax/javascript.vim b/syntax/javascript.vim index e72c63a4..7d27707e 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -55,15 +55,15 @@ if !exists("javascript_ignore_javaScriptdoc")    syntax region jsDocComment      matchgroup=jsComment start="/\*\*\s*"  end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold    " tags containing a param -  syntax match  jsDocTags         contained "@\(alias\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|mixes\|module\|name\|namespace\|requires\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite +  syntax match  jsDocTags         contained "@\(alias\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite    " tags containing type and param    syntax match  jsDocTags         contained "@\(arg\|argument\|param\|property\)\>" nextgroup=jsDocType skipwhite    " tags containing type but no param    syntax match  jsDocTags         contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\)\>" nextgroup=jsDocTypeNoParam skipwhite    " tags containing references -  syntax match  jsDocTags         contained "@\(lends\|see\)\>" nextgroup=jsDocSeeTag skipwhite +  syntax match  jsDocTags         contained "@\(lends\|see\|tutorial\)\>" nextgroup=jsDocSeeTag skipwhite    " other tags (no extra syntax) -  syntax match  jsDocTags         contained "@\(abstract\|access\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|fileOverview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>" +  syntax match  jsDocTags         contained "@\(abstract\|access\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|file[oO]verview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>"    syntax region jsDocType         start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite    syntax match  jsDocType         contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite @@ -79,39 +79,40 @@ 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]|.)" -syntax region  jsStringD         start=+"+  skip=+\\\\\|\\$"+  end=+"+  contains=jsSpecial,@htmlPreproc -syntax region  jsStringS         start=+'+  skip=+\\\\\|\\$'+  end=+'+  contains=jsSpecial,@htmlPreproc -syntax region  jsRegexpCharClass start=+\[+ end=+\]+ contained +syntax match   jsSpecial         "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" contained +syntax match   jsTemplateVar     "\${.\{-}}" contained +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  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=jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod +syntax cluster jsRegexpSpecial   contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod  syntax region  jsRegexpGroup     start="\\\@<!(" end="\\\@<!)" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend -syntax region  jsRegexpString    start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\\\\|\\/+ end=+/[gimy]\{,4}+ contains=jsSpecial,jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend +syntax region  jsRegexpString    start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend  syntax match   jsNumber          /\<-\=\d\+L\=\>\|\<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 +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 -"" JavaScript Prototype -syntax keyword jsPrototype      prototype -  if g:javascript_conceal == 1    syntax keyword jsNull           null conceal cchar=ø    syntax keyword jsThis           this conceal cchar=@    syntax keyword jsReturn         return conceal cchar=⇚    syntax keyword jsUndefined      undefined conceal cchar=¿    syntax keyword jsNan            NaN conceal cchar=ℕ +  syntax keyword jsPrototype      prototype conceal cchar=¶  else    syntax keyword jsNull           null    syntax keyword jsThis           this    syntax keyword jsReturn         return    syntax keyword jsUndefined      undefined    syntax keyword jsNan            NaN +  syntax keyword jsPrototype      prototype  endif  "" Statement Keywords @@ -133,18 +134,18 @@ syntax keyword jsFutureKeys     abstract enum int short boolean export interface  "" 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 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 +" 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 +" 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 @@ -181,7 +182,7 @@ endif "DOM/HTML/CSS  "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise  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,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold @@ -208,10 +209,13 @@ else  endif  syntax match   jsFuncName       contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=jsFuncArgs skipwhite -syntax region  jsFuncArgs       contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas nextgroup=jsFuncBlock keepend skipwhite skipempty +syntax region  jsFuncArgs       contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest nextgroup=jsFuncBlock keepend skipwhite skipempty  syntax match   jsFuncArgCommas  contained ',' +syntax match   jsFuncArgRest    contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/  syntax keyword jsArgsObj        arguments contained containedin=jsFuncBlock +syntax match jsArrowFunction /=>/ +  " 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 @@ -222,6 +226,7 @@ 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 @@ -235,6 +240,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")    HiLink jsDocParam             Label    HiLink jsStringS              String    HiLink jsStringD              String +  HiLink jsTemplateString       String    HiLink jsTernaryIfOperator    Conditional    HiLink jsRegexpString         String    HiLink jsRegexpBoundary       SpecialChar @@ -254,6 +260,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")    HiLink jsStatement            Statement    HiLink jsException            Exception    HiLink jsKeyword              Keyword +  HiLink jsArrowFunction        Type    HiLink jsFunction             Type    HiLink jsFuncName             Function    HiLink jsArgsObj              Special @@ -279,6 +286,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")    HiLink jsFuncBraces           Noise    HiLink jsFuncParens           Noise    HiLink jsSpecial              Special +  HiLink jsTemplateVar          Special    HiLink jsGlobalObjects        Special    HiLink jsExceptions           Special    HiLink jsFutureKeys           Special | 
