Skip to content

Commit a1165dc

Browse files
committed
Merge pull request pangloss#167 from pangloss/develop
Update Master
2 parents 7e28dbd + b17135b commit a1165dc

1 file changed

Lines changed: 33 additions & 25 deletions

File tree

syntax/javascript.vim

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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
8181
syntax 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
8688
syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained
8789
syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained
8890
syntax match jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" contained
8991
syntax match jsRegexpOr "\v\<@!\|" contained
9092
syntax 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
9294
syntax 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
9496
syntax match jsNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/
9597
syntax keyword jsNumber Infinity
9698
syntax 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
98100
syntax match jsFunctionKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\(\s*:\s*function\s*\)\@=/ contained
99101

100-
"" JavaScript Prototype
101-
syntax keyword jsPrototype prototype
102-
103102
if 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=
109109
else
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
115116
endif
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
185186
syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
186187
syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
187188
syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
@@ -208,10 +209,13 @@ else
208209
endif
209210

210211
syntax 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
212213
syntax match jsFuncArgCommas contained ','
214+
syntax match jsFuncArgRest contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/
213215
syntax 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

Comments
 (0)