1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: JavaScript 3071d4279SBram Moolenaar" Maintainer: Claudio Fleiner <[email protected]> 4*a5792f58SBram Moolenaar" Updaters: Scott Shattuck (ss) <[email protected]> 5071d4279SBram Moolenaar" URL: http://www.fleiner.com/vim/syntax/javascript.vim 6*a5792f58SBram Moolenaar" Changes: (ss) added keywords, reserved words, and other identifiers 7*a5792f58SBram Moolenaar" (ss) repaired several quoting and grouping glitches 8*a5792f58SBram Moolenaar" (ss) fixed regex parsing issue with multiple qualifiers [gi] 9*a5792f58SBram Moolenaar" (ss) additional factoring of keywords, globals, and members 10*a5792f58SBram Moolenaar" Last Change: 2005 Nov 12 (ss) 11071d4279SBram Moolenaar 12071d4279SBram Moolenaar" For version 5.x: Clear all syntax items 13071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded 14071d4279SBram Moolenaar" tuning parameters: 15071d4279SBram Moolenaar" unlet javaScript_fold 16071d4279SBram Moolenaar 17071d4279SBram Moolenaarif !exists("main_syntax") 18071d4279SBram Moolenaar if version < 600 19071d4279SBram Moolenaar syntax clear 20071d4279SBram Moolenaar elseif exists("b:current_syntax") 21071d4279SBram Moolenaar finish 22071d4279SBram Moolenaar endif 23071d4279SBram Moolenaar let main_syntax = 'javascript' 24071d4279SBram Moolenaarendif 25071d4279SBram Moolenaar 26071d4279SBram Moolenaar" Drop fold if it set but vim doesn't support it. 27071d4279SBram Moolenaarif version < 600 && exists("javaScript_fold") 28071d4279SBram Moolenaar unlet javaScript_fold 29071d4279SBram Moolenaarendif 30071d4279SBram Moolenaar 31071d4279SBram Moolenaarsyn case ignore 32071d4279SBram Moolenaar 33071d4279SBram Moolenaar 34071d4279SBram Moolenaarsyn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 35*a5792f58SBram Moolenaarsyn match javaScriptLineComment "\/\/.*" contains=javaScriptCommentTodo 36071d4279SBram Moolenaarsyn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 37071d4279SBram Moolenaarsyn region javaScriptComment start="/\*" end="\*/" contains=javaScriptCommentTodo 38071d4279SBram Moolenaarsyn match javaScriptSpecial "\\\d\d\d\|\\." 39*a5792f58SBram Moolenaarsyn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc 40*a5792f58SBram Moolenaarsyn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc 41*a5792f58SBram Moolenaar 42071d4279SBram Moolenaarsyn match javaScriptSpecialCharacter "'\\.'" 43071d4279SBram Moolenaarsyn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" 44*a5792f58SBram Moolenaarsyn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline 45*a5792f58SBram Moolenaar 46*a5792f58SBram Moolenaarsyn keyword javaScriptConditional if else switch 47*a5792f58SBram Moolenaarsyn keyword javaScriptRepeat while for do in 48*a5792f58SBram Moolenaarsyn keyword javaScriptBranch break continue 49*a5792f58SBram Moolenaarsyn keyword javaScriptOperator new delete instanceof typeof 50*a5792f58SBram Moolenaarsyn keyword javaScriptType Array Boolean Date Function Number Object String RegExp 51071d4279SBram Moolenaarsyn keyword javaScriptStatement return with 52071d4279SBram Moolenaarsyn keyword javaScriptBoolean true false 53*a5792f58SBram Moolenaarsyn keyword javaScriptNull null undefined 54*a5792f58SBram Moolenaarsyn keyword javaScriptIdentifier arguments this var 55*a5792f58SBram Moolenaarsyn keyword javaScriptLabel case default 56*a5792f58SBram Moolenaarsyn keyword javaScriptException try catch finally throw 57*a5792f58SBram Moolenaarsyn keyword javaScriptMessage alert confirm prompt status 58*a5792f58SBram Moolenaarsyn keyword javaScriptGlobal self window top parent 59*a5792f58SBram Moolenaarsyn keyword javaScriptMember document event location 60*a5792f58SBram Moolenaarsyn keyword javaScriptDeprecated escape unescape 61*a5792f58SBram 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 62071d4279SBram Moolenaar 63071d4279SBram Moolenaarif exists("javaScript_fold") 64071d4279SBram Moolenaar syn match javaScriptFunction "\<function\>" 65071d4279SBram Moolenaar syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 66071d4279SBram Moolenaar 67071d4279SBram Moolenaar syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 68071d4279SBram Moolenaar syn sync match javaScriptSync grouphere NONE "^}" 69071d4279SBram Moolenaar 70071d4279SBram Moolenaar setlocal foldmethod=syntax 71071d4279SBram Moolenaar setlocal foldtext=getline(v:foldstart) 72071d4279SBram Moolenaarelse 73071d4279SBram Moolenaar syn keyword javaScriptFunction function 74*a5792f58SBram Moolenaar syn match javaScriptBraces "[{}\[\]]" 75*a5792f58SBram Moolenaar syn match javaScriptParens "[()]" 76071d4279SBram Moolenaarendif 77071d4279SBram Moolenaar 78071d4279SBram Moolenaarsyn sync fromstart 79071d4279SBram Moolenaarsyn sync maxlines=100 80071d4279SBram Moolenaar 81071d4279SBram Moolenaarif main_syntax == "javascript" 82071d4279SBram Moolenaar syn sync ccomment javaScriptComment 83071d4279SBram Moolenaarendif 84071d4279SBram Moolenaar 85071d4279SBram Moolenaar" Define the default highlighting. 86071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already 87071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet 88071d4279SBram Moolenaarif version >= 508 || !exists("did_javascript_syn_inits") 89071d4279SBram Moolenaar if version < 508 90071d4279SBram Moolenaar let did_javascript_syn_inits = 1 91071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 92071d4279SBram Moolenaar else 93071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 94071d4279SBram Moolenaar endif 95071d4279SBram Moolenaar HiLink javaScriptComment Comment 96071d4279SBram Moolenaar HiLink javaScriptLineComment Comment 97071d4279SBram Moolenaar HiLink javaScriptCommentTodo Todo 98071d4279SBram Moolenaar HiLink javaScriptSpecial Special 99071d4279SBram Moolenaar HiLink javaScriptStringS String 100071d4279SBram Moolenaar HiLink javaScriptStringD String 101071d4279SBram Moolenaar HiLink javaScriptCharacter Character 102071d4279SBram Moolenaar HiLink javaScriptSpecialCharacter javaScriptSpecial 103071d4279SBram Moolenaar HiLink javaScriptNumber javaScriptValue 104071d4279SBram Moolenaar HiLink javaScriptConditional Conditional 105071d4279SBram Moolenaar HiLink javaScriptRepeat Repeat 106071d4279SBram Moolenaar HiLink javaScriptBranch Conditional 107071d4279SBram Moolenaar HiLink javaScriptOperator Operator 108071d4279SBram Moolenaar HiLink javaScriptType Type 109071d4279SBram Moolenaar HiLink javaScriptStatement Statement 110071d4279SBram Moolenaar HiLink javaScriptFunction Function 111071d4279SBram Moolenaar HiLink javaScriptBraces Function 112071d4279SBram Moolenaar HiLink javaScriptError Error 113071d4279SBram Moolenaar HiLink javaScrParenError javaScriptError 114293ee4d4SBram Moolenaar HiLink javaScriptNull Keyword 115071d4279SBram Moolenaar HiLink javaScriptBoolean Boolean 116071d4279SBram Moolenaar HiLink javaScriptRegexpString String 117*a5792f58SBram Moolenaar 118*a5792f58SBram Moolenaar HiLink javaScriptIdentifier Identifier 119*a5792f58SBram Moolenaar HiLink javaScriptLabel Label 120*a5792f58SBram Moolenaar HiLink javaScriptException Exception 121*a5792f58SBram Moolenaar HiLink javaScriptMessage Keyword 122*a5792f58SBram Moolenaar HiLink javaScriptGlobal Keyword 123*a5792f58SBram Moolenaar HiLink javaScriptMember Keyword 124*a5792f58SBram Moolenaar HiLink javaScriptDeprecated Exception 125*a5792f58SBram Moolenaar HiLink javaScriptReserved Keyword 126*a5792f58SBram Moolenaar HiLink javaScriptDebug Debug 127*a5792f58SBram Moolenaar HiLink javaScriptConstant Label 128*a5792f58SBram Moolenaar 129071d4279SBram Moolenaar delcommand HiLink 130071d4279SBram Moolenaarendif 131071d4279SBram Moolenaar 132071d4279SBram Moolenaarlet b:current_syntax = "javascript" 133071d4279SBram Moolenaarif main_syntax == 'javascript' 134071d4279SBram Moolenaar unlet main_syntax 135071d4279SBram Moolenaarendif 136071d4279SBram Moolenaar 137071d4279SBram Moolenaar" vim: ts=8 138