1*071d4279SBram Moolenaar" Vim syntax file 2*071d4279SBram Moolenaar" Language: JavaScript 3*071d4279SBram Moolenaar" Maintainer: Claudio Fleiner <[email protected]> 4*071d4279SBram Moolenaar" URL: http://www.fleiner.com/vim/syntax/javascript.vim 5*071d4279SBram Moolenaar" Last Change: 2004 May 16 6*071d4279SBram Moolenaar 7*071d4279SBram Moolenaar" For version 5.x: Clear all syntax items 8*071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded 9*071d4279SBram Moolenaar" tuning parameters: 10*071d4279SBram Moolenaar" unlet javaScript_fold 11*071d4279SBram Moolenaar 12*071d4279SBram Moolenaarif !exists("main_syntax") 13*071d4279SBram Moolenaar if version < 600 14*071d4279SBram Moolenaar syntax clear 15*071d4279SBram Moolenaar elseif exists("b:current_syntax") 16*071d4279SBram Moolenaar finish 17*071d4279SBram Moolenaar endif 18*071d4279SBram Moolenaar let main_syntax = 'javascript' 19*071d4279SBram Moolenaarendif 20*071d4279SBram Moolenaar 21*071d4279SBram Moolenaar" Drop fold if it set but vim doesn't support it. 22*071d4279SBram Moolenaarif version < 600 && exists("javaScript_fold") 23*071d4279SBram Moolenaar unlet javaScript_fold 24*071d4279SBram Moolenaarendif 25*071d4279SBram Moolenaar 26*071d4279SBram Moolenaarsyn case ignore 27*071d4279SBram Moolenaar 28*071d4279SBram Moolenaar 29*071d4279SBram Moolenaarsyn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 30*071d4279SBram Moolenaarsyn match javaScriptLineComment "\/\/.*$" contains=javaScriptCommentTodo 31*071d4279SBram Moolenaarsyn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 32*071d4279SBram Moolenaarsyn region javaScriptComment start="/\*" end="\*/" contains=javaScriptCommentTodo 33*071d4279SBram Moolenaarsyn match javaScriptSpecial "\\\d\d\d\|\\." 34*071d4279SBram Moolenaarsyn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=javaScriptSpecial,@htmlPreproc 35*071d4279SBram Moolenaarsyn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=javaScriptSpecial,@htmlPreproc 36*071d4279SBram Moolenaarsyn match javaScriptSpecialCharacter "'\\.'" 37*071d4279SBram Moolenaarsyn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" 38*071d4279SBram Moolenaarsyn region javaScriptRegexpString start=+/+ skip=+\\\\\|\\/+ end=+/[gi]\?\s*$+ end=+/[gi]\?\s*[;,)]+me=e-1 contains=@htmlPreproc oneline 39*071d4279SBram Moolenaarsyn keyword javaScriptConditional if else 40*071d4279SBram Moolenaarsyn keyword javaScriptRepeat while for 41*071d4279SBram Moolenaarsyn keyword javaScriptBranch break continue switch case default 42*071d4279SBram Moolenaarsyn keyword javaScriptOperator new in 43*071d4279SBram Moolenaarsyn keyword javaScriptType this var const 44*071d4279SBram Moolenaarsyn keyword javaScriptStatement return with 45*071d4279SBram Moolenaarsyn keyword javaScriptBoolean true false 46*071d4279SBram Moolenaar 47*071d4279SBram Moolenaarif exists("javaScript_fold") 48*071d4279SBram Moolenaar syn match javaScriptFunction "\<function\>" 49*071d4279SBram Moolenaar syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 50*071d4279SBram Moolenaar 51*071d4279SBram Moolenaar syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 52*071d4279SBram Moolenaar syn sync match javaScriptSync grouphere NONE "^}" 53*071d4279SBram Moolenaar 54*071d4279SBram Moolenaar setlocal foldmethod=syntax 55*071d4279SBram Moolenaar setlocal foldtext=getline(v:foldstart) 56*071d4279SBram Moolenaarelse 57*071d4279SBram Moolenaar syn keyword javaScriptFunction function 58*071d4279SBram Moolenaar syn match javaScriptBraces "[{}]" 59*071d4279SBram Moolenaarendif 60*071d4279SBram Moolenaar 61*071d4279SBram Moolenaarsyn sync fromstart 62*071d4279SBram Moolenaarsyn sync maxlines=100 63*071d4279SBram Moolenaar 64*071d4279SBram Moolenaar" catch errors caused by wrong parenthesis 65*071d4279SBram Moolenaarsyn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces 66*071d4279SBram Moolenaarsyn match javaScrParenError ")" 67*071d4279SBram Moolenaar 68*071d4279SBram Moolenaarif main_syntax == "javascript" 69*071d4279SBram Moolenaar syn sync ccomment javaScriptComment 70*071d4279SBram Moolenaarendif 71*071d4279SBram Moolenaar 72*071d4279SBram Moolenaar" Define the default highlighting. 73*071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already 74*071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet 75*071d4279SBram Moolenaarif version >= 508 || !exists("did_javascript_syn_inits") 76*071d4279SBram Moolenaar if version < 508 77*071d4279SBram Moolenaar let did_javascript_syn_inits = 1 78*071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 79*071d4279SBram Moolenaar else 80*071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 81*071d4279SBram Moolenaar endif 82*071d4279SBram Moolenaar HiLink javaScriptComment Comment 83*071d4279SBram Moolenaar HiLink javaScriptLineComment Comment 84*071d4279SBram Moolenaar HiLink javaScriptCommentTodo Todo 85*071d4279SBram Moolenaar HiLink javaScriptSpecial Special 86*071d4279SBram Moolenaar HiLink javaScriptStringS String 87*071d4279SBram Moolenaar HiLink javaScriptStringD String 88*071d4279SBram Moolenaar HiLink javaScriptCharacter Character 89*071d4279SBram Moolenaar HiLink javaScriptSpecialCharacter javaScriptSpecial 90*071d4279SBram Moolenaar HiLink javaScriptNumber javaScriptValue 91*071d4279SBram Moolenaar HiLink javaScriptConditional Conditional 92*071d4279SBram Moolenaar HiLink javaScriptRepeat Repeat 93*071d4279SBram Moolenaar HiLink javaScriptBranch Conditional 94*071d4279SBram Moolenaar HiLink javaScriptOperator Operator 95*071d4279SBram Moolenaar HiLink javaScriptType Type 96*071d4279SBram Moolenaar HiLink javaScriptStatement Statement 97*071d4279SBram Moolenaar HiLink javaScriptFunction Function 98*071d4279SBram Moolenaar HiLink javaScriptBraces Function 99*071d4279SBram Moolenaar HiLink javaScriptError Error 100*071d4279SBram Moolenaar HiLink javaScrParenError javaScriptError 101*071d4279SBram Moolenaar HiLink javaScriptBoolean Boolean 102*071d4279SBram Moolenaar HiLink javaScriptRegexpString String 103*071d4279SBram Moolenaar delcommand HiLink 104*071d4279SBram Moolenaarendif 105*071d4279SBram Moolenaar 106*071d4279SBram Moolenaarlet b:current_syntax = "javascript" 107*071d4279SBram Moolenaarif main_syntax == 'javascript' 108*071d4279SBram Moolenaar unlet main_syntax 109*071d4279SBram Moolenaarendif 110*071d4279SBram Moolenaar 111*071d4279SBram Moolenaar" vim: ts=8 112