11" Vim syntax file
22" Language: JavaScript
3- " Maintainer: Josh Perez <josh at goatslacker.com>
4- " Version: 0.7.9
3+ " Maintainer: vim-javascript community
54" URL: https://github.com/pangloss/vim-javascript
6- "
7- " TODO:
8- " - Add the HTML syntax inside the JSDoc
95
106if ! exists (" main_syntax" )
117 if version < 600
@@ -37,7 +33,8 @@ syntax match jsNoise /\%(:\|,\|\;\|\.\)/
3733syntax keyword jsStorageClass const var let
3834syntax keyword jsOperator delete instanceof typeof void new in
3935syntax match jsOperator / \( !\| |\| &\| +\| -\| <\| >\| =\| %\|\/\| *\|\~\|\^\) /
40- syntax keyword jsBoolean true false
36+ syntax keyword jsBooleanTrue true
37+ syntax keyword jsBooleanFalse false
4138
4239" " JavaScript comments
4340syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
@@ -92,11 +89,12 @@ syntax match jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" containe
9289syntax match jsRegexpOr " \v\< @!\| " contained
9390syntax match jsRegexpMod " \v\( @<=\? [:=!>]" contained
9491syntax cluster jsRegexpSpecial contains =jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
95- syntax region jsRegexpGroup start =" \\\@ <!(" matchgroup = jsRegexGroup end =" \\\@ <!)" contained contains =jsRegexpCharClass,@jsRegexpSpecial
96- syntax region jsRegexpString start =+ \(\(\( return\| case\)\s\+\)\@ <=\|\(\( [)\] "']\|\d\|\w\)\s *\)\@ <!\) /\(\*\| /\)\@ !+ skip =+ \\\\\|\\ /+ end =+ /[gimy]\{ ,4}+ contains =jsSpecial,jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline
92+ 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
9794syntax match jsNumber / \< -\=\d\+ L\=\>\|\< 0[xX]\x\+\> /
9895syntax keyword jsNumber Infinity
9996syntax match jsFloat / \< -\=\% (\d\+\.\d\+\|\d\+\.\|\.\d\+\)\% ([eE][+-]\=\d\+\)\=\> /
97+ syntax match jsObjectKey / \< [a-zA-Z_$][0-9a-zA-Z_$\- ]*\(\s *:\)\@ =/
10098
10199" " JavaScript Prototype
102100syntax keyword jsPrototype prototype
@@ -182,13 +180,13 @@ endif "DOM/HTML/CSS
182180
183181
184182" " Code blocks
185- syntax cluster jsExpression contains =jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBoolean, jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError ,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins
186- syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch, jsReturn,jsStatement,jsTernaryIf,jsNoise,jsException
187- syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc
188- syntax region jsParen matchgroup =jsParens start =" (" end =" )" contains =@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc
189- syntax region jsBlock matchgroup =jsBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc
190- syntax region jsFuncBlock matchgroup =jsFuncBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained
191- syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =+ ?+ end =+ :+ contains =@jsExpression
183+ 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
184+ syntax cluster jsAll contains =@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsNoise,jsException
185+ syntax region jsBracket matchgroup =jsBrackets start =" \[ " end =" \] " contains =@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
186+ syntax region jsParen matchgroup =jsParens start =" (" end =" )" contains =@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
187+ syntax region jsBlock matchgroup =jsBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey, @htmlPreproc fold
188+ syntax region jsFuncBlock matchgroup =jsFuncBraces start =" {" end =" }" contains =@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc contained fold
189+ syntax region jsTernaryIf matchgroup =jsTernaryIfOperator start =+ ?+ end =+ :+ contains =@jsExpression,jsTernaryIf
192190
193191" " catch errors caused by wrong parenthesis
194192syntax match jsParensError " )\| }\|\] "
208206 syntax match jsFunction / \< function\> / nextgroup =jsFuncName,jsFuncArgs skipwhite
209207endif
210208
211- syntax match jsOpAssign / =\@ <!=/ nextgroup =jsFuncBlock skipwhite skipempty
212209syntax match jsFuncName contained / \< [a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup =jsFuncArgs skipwhite
213210syntax region jsFuncArgs contained matchgroup =jsFuncParens start =' (' end =' )' contains =jsFuncArgCommas nextgroup =jsFuncBlock keepend skipwhite
214211syntax match jsFuncArgCommas contained ' ,'
@@ -258,7 +255,6 @@ if version >= 508 || !exists("did_javascript_syn_inits")
258255 HiLink jsKeyword Keyword
259256 HiLink jsFunction Type
260257 HiLink jsFuncName Function
261- HiLink jsFuncCall Function
262258 HiLink jsArgsObj Special
263259 HiLink jsError Error
264260 HiLink jsParensError Error
@@ -273,12 +269,14 @@ if version >= 508 || !exists("did_javascript_syn_inits")
273269 HiLink jsUndefined Type
274270 HiLink jsNumber Number
275271 HiLink jsFloat Float
276- HiLink jsBoolean Boolean
272+ HiLink jsBooleanTrue Boolean
273+ HiLink jsBooleanFalse Boolean
277274 HiLink jsNoise Noise
278275 HiLink jsBrackets Noise
279276 HiLink jsParens Noise
280277 HiLink jsBraces Noise
281278 HiLink jsFuncBraces Noise
279+ HiLink jsFuncParens Noise
282280 HiLink jsSpecial Special
283281 HiLink jsGlobalObjects Special
284282 HiLink jsExceptions Special
@@ -302,8 +300,8 @@ endif
302300" Define the htmlJavaScript for HTML syntax html.vim
303301" syntax clear htmlJavaScript
304302" syntax clear jsExpression
305- syntax cluster htmlJavaScript contains =@jsAll,jsBracket,jsParen,jsBlock,jsParenError
306- syntax cluster javaScriptExpression contains =@jsAll,jsBracket,jsParen,jsBlock,jsParenError, @htmlPreproc
303+ syntax cluster htmlJavaScript contains =@jsAll,jsBracket,jsParen,jsBlock
304+ syntax cluster javaScriptExpression contains =@jsAll,jsBracket,jsParen,jsBlock,@htmlPreproc
307305" Vim's default html.vim highlights all javascript as 'Special'
308306hi ! def link javaScript NONE
309307
0 commit comments