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 100c5fa7d7SBram Moolenaar" Last Change: 2012 Oct 05 11ec7944aaSBram Moolenaar" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) 12071d4279SBram Moolenaar 13071d4279SBram Moolenaar" For version 5.x: Clear all syntax items 14071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded 15071d4279SBram Moolenaar" tuning parameters: 16071d4279SBram Moolenaar" unlet javaScript_fold 17071d4279SBram Moolenaar 18071d4279SBram Moolenaarif !exists("main_syntax") 19071d4279SBram Moolenaar if version < 600 20071d4279SBram Moolenaar syntax clear 21071d4279SBram Moolenaar elseif exists("b:current_syntax") 22071d4279SBram Moolenaar finish 23071d4279SBram Moolenaar endif 24071d4279SBram Moolenaar let main_syntax = 'javascript' 25*e2db695dSBram Moolenaarelseif exists("b:current_syntax") && b:current_syntax == "javascript" 26*e2db695dSBram Moolenaar finish 27071d4279SBram Moolenaarendif 28071d4279SBram Moolenaar 290c5fa7d7SBram Moolenaarlet s:cpo_save = &cpo 300c5fa7d7SBram Moolenaarset cpo&vim 310c5fa7d7SBram Moolenaar 32071d4279SBram Moolenaar" Drop fold if it set but vim doesn't support it. 33071d4279SBram Moolenaarif version < 600 && exists("javaScript_fold") 34071d4279SBram Moolenaar unlet javaScript_fold 35071d4279SBram Moolenaarendif 36071d4279SBram Moolenaar 37071d4279SBram Moolenaar 38071d4279SBram Moolenaarsyn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 399964e468SBram Moolenaarsyn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo 40071d4279SBram Moolenaarsyn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 419964e468SBram Moolenaarsyn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo 42071d4279SBram Moolenaarsyn match javaScriptSpecial "\\\d\d\d\|\\." 43a5792f58SBram Moolenaarsyn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc 44a5792f58SBram Moolenaarsyn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc 45a5792f58SBram Moolenaar 46071d4279SBram Moolenaarsyn match javaScriptSpecialCharacter "'\\.'" 47071d4279SBram Moolenaarsyn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" 48ec7944aaSBram Moolenaarsyn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gim]\{0,2\}\s*$+ end=+/[gim]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline 49a5792f58SBram Moolenaar 50a5792f58SBram Moolenaarsyn keyword javaScriptConditional if else switch 51a5792f58SBram Moolenaarsyn keyword javaScriptRepeat while for do in 52a5792f58SBram Moolenaarsyn keyword javaScriptBranch break continue 53a5792f58SBram Moolenaarsyn keyword javaScriptOperator new delete instanceof typeof 54a5792f58SBram Moolenaarsyn keyword javaScriptType Array Boolean Date Function Number Object String RegExp 55071d4279SBram Moolenaarsyn keyword javaScriptStatement return with 56071d4279SBram Moolenaarsyn keyword javaScriptBoolean true false 57a5792f58SBram Moolenaarsyn keyword javaScriptNull null undefined 5800a927d6SBram Moolenaarsyn keyword javaScriptIdentifier arguments this var let 59a5792f58SBram Moolenaarsyn keyword javaScriptLabel case default 60a5792f58SBram Moolenaarsyn keyword javaScriptException try catch finally throw 61a5792f58SBram Moolenaarsyn keyword javaScriptMessage alert confirm prompt status 62a5792f58SBram Moolenaarsyn keyword javaScriptGlobal self window top parent 63a5792f58SBram Moolenaarsyn keyword javaScriptMember document event location 64a5792f58SBram Moolenaarsyn keyword javaScriptDeprecated escape unescape 65a5792f58SBram 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 66071d4279SBram Moolenaar 67071d4279SBram Moolenaarif exists("javaScript_fold") 68071d4279SBram Moolenaar syn match javaScriptFunction "\<function\>" 69071d4279SBram Moolenaar syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 70071d4279SBram Moolenaar 71071d4279SBram Moolenaar syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 72071d4279SBram Moolenaar syn sync match javaScriptSync grouphere NONE "^}" 73071d4279SBram Moolenaar 74071d4279SBram Moolenaar setlocal foldmethod=syntax 75071d4279SBram Moolenaar setlocal foldtext=getline(v:foldstart) 76071d4279SBram Moolenaarelse 77071d4279SBram Moolenaar syn keyword javaScriptFunction function 78a5792f58SBram Moolenaar syn match javaScriptBraces "[{}\[\]]" 79a5792f58SBram Moolenaar syn match javaScriptParens "[()]" 80071d4279SBram Moolenaarendif 81071d4279SBram Moolenaar 82071d4279SBram Moolenaarsyn sync fromstart 83071d4279SBram Moolenaarsyn sync maxlines=100 84071d4279SBram Moolenaar 85071d4279SBram Moolenaarif main_syntax == "javascript" 86071d4279SBram Moolenaar syn sync ccomment javaScriptComment 87071d4279SBram Moolenaarendif 88071d4279SBram Moolenaar 89071d4279SBram Moolenaar" Define the default highlighting. 90071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already 91071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet 92071d4279SBram Moolenaarif version >= 508 || !exists("did_javascript_syn_inits") 93071d4279SBram Moolenaar if version < 508 94071d4279SBram Moolenaar let did_javascript_syn_inits = 1 95071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 96071d4279SBram Moolenaar else 97071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 98071d4279SBram Moolenaar endif 99071d4279SBram Moolenaar HiLink javaScriptComment Comment 100071d4279SBram Moolenaar HiLink javaScriptLineComment Comment 101071d4279SBram Moolenaar HiLink javaScriptCommentTodo Todo 102071d4279SBram Moolenaar HiLink javaScriptSpecial Special 103071d4279SBram Moolenaar HiLink javaScriptStringS String 104071d4279SBram Moolenaar HiLink javaScriptStringD String 105071d4279SBram Moolenaar HiLink javaScriptCharacter Character 106071d4279SBram Moolenaar HiLink javaScriptSpecialCharacter javaScriptSpecial 107071d4279SBram Moolenaar HiLink javaScriptNumber javaScriptValue 108071d4279SBram Moolenaar HiLink javaScriptConditional Conditional 109071d4279SBram Moolenaar HiLink javaScriptRepeat Repeat 110071d4279SBram Moolenaar HiLink javaScriptBranch Conditional 111071d4279SBram Moolenaar HiLink javaScriptOperator Operator 112071d4279SBram Moolenaar HiLink javaScriptType Type 113071d4279SBram Moolenaar HiLink javaScriptStatement Statement 114071d4279SBram Moolenaar HiLink javaScriptFunction Function 115071d4279SBram Moolenaar HiLink javaScriptBraces Function 116071d4279SBram Moolenaar HiLink javaScriptError Error 117071d4279SBram Moolenaar HiLink javaScrParenError javaScriptError 118293ee4d4SBram Moolenaar HiLink javaScriptNull Keyword 119071d4279SBram Moolenaar HiLink javaScriptBoolean Boolean 120071d4279SBram Moolenaar HiLink javaScriptRegexpString String 121a5792f58SBram Moolenaar 122a5792f58SBram Moolenaar HiLink javaScriptIdentifier Identifier 123a5792f58SBram Moolenaar HiLink javaScriptLabel Label 124a5792f58SBram Moolenaar HiLink javaScriptException Exception 125a5792f58SBram Moolenaar HiLink javaScriptMessage Keyword 126a5792f58SBram Moolenaar HiLink javaScriptGlobal Keyword 127a5792f58SBram Moolenaar HiLink javaScriptMember Keyword 128a5792f58SBram Moolenaar HiLink javaScriptDeprecated Exception 129a5792f58SBram Moolenaar HiLink javaScriptReserved Keyword 130a5792f58SBram Moolenaar HiLink javaScriptDebug Debug 131a5792f58SBram Moolenaar HiLink javaScriptConstant Label 132a5792f58SBram Moolenaar 133071d4279SBram Moolenaar delcommand HiLink 134071d4279SBram Moolenaarendif 135071d4279SBram Moolenaar 136071d4279SBram Moolenaarlet b:current_syntax = "javascript" 137071d4279SBram Moolenaarif main_syntax == 'javascript' 138071d4279SBram Moolenaar unlet main_syntax 139071d4279SBram Moolenaarendif 1400c5fa7d7SBram Moolenaarlet &cpo = s:cpo_save 1410c5fa7d7SBram Moolenaarunlet s:cpo_save 142071d4279SBram Moolenaar 143071d4279SBram Moolenaar" vim: ts=8 144