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