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
12 " For version 5.x: Clear all syntax items
13 " For version 6.x: Quit when a syntax file was already loaded
15 " unlet javaScript_fold
17 if !exists("main_syntax")
20 elseif exists("b:current_syntax")
23 let main_syntax = 'javascript'
26 " Drop fold if it set but vim doesn't support it.
27 if version < 600 && exists("javaScript_fold")
31 syn region javaScriptTpl start=+<@+ms=b end=+@>+me=e contains=javaScriptCommentTodo,javaScriptLineComment,javaScriptCommentSkip,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptLabel,javaScriptException,javaScriptMessage,javaScriptGlobal,javaScriptMember,javaScriptDeprecated,javaScriptReserved,javaScriptTplMark keepend
32 syn match javaScriptTplMark "\(<@[=#]\?\|@>\)" contained
33 syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
34 syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
35 syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
36 syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo
37 syn match javaScriptSpecial "\\\d\d\d\|\\."
38 syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc,javaScriptTplMark
39 syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc,javaScriptTplMark
41 syn match javaScriptSpecialCharacter "'\\.'"
42 syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
43 syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
45 syn keyword javaScriptConditional if else switch
46 syn keyword javaScriptRepeat while for do in
47 syn keyword javaScriptBranch break continue
48 syn keyword javaScriptOperator new delete instanceof typeof
49 syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp
50 syn keyword javaScriptStatement return with
51 syn keyword javaScriptBoolean true false
52 syn keyword javaScriptNull null undefined
53 syn keyword javaScriptIdentifier arguments this var let const
54 syn keyword javaScriptLabel case default
55 syn keyword javaScriptException try catch finally throw
56 syn keyword javaScriptMessage alert confirm prompt status
57 syn keyword javaScriptGlobal self window top parent
58 syn keyword javaScriptMember document event location
59 syn keyword javaScriptDeprecated escape unescape
60 syn 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
62 if exists("javaScript_fold")
63 syn match javaScriptFunction "\<function\>"
64 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
66 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
67 syn sync match javaScriptSync grouphere NONE "^}"
69 setlocal foldmethod=syntax
70 setlocal foldtext=getline(v:foldstart)
72 syn keyword javaScriptFunction function
73 syn match javaScriptBraces "[{}\[\]]"
74 syn match javaScriptParens "[()]"
80 if main_syntax == "javascript"
81 syn sync ccomment javaScriptComment
84 " Define the default highlighting.
85 " For version 5.7 and earlier: only when not done already
86 " For version 5.8 and later: only when an item doesn't have highlighting yet
87 if version >= 508 || !exists("did_javascript_syn_inits")
89 let did_javascript_syn_inits = 1
90 command -nargs=+ HiLink hi link <args>
92 command -nargs=+ HiLink hi def link <args>
94 HiLink javaScriptComment Comment
95 HiLink javaScriptLineComment Comment
96 HiLink javaScriptCommentTodo Todo
97 HiLink javaScriptSpecial Special
98 HiLink javaScriptStringS String
99 HiLink javaScriptStringD String
100 HiLink javaScriptCharacter Character
101 HiLink javaScriptSpecialCharacter javaScriptSpecial
102 HiLink javaScriptNumber javaScriptValue
103 HiLink javaScriptConditional Conditional
104 HiLink javaScriptRepeat Repeat
105 HiLink javaScriptBranch Conditional
106 HiLink javaScriptOperator Operator
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
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
130 let b:current_syntax = "javascript"
131 if main_syntax == 'javascript'