1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: JavaScript 3071d4279SBram Moolenaar" Maintainer: Claudio Fleiner <[email protected]> 4071d4279SBram Moolenaar" URL: http://www.fleiner.com/vim/syntax/javascript.vim 5*293ee4d4SBram Moolenaar" Last Change: 2004 Nov 20 6071d4279SBram Moolenaar 7071d4279SBram Moolenaar" For version 5.x: Clear all syntax items 8071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded 9071d4279SBram Moolenaar" tuning parameters: 10071d4279SBram Moolenaar" unlet javaScript_fold 11071d4279SBram Moolenaar 12071d4279SBram Moolenaarif !exists("main_syntax") 13071d4279SBram Moolenaar if version < 600 14071d4279SBram Moolenaar syntax clear 15071d4279SBram Moolenaar elseif exists("b:current_syntax") 16071d4279SBram Moolenaar finish 17071d4279SBram Moolenaar endif 18071d4279SBram Moolenaar let main_syntax = 'javascript' 19071d4279SBram Moolenaarendif 20071d4279SBram Moolenaar 21071d4279SBram Moolenaar" Drop fold if it set but vim doesn't support it. 22071d4279SBram Moolenaarif version < 600 && exists("javaScript_fold") 23071d4279SBram Moolenaar unlet javaScript_fold 24071d4279SBram Moolenaarendif 25071d4279SBram Moolenaar 26071d4279SBram Moolenaarsyn case ignore 27071d4279SBram Moolenaar 28071d4279SBram Moolenaar 29071d4279SBram Moolenaarsyn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 30071d4279SBram Moolenaarsyn match javaScriptLineComment "\/\/.*$" contains=javaScriptCommentTodo 31071d4279SBram Moolenaarsyn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 32071d4279SBram Moolenaarsyn region javaScriptComment start="/\*" end="\*/" contains=javaScriptCommentTodo 33071d4279SBram Moolenaarsyn match javaScriptSpecial "\\\d\d\d\|\\." 34071d4279SBram Moolenaarsyn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=javaScriptSpecial,@htmlPreproc 35071d4279SBram Moolenaarsyn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=javaScriptSpecial,@htmlPreproc 36071d4279SBram Moolenaarsyn match javaScriptSpecialCharacter "'\\.'" 37071d4279SBram Moolenaarsyn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" 38*293ee4d4SBram Moolenaarsyn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\?\s*$+ end=+/[gi]\?\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline 39071d4279SBram Moolenaarsyn keyword javaScriptConditional if else 40071d4279SBram Moolenaarsyn keyword javaScriptRepeat while for 41071d4279SBram Moolenaarsyn keyword javaScriptBranch break continue switch case default 42071d4279SBram Moolenaarsyn keyword javaScriptOperator new in 43071d4279SBram Moolenaarsyn keyword javaScriptType this var const 44071d4279SBram Moolenaarsyn keyword javaScriptStatement return with 45071d4279SBram Moolenaarsyn keyword javaScriptBoolean true false 46*293ee4d4SBram Moolenaarsyn keyword javaScriptNull null 47071d4279SBram Moolenaar 48071d4279SBram Moolenaarif exists("javaScript_fold") 49071d4279SBram Moolenaar syn match javaScriptFunction "\<function\>" 50071d4279SBram Moolenaar syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 51071d4279SBram Moolenaar 52071d4279SBram Moolenaar syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 53071d4279SBram Moolenaar syn sync match javaScriptSync grouphere NONE "^}" 54071d4279SBram Moolenaar 55071d4279SBram Moolenaar setlocal foldmethod=syntax 56071d4279SBram Moolenaar setlocal foldtext=getline(v:foldstart) 57071d4279SBram Moolenaarelse 58071d4279SBram Moolenaar syn keyword javaScriptFunction function 59071d4279SBram Moolenaar syn match javaScriptBraces "[{}]" 60071d4279SBram Moolenaarendif 61071d4279SBram Moolenaar 62071d4279SBram Moolenaarsyn sync fromstart 63071d4279SBram Moolenaarsyn sync maxlines=100 64071d4279SBram Moolenaar 65071d4279SBram Moolenaar" catch errors caused by wrong parenthesis 66*293ee4d4SBram Moolenaarsyn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces,javaScriptFunction,javaScriptFunctionFold,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptBoolean,javaScriptConstant 67071d4279SBram Moolenaar syn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces 68071d4279SBram Moolenaarsyn match javaScrParenError ")" 69071d4279SBram Moolenaar 70071d4279SBram Moolenaarif main_syntax == "javascript" 71071d4279SBram Moolenaar syn sync ccomment javaScriptComment 72071d4279SBram Moolenaarendif 73071d4279SBram Moolenaar 74071d4279SBram Moolenaar" Define the default highlighting. 75071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already 76071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet 77071d4279SBram Moolenaarif version >= 508 || !exists("did_javascript_syn_inits") 78071d4279SBram Moolenaar if version < 508 79071d4279SBram Moolenaar let did_javascript_syn_inits = 1 80071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 81071d4279SBram Moolenaar else 82071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 83071d4279SBram Moolenaar endif 84071d4279SBram Moolenaar HiLink javaScriptComment Comment 85071d4279SBram Moolenaar HiLink javaScriptLineComment Comment 86071d4279SBram Moolenaar HiLink javaScriptCommentTodo Todo 87071d4279SBram Moolenaar HiLink javaScriptSpecial Special 88071d4279SBram Moolenaar HiLink javaScriptStringS String 89071d4279SBram Moolenaar HiLink javaScriptStringD String 90071d4279SBram Moolenaar HiLink javaScriptCharacter Character 91071d4279SBram Moolenaar HiLink javaScriptSpecialCharacter javaScriptSpecial 92071d4279SBram Moolenaar HiLink javaScriptNumber javaScriptValue 93071d4279SBram Moolenaar HiLink javaScriptConditional Conditional 94071d4279SBram Moolenaar HiLink javaScriptRepeat Repeat 95071d4279SBram Moolenaar HiLink javaScriptBranch Conditional 96071d4279SBram Moolenaar HiLink javaScriptOperator Operator 97071d4279SBram Moolenaar HiLink javaScriptType Type 98071d4279SBram Moolenaar HiLink javaScriptStatement Statement 99071d4279SBram Moolenaar HiLink javaScriptFunction Function 100071d4279SBram Moolenaar HiLink javaScriptBraces Function 101071d4279SBram Moolenaar HiLink javaScriptError Error 102071d4279SBram Moolenaar HiLink javaScrParenError javaScriptError 103*293ee4d4SBram Moolenaar HiLink javaScriptNull Keyword 104071d4279SBram Moolenaar HiLink javaScriptBoolean Boolean 105071d4279SBram Moolenaar HiLink javaScriptRegexpString String 106071d4279SBram Moolenaar delcommand HiLink 107071d4279SBram Moolenaarendif 108071d4279SBram Moolenaar 109071d4279SBram Moolenaarlet b:current_syntax = "javascript" 110071d4279SBram Moolenaarif main_syntax == 'javascript' 111071d4279SBram Moolenaar unlet main_syntax 112071d4279SBram Moolenaarendif 113071d4279SBram Moolenaar 114071d4279SBram Moolenaar" vim: ts=8 115