1" Vim syntax file 2" Language: JavaScript 3" Maintainer: Claudio Fleiner <claudio@fleiner.com> 4" Updaters: Scott Shattuck (ss) <ss@technicalpursuit.com> 5" URL: http://www.fleiner.com/vim/syntax/javascript.vim 6" Changes: (ss) added keywords, reserved words, and other identifiers 7" (ss) repaired several quoting and grouping glitches 8" (ss) fixed regex parsing issue with multiple qualifiers [gi] 9" (ss) additional factoring of keywords, globals, and members 10" Last Change: 2010 Mar 25 11 12" For version 5.x: Clear all syntax items 13" For version 6.x: Quit when a syntax file was already loaded 14" tuning parameters: 15" unlet javaScript_fold 16 17if !exists("main_syntax") 18 if version < 600 19 syntax clear 20 elseif exists("b:current_syntax") 21 finish 22 endif 23 let main_syntax = 'javascript' 24endif 25 26" Drop fold if it set but vim doesn't support it. 27if version < 600 && exists("javaScript_fold") 28 unlet javaScript_fold 29endif 30 31 32syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained 33syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo 34syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" 35syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo 36syn match javaScriptSpecial "\\\d\d\d\|\\." 37syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc 38syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc 39 40syn match javaScriptSpecialCharacter "'\\.'" 41syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" 42syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline 43 44syn keyword javaScriptConditional if else switch 45syn keyword javaScriptRepeat while for do in 46syn keyword javaScriptBranch break continue 47syn keyword javaScriptOperator new delete instanceof typeof 48syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp 49syn keyword javaScriptStatement return with 50syn keyword javaScriptBoolean true false 51syn keyword javaScriptNull null undefined 52syn keyword javaScriptIdentifier arguments this var let 53syn keyword javaScriptLabel case default 54syn keyword javaScriptException try catch finally throw 55syn keyword javaScriptMessage alert confirm prompt status 56syn keyword javaScriptGlobal self window top parent 57syn keyword javaScriptMember document event location 58syn keyword javaScriptDeprecated escape unescape 59syn 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 60 61if exists("javaScript_fold") 62 syn match javaScriptFunction "\<function\>" 63 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend 64 65 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>" 66 syn sync match javaScriptSync grouphere NONE "^}" 67 68 setlocal foldmethod=syntax 69 setlocal foldtext=getline(v:foldstart) 70else 71 syn keyword javaScriptFunction function 72 syn match javaScriptBraces "[{}\[\]]" 73 syn match javaScriptParens "[()]" 74endif 75 76syn sync fromstart 77syn sync maxlines=100 78 79if main_syntax == "javascript" 80 syn sync ccomment javaScriptComment 81endif 82 83" Define the default highlighting. 84" For version 5.7 and earlier: only when not done already 85" For version 5.8 and later: only when an item doesn't have highlighting yet 86if version >= 508 || !exists("did_javascript_syn_inits") 87 if version < 508 88 let did_javascript_syn_inits = 1 89 command -nargs=+ HiLink hi link <args> 90 else 91 command -nargs=+ HiLink hi def link <args> 92 endif 93 HiLink javaScriptComment Comment 94 HiLink javaScriptLineComment Comment 95 HiLink javaScriptCommentTodo Todo 96 HiLink javaScriptSpecial Special 97 HiLink javaScriptStringS String 98 HiLink javaScriptStringD String 99 HiLink javaScriptCharacter Character 100 HiLink javaScriptSpecialCharacter javaScriptSpecial 101 HiLink javaScriptNumber javaScriptValue 102 HiLink javaScriptConditional Conditional 103 HiLink javaScriptRepeat Repeat 104 HiLink javaScriptBranch Conditional 105 HiLink javaScriptOperator Operator 106 HiLink javaScriptType Type 107 HiLink javaScriptStatement Statement 108 HiLink javaScriptFunction Function 109 HiLink javaScriptBraces Function 110 HiLink javaScriptError Error 111 HiLink javaScrParenError javaScriptError 112 HiLink javaScriptNull Keyword 113 HiLink javaScriptBoolean Boolean 114 HiLink javaScriptRegexpString String 115 116 HiLink javaScriptIdentifier Identifier 117 HiLink javaScriptLabel Label 118 HiLink javaScriptException Exception 119 HiLink javaScriptMessage Keyword 120 HiLink javaScriptGlobal Keyword 121 HiLink javaScriptMember Keyword 122 HiLink javaScriptDeprecated Exception 123 HiLink javaScriptReserved Keyword 124 HiLink javaScriptDebug Debug 125 HiLink javaScriptConstant Label 126 127 delcommand HiLink 128endif 129 130let b:current_syntax = "javascript" 131if main_syntax == 'javascript' 132 unlet main_syntax 133endif 134 135" vim: ts=8 136