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" tuning parameters: 14071d4279SBram Moolenaar" unlet javaScript_fold 15071d4279SBram Moolenaar 16071d4279SBram Moolenaarif !exists("main_syntax") 1789bcfda6SBram Moolenaar " quit when a syntax file was already loaded 1889bcfda6SBram Moolenaar if exists("b:current_syntax") 19071d4279SBram Moolenaar finish 20071d4279SBram Moolenaar endif 21071d4279SBram Moolenaar let main_syntax = 'javascript' 22e2db695dSBram Moolenaarelseif exists("b:current_syntax") && b:current_syntax == "javascript" 23e2db695dSBram Moolenaar finish 24071d4279SBram Moolenaarendif 25071d4279SBram Moolenaar 260c5fa7d7SBram Moolenaarlet s:cpo_save = &cpo 270c5fa7d7SBram Moolenaarset cpo&vim 280c5fa7d7SBram Moolenaar 29071d4279SBram Moolenaar 30071d4279SBram Moolenaarsyn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 319964e468SBram Moolenaarsyn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo 32071d4279SBram Moolenaarsyn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 339964e468SBram Moolenaarsyn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo 34071d4279SBram Moolenaarsyn match javaScriptSpecial "\\\d\d\d\|\\." 35a5792f58SBram Moolenaarsyn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc 36a5792f58SBram Moolenaarsyn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc 37a5792f58SBram Moolenaar 38071d4279SBram Moolenaarsyn match javaScriptSpecialCharacter "'\\.'" 39071d4279SBram Moolenaarsyn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" 40ec7944aaSBram Moolenaarsyn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gim]\{0,2\}\s*$+ end=+/[gim]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline 41a5792f58SBram Moolenaar 42a5792f58SBram Moolenaarsyn keyword javaScriptConditional if else switch 43a5792f58SBram Moolenaarsyn keyword javaScriptRepeat while for do in 44a5792f58SBram Moolenaarsyn keyword javaScriptBranch break continue 45a5792f58SBram Moolenaarsyn keyword javaScriptOperator new delete instanceof typeof 46a5792f58SBram Moolenaarsyn keyword javaScriptType Array Boolean Date Function Number Object String RegExp 47071d4279SBram Moolenaarsyn keyword javaScriptStatement return with 48071d4279SBram Moolenaarsyn keyword javaScriptBoolean true false 49a5792f58SBram Moolenaarsyn keyword javaScriptNull null undefined 5000a927d6SBram Moolenaarsyn keyword javaScriptIdentifier arguments this var let 51a5792f58SBram Moolenaarsyn keyword javaScriptLabel case default 52a5792f58SBram Moolenaarsyn keyword javaScriptException try catch finally throw 53a5792f58SBram Moolenaarsyn keyword javaScriptMessage alert confirm prompt status 54a5792f58SBram Moolenaarsyn keyword javaScriptGlobal self window top parent 55a5792f58SBram Moolenaarsyn keyword javaScriptMember document event location 56a5792f58SBram Moolenaarsyn keyword javaScriptDeprecated escape unescape 57a5792f58SBram 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 58071d4279SBram Moolenaar 59071d4279SBram Moolenaarif exists("javaScript_fold") 60071d4279SBram Moolenaar syn match javaScriptFunction "\<function\>" 61071d4279SBram Moolenaar syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 62071d4279SBram Moolenaar 63071d4279SBram Moolenaar syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 64071d4279SBram Moolenaar syn sync match javaScriptSync grouphere NONE "^}" 65071d4279SBram Moolenaar 66071d4279SBram Moolenaar setlocal foldmethod=syntax 67071d4279SBram Moolenaar setlocal foldtext=getline(v:foldstart) 68071d4279SBram Moolenaarelse 69071d4279SBram Moolenaar syn keyword javaScriptFunction function 70a5792f58SBram Moolenaar syn match javaScriptBraces "[{}\[\]]" 71a5792f58SBram Moolenaar syn match javaScriptParens "[()]" 72071d4279SBram Moolenaarendif 73071d4279SBram Moolenaar 74071d4279SBram Moolenaarsyn sync fromstart 75071d4279SBram Moolenaarsyn sync maxlines=100 76071d4279SBram Moolenaar 77071d4279SBram Moolenaarif main_syntax == "javascript" 78071d4279SBram Moolenaar syn sync ccomment javaScriptComment 79071d4279SBram Moolenaarendif 80071d4279SBram Moolenaar 81071d4279SBram Moolenaar" Define the default highlighting. 8289bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 83*f37506f6SBram Moolenaarhi def link javaScriptComment Comment 84*f37506f6SBram Moolenaarhi def link javaScriptLineComment Comment 85*f37506f6SBram Moolenaarhi def link javaScriptCommentTodo Todo 86*f37506f6SBram Moolenaarhi def link javaScriptSpecial Special 87*f37506f6SBram Moolenaarhi def link javaScriptStringS String 88*f37506f6SBram Moolenaarhi def link javaScriptStringD String 89*f37506f6SBram Moolenaarhi def link javaScriptCharacter Character 90*f37506f6SBram Moolenaarhi def link javaScriptSpecialCharacter javaScriptSpecial 91*f37506f6SBram Moolenaarhi def link javaScriptNumber javaScriptValue 92*f37506f6SBram Moolenaarhi def link javaScriptConditional Conditional 93*f37506f6SBram Moolenaarhi def link javaScriptRepeat Repeat 94*f37506f6SBram Moolenaarhi def link javaScriptBranch Conditional 95*f37506f6SBram Moolenaarhi def link javaScriptOperator Operator 96*f37506f6SBram Moolenaarhi def link javaScriptType Type 97*f37506f6SBram Moolenaarhi def link javaScriptStatement Statement 98*f37506f6SBram Moolenaarhi def link javaScriptFunction Function 99*f37506f6SBram Moolenaarhi def link javaScriptBraces Function 100*f37506f6SBram Moolenaarhi def link javaScriptError Error 101*f37506f6SBram Moolenaarhi def link javaScrParenError javaScriptError 102*f37506f6SBram Moolenaarhi def link javaScriptNull Keyword 103*f37506f6SBram Moolenaarhi def link javaScriptBoolean Boolean 104*f37506f6SBram Moolenaarhi def link javaScriptRegexpString String 105a5792f58SBram Moolenaar 106*f37506f6SBram Moolenaarhi def link javaScriptIdentifier Identifier 107*f37506f6SBram Moolenaarhi def link javaScriptLabel Label 108*f37506f6SBram Moolenaarhi def link javaScriptException Exception 109*f37506f6SBram Moolenaarhi def link javaScriptMessage Keyword 110*f37506f6SBram Moolenaarhi def link javaScriptGlobal Keyword 111*f37506f6SBram Moolenaarhi def link javaScriptMember Keyword 112*f37506f6SBram Moolenaarhi def link javaScriptDeprecated Exception 113*f37506f6SBram Moolenaarhi def link javaScriptReserved Keyword 114*f37506f6SBram Moolenaarhi def link javaScriptDebug Debug 115*f37506f6SBram Moolenaarhi def link javaScriptConstant Label 116a5792f58SBram Moolenaar 117071d4279SBram Moolenaar 118071d4279SBram Moolenaarlet b:current_syntax = "javascript" 119071d4279SBram Moolenaarif main_syntax == 'javascript' 120071d4279SBram Moolenaar unlet main_syntax 121071d4279SBram Moolenaarendif 1220c5fa7d7SBram Moolenaarlet &cpo = s:cpo_save 1230c5fa7d7SBram Moolenaarunlet s:cpo_save 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar" vim: ts=8 126