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