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 Nov 20 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=+/[^/*]+me=e-1 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 46syn keyword javaScriptNull null 47 48if exists("javaScript_fold") 49 syn match javaScriptFunction "\<function\>" 50 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 51 52 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 53 syn sync match javaScriptSync grouphere NONE "^}" 54 55 setlocal foldmethod=syntax 56 setlocal foldtext=getline(v:foldstart) 57else 58 syn keyword javaScriptFunction function 59 syn match javaScriptBraces "[{}]" 60endif 61 62syn sync fromstart 63syn sync maxlines=100 64 65" catch errors caused by wrong parenthesis 66syn 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 67 syn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces 68syn match javaScrParenError ")" 69 70if main_syntax == "javascript" 71 syn sync ccomment javaScriptComment 72endif 73 74" Define the default highlighting. 75" For version 5.7 and earlier: only when not done already 76" For version 5.8 and later: only when an item doesn't have highlighting yet 77if version >= 508 || !exists("did_javascript_syn_inits") 78 if version < 508 79 let did_javascript_syn_inits = 1 80 command -nargs=+ HiLink hi link <args> 81 else 82 command -nargs=+ HiLink hi def link <args> 83 endif 84 HiLink javaScriptComment Comment 85 HiLink javaScriptLineComment Comment 86 HiLink javaScriptCommentTodo Todo 87 HiLink javaScriptSpecial Special 88 HiLink javaScriptStringS String 89 HiLink javaScriptStringD String 90 HiLink javaScriptCharacter Character 91 HiLink javaScriptSpecialCharacter javaScriptSpecial 92 HiLink javaScriptNumber javaScriptValue 93 HiLink javaScriptConditional Conditional 94 HiLink javaScriptRepeat Repeat 95 HiLink javaScriptBranch Conditional 96 HiLink javaScriptOperator Operator 97 HiLink javaScriptType Type 98 HiLink javaScriptStatement Statement 99 HiLink javaScriptFunction Function 100 HiLink javaScriptBraces Function 101 HiLink javaScriptError Error 102 HiLink javaScrParenError javaScriptError 103 HiLink javaScriptNull Keyword 104 HiLink javaScriptBoolean Boolean 105 HiLink javaScriptRegexpString String 106 delcommand HiLink 107endif 108 109let b:current_syntax = "javascript" 110if main_syntax == 'javascript' 111 unlet main_syntax 112endif 113 114" vim: ts=8 115