@@ -55,15 +55,15 @@ if !exists("javascript_ignore_javaScriptdoc")
5555 syntax region jsDocComment matchgroup =jsComment start =" /\*\*\s *" end =" \* /" contains =jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
5656
5757 " tags containing a param
58- 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
58+ 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
5959 " tags containing type and param
6060 syntax match jsDocTags contained " @\( arg\| argument\| param\| property\)\> " nextgroup =jsDocType skipwhite
6161 " tags containing type but no param
6262 syntax match jsDocTags contained " @\( callback\| enum\| external\| this\| type\| typedef\| return\| returns\)\> " nextgroup =jsDocTypeNoParam skipwhite
6363 " tags containing references
64- syntax match jsDocTags contained " @\( lends\| see\)\> " nextgroup =jsDocSeeTag skipwhite
64+ syntax match jsDocTags contained " @\( lends\| see\| tutorial \ )\>" nextgroup =jsDocSeeTag skipwhite
6565 " other tags (no extra syntax)
66- 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\)\> "
66+ 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\)\> "
6767
6868 syntax region jsDocType start =" {" end =" }" oneline contained nextgroup =jsDocParam skipwhite
6969 syntax match jsDocType contained " \% (#\|\"\|\w\|\.\| :\|\/\)\+ " nextgroup =jsDocParam skipwhite
@@ -79,39 +79,40 @@ syntax case match
7979
8080" " Syntax in the JavaScript code
8181syntax match jsFuncCall / \k\+\% (\s *(\)\@ =/
82- syntax match jsSpecial " \v\\ %(0|\\ x\x\{ 2\}\|\\ u\x\{ 4\}\|\c [A-Z]|.)"
83- syntax region jsStringD start =+ "+ skip =+ \\\\\|\\ $"+ end =+ "+ contains =jsSpecial,@htmlPreproc
84- syntax region jsStringS start =+ '+ skip =+ \\\\\|\\ $'+ end =+ '+ contains =jsSpecial,@htmlPreproc
85- syntax region jsRegexpCharClass start =+ \[ + end =+ \] + contained
82+ syntax match jsSpecial " \v\\ %(0|\\ x\x\{ 2\}\|\\ u\x\{ 4\}\|\c [A-Z]|.)" contained
83+ syntax match jsTemplateVar " \$ {.\{ -}}" contained
84+ syntax region jsStringD start =+ "+ skip =+ \\\\\|\\ $"+ end =+ "+ contains =jsSpecial,@htmlPreproc,@Spell
85+ syntax region jsStringS start =+ '+ skip =+ \\\\\|\\ $'+ end =+ '+ contains =jsSpecial,@htmlPreproc,@Spell
86+ syntax region jsTemplateString start =+ `+ skip =+ \\\\\|\\ $`+ end =+ `+ contains =jsTemplateVar,jsSpecial,@htmlPreproc
87+ syntax region jsRegexpCharClass start =+ \[ + skip =+ \\ .+ end =+ \] + contained
8688syntax match jsRegexpBoundary " \v %(\< @![\^ $]|\\ [bB])" contained
8789syntax match jsRegexpBackRef " \v\\ [1-9][0-9]*" contained
8890syntax match jsRegexpQuantifier " \v\\ @<!%([?*+]|\{\d +%(,|,\d +)?})\? ?" contained
8991syntax match jsRegexpOr " \v\< @!\| " contained
9092syntax match jsRegexpMod " \v\( @<=\? [:=!>]" contained
91- syntax cluster jsRegexpSpecial contains =jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
93+ syntax cluster jsRegexpSpecial contains =jsSpecial, jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
9294syntax region jsRegexpGroup start =" \\\@ <!(" end =" \\\@ <!)" contained contains =jsRegexpCharClass,@jsRegexpSpecial keepend
93- syntax region jsRegexpString start =+ \(\(\( return\| case\)\s\+\)\@ <=\|\(\( [)\] "']\|\d\|\w\)\s *\)\@ <!\) /\(\*\| /\)\@ !+ skip =+ \\\\\|\\ / + end =+ /[gimy]\{ ,4}+ contains =jsSpecial, jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
95+ syntax region jsRegexpString start =+ \(\(\( return\| case\)\s\+\)\@ <=\|\(\( [)\] "']\|\d\|\w\)\s *\)\@ <!\) /\(\*\| /\)\@ !+ skip =+ \\ . \|\[\(\\ . \| [^]] \) * \] + end =+ /[gimy]\{ ,4}+ contains =jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
9496syntax match jsNumber / \< -\=\d\+ L\=\>\|\< 0[xX]\x\+\> /
9597syntax keyword jsNumber Infinity
9698syntax match jsFloat / \< -\=\% (\d\+\.\d\+\|\d\+\.\|\.\d\+\)\% ([eE][+-]\=\d\+\)\=\> /
97- syntax match jsObjectKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\(\s *:\)\@ =/ contains =jsFunctionKey
99+ syntax match jsObjectKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\(\s *:\)\@ =/ contains =jsFunctionKey contained
98100syntax match jsFunctionKey / \< [a-zA-Z_$][0-9a-zA-Z_$]*\(\s *:\s *function\s *\)\@ =/ contained
99101
100- " " JavaScript Prototype
101- syntax keyword jsPrototype prototype
102-
103102if g: javascript_conceal == 1
104103 syntax keyword jsNull null conceal cchar =ø
105104 syntax keyword jsThis this conceal cchar =@
106105 syntax keyword jsReturn return conceal cchar =⇚
107106 syntax keyword jsUndefined undefined conceal cchar =¿
108107 syntax keyword jsNan NaN conceal cchar =ℕ
108+ syntax keyword jsPrototype prototype conceal cchar =¶
109109else
110110 syntax keyword jsNull null
111111 syntax keyword jsThis this
112112 syntax keyword jsReturn return
113113 syntax keyword jsUndefined undefined
114114 syntax keyword jsNan NaN
115+ syntax keyword jsPrototype prototype
115116endif
116117
117118" " Statement Keywords
@@ -133,18 +134,18 @@ syntax keyword jsFutureKeys abstract enum int short boolean export interface
133134
134135" " DOM/HTML/CSS specified things
135136
136- " DOM2 Objects
137- syntax keyword jsGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction
138- syntax keyword jsExceptions DOMException
137+ " DOM2 Objects
138+ syntax keyword jsGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction
139+ syntax keyword jsExceptions DOMException
139140
140- " DOM2 CONSTANT
141- 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
142- 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
141+ " DOM2 CONSTANT
142+ 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
143+ 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
143144
144- " HTML events and internal variables
145- syntax case ignore
146- syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
147- syntax case match
145+ " HTML events and internal variables
146+ syntax case ignore
147+ syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
148+ syntax case match
148149
149150" Follow stuff should be highligh within a special context
150151" While it can't be handled with context depended with Regex based highlight
@@ -181,7 +182,7 @@ endif "DOM/HTML/CSS
181182
182183
183184" " Code blocks
184- 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
185+ 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
185186syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
186187syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
187188syntax region jsParen matchgroup =jsParens start =" (" end =" )" contains =@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
@@ -208,10 +209,13 @@ else
208209endif
209210
210211syntax match jsFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup =jsFuncArgs skipwhite
211- syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas nextgroup =jsFuncBlock keepend skipwhite skipempty
212+ syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas,jsFuncArgRest nextgroup =jsFuncBlock keepend skipwhite skipempty
212213syntax match jsFuncArgCommas contained ' ,'
214+ syntax match jsFuncArgRest contained / \% (\.\.\. [a-zA-Z_$][0-9a-zA-Z_$]*\) )/
213215syntax keyword jsArgsObj arguments contained containedin =jsFuncBlock
214216
217+ syntax match jsArrowFunction / =>/
218+
215219" Define the default highlighting.
216220" For version 5.7 and earlier: only when not done already
217221" 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")
222226 else
223227 command -nargs =+ HiLink hi def link <args>
224228 endif
229+ HiLink jsFuncArgRest Special
225230 HiLink jsComment Comment
226231 HiLink jsLineComment Comment
227232 HiLink jsEnvComment PreProc
@@ -235,6 +240,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
235240 HiLink jsDocParam Label
236241 HiLink jsStringS String
237242 HiLink jsStringD String
243+ HiLink jsTemplateString String
238244 HiLink jsTernaryIfOperator Conditional
239245 HiLink jsRegexpString String
240246 HiLink jsRegexpBoundary SpecialChar
@@ -254,6 +260,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
254260 HiLink jsStatement Statement
255261 HiLink jsException Exception
256262 HiLink jsKeyword Keyword
263+ HiLink jsArrowFunction Type
257264 HiLink jsFunction Type
258265 HiLink jsFuncName Function
259266 HiLink jsArgsObj Special
@@ -279,6 +286,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
279286 HiLink jsFuncBraces Noise
280287 HiLink jsFuncParens Noise
281288 HiLink jsSpecial Special
289+ HiLink jsTemplateVar Special
282290 HiLink jsGlobalObjects Special
283291 HiLink jsExceptions Special
284292 HiLink jsFutureKeys Special
0 commit comments