1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: JavaScript 3071d4279SBram Moolenaar" Maintainer: Claudio Fleiner <[email protected]> 4a5792f58SBram Moolenaar" Updaters: Scott Shattuck (ss) <[email protected]> 5071d4279SBram Moolenaar" URL: http://www.fleiner.com/vim/syntax/javascript.vim 6a5792f58SBram Moolenaar" Changes: (ss) added keywords, reserved words, and other identifiers 7a5792f58SBram Moolenaar" (ss) repaired several quoting and grouping glitches 8a5792f58SBram Moolenaar" (ss) fixed regex parsing issue with multiple qualifiers [gi] 9a5792f58SBram Moolenaar" (ss) additional factoring of keywords, globals, and members 10*dad4473fSBram Moolenaar" Last Change: 2021 Mar 30 11ec7944aaSBram Moolenaar" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) 127dda86f2SBram Moolenaar" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder) 13071d4279SBram Moolenaar 14071d4279SBram Moolenaar" tuning parameters: 15071d4279SBram Moolenaar" unlet javaScript_fold 16071d4279SBram Moolenaar 17071d4279SBram Moolenaarif !exists("main_syntax") 1889bcfda6SBram Moolenaar " quit when a syntax file was already loaded 1989bcfda6SBram Moolenaar if exists("b:current_syntax") 20071d4279SBram Moolenaar finish 21071d4279SBram Moolenaar endif 22071d4279SBram Moolenaar let main_syntax = 'javascript' 23e2db695dSBram Moolenaarelseif exists("b:current_syntax") && b:current_syntax == "javascript" 24e2db695dSBram Moolenaar finish 25071d4279SBram Moolenaarendif 26071d4279SBram Moolenaar 270c5fa7d7SBram Moolenaarlet s:cpo_save = &cpo 280c5fa7d7SBram Moolenaarset cpo&vim 290c5fa7d7SBram Moolenaar 30071d4279SBram Moolenaar 31071d4279SBram Moolenaarsyn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 329964e468SBram Moolenaarsyn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo 33071d4279SBram Moolenaarsyn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 349964e468SBram Moolenaarsyn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo 35071d4279SBram Moolenaarsyn match javaScriptSpecial "\\\d\d\d\|\\." 36a5792f58SBram Moolenaarsyn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc 37a5792f58SBram Moolenaarsyn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc 3891f84f6eSBram Moolenaarsyn region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc 3991f84f6eSBram Moolenaar 4091f84f6eSBram Moolenaarsyn region javaScriptEmbed start=+${+ end=+}+ contains=@javaScriptEmbededExpr 41a5792f58SBram Moolenaar 42071d4279SBram Moolenaarsyn match javaScriptSpecialCharacter "'\\.'" 43071d4279SBram Moolenaarsyn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" 44*dad4473fSBram Moolenaarsyn match javaScriptNumber "-\=\<\d\+\%(_\d\+\)*\>" 4591f84f6eSBram Moolenaarsyn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline 46a5792f58SBram Moolenaar 47a5792f58SBram Moolenaarsyn keyword javaScriptConditional if else switch 48a5792f58SBram Moolenaarsyn keyword javaScriptRepeat while for do in 49a5792f58SBram Moolenaarsyn keyword javaScriptBranch break continue 50a5792f58SBram Moolenaarsyn keyword javaScriptOperator new delete instanceof typeof 51a5792f58SBram Moolenaarsyn keyword javaScriptType Array Boolean Date Function Number Object String RegExp 525be4ceecSBram Moolenaarsyn keyword javaScriptStatement return with await 53071d4279SBram Moolenaarsyn keyword javaScriptBoolean true false 54a5792f58SBram Moolenaarsyn keyword javaScriptNull null undefined 5500a927d6SBram Moolenaarsyn keyword javaScriptIdentifier arguments this var let 56a5792f58SBram Moolenaarsyn keyword javaScriptLabel case default 57a5792f58SBram Moolenaarsyn keyword javaScriptException try catch finally throw 58a5792f58SBram Moolenaarsyn keyword javaScriptMessage alert confirm prompt status 59a5792f58SBram Moolenaarsyn keyword javaScriptGlobal self window top parent 60a5792f58SBram Moolenaarsyn keyword javaScriptMember document event location 61a5792f58SBram Moolenaarsyn keyword javaScriptDeprecated escape unescape 625be4ceecSBram Moolenaarsyn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile async 63071d4279SBram Moolenaar 6491f84f6eSBram Moolenaarsyn cluster javaScriptEmbededExpr contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT 6591f84f6eSBram Moolenaar 66071d4279SBram Moolenaarif exists("javaScript_fold") 67071d4279SBram Moolenaar syn match javaScriptFunction "\<function\>" 68071d4279SBram Moolenaar syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 69071d4279SBram Moolenaar 70071d4279SBram Moolenaar syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 71071d4279SBram Moolenaar syn sync match javaScriptSync grouphere NONE "^}" 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar setlocal foldmethod=syntax 74071d4279SBram Moolenaar setlocal foldtext=getline(v:foldstart) 75071d4279SBram Moolenaarelse 76071d4279SBram Moolenaar syn keyword javaScriptFunction function 77a5792f58SBram Moolenaar syn match javaScriptBraces "[{}\[\]]" 78a5792f58SBram Moolenaar syn match javaScriptParens "[()]" 79071d4279SBram Moolenaarendif 80071d4279SBram Moolenaar 81388a5d4fSBram Moolenaarif main_syntax == "javascript" 82071d4279SBram Moolenaar syn sync fromstart 83071d4279SBram Moolenaar syn sync maxlines=100 84071d4279SBram Moolenaar 85071d4279SBram Moolenaar syn sync ccomment javaScriptComment 86071d4279SBram Moolenaarendif 87071d4279SBram Moolenaar 88071d4279SBram Moolenaar" Define the default highlighting. 8989bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 90f37506f6SBram Moolenaarhi def link javaScriptComment Comment 91f37506f6SBram Moolenaarhi def link javaScriptLineComment Comment 92f37506f6SBram Moolenaarhi def link javaScriptCommentTodo Todo 93f37506f6SBram Moolenaarhi def link javaScriptSpecial Special 94f37506f6SBram Moolenaarhi def link javaScriptStringS String 95f37506f6SBram Moolenaarhi def link javaScriptStringD String 9691f84f6eSBram Moolenaarhi def link javaScriptStringT String 97f37506f6SBram Moolenaarhi def link javaScriptCharacter Character 98f37506f6SBram Moolenaarhi def link javaScriptSpecialCharacter javaScriptSpecial 99f37506f6SBram Moolenaarhi def link javaScriptNumber javaScriptValue 100f37506f6SBram Moolenaarhi def link javaScriptConditional Conditional 101f37506f6SBram Moolenaarhi def link javaScriptRepeat Repeat 102f37506f6SBram Moolenaarhi def link javaScriptBranch Conditional 103f37506f6SBram Moolenaarhi def link javaScriptOperator Operator 104f37506f6SBram Moolenaarhi def link javaScriptType Type 105f37506f6SBram Moolenaarhi def link javaScriptStatement Statement 106f37506f6SBram Moolenaarhi def link javaScriptFunction Function 107f37506f6SBram Moolenaarhi def link javaScriptBraces Function 108f37506f6SBram Moolenaarhi def link javaScriptError Error 109f37506f6SBram Moolenaarhi def link javaScrParenError javaScriptError 110f37506f6SBram Moolenaarhi def link javaScriptNull Keyword 111f37506f6SBram Moolenaarhi def link javaScriptBoolean Boolean 112f37506f6SBram Moolenaarhi def link javaScriptRegexpString String 113a5792f58SBram Moolenaar 114f37506f6SBram Moolenaarhi def link javaScriptIdentifier Identifier 115f37506f6SBram Moolenaarhi def link javaScriptLabel Label 116f37506f6SBram Moolenaarhi def link javaScriptException Exception 117f37506f6SBram Moolenaarhi def link javaScriptMessage Keyword 118f37506f6SBram Moolenaarhi def link javaScriptGlobal Keyword 119f37506f6SBram Moolenaarhi def link javaScriptMember Keyword 120f37506f6SBram Moolenaarhi def link javaScriptDeprecated Exception 121f37506f6SBram Moolenaarhi def link javaScriptReserved Keyword 122f37506f6SBram Moolenaarhi def link javaScriptDebug Debug 123f37506f6SBram Moolenaarhi def link javaScriptConstant Label 12491f84f6eSBram Moolenaarhi def link javaScriptEmbed Special 12591f84f6eSBram Moolenaar 126a5792f58SBram Moolenaar 127071d4279SBram Moolenaar 128071d4279SBram Moolenaarlet b:current_syntax = "javascript" 129071d4279SBram Moolenaarif main_syntax == 'javascript' 130071d4279SBram Moolenaar unlet main_syntax 131071d4279SBram Moolenaarendif 1320c5fa7d7SBram Moolenaarlet &cpo = s:cpo_save 1330c5fa7d7SBram Moolenaarunlet s:cpo_save 134071d4279SBram Moolenaar 135071d4279SBram Moolenaar" vim: ts=8 136