blob: 1b20f987d9b51e584ab297162a65c54ad6d00704 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: JavaScript
3" Maintainer: Claudio Fleiner <claudio@fleiner.com>
Bram Moolenaara5792f52005-11-23 21:25:05 +00004" Updaters: Scott Shattuck (ss) <ss@technicalpursuit.com>
Bram Moolenaar071d4272004-06-13 20:20:40 +00005" URL: http://www.fleiner.com/vim/syntax/javascript.vim
Bram Moolenaara5792f52005-11-23 21:25:05 +00006" 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
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020010" Last Change: 2012 Oct 05
Bram Moolenaarec7944a2013-06-12 21:29:15 +020011" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
13" For version 5.x: Clear all syntax items
14" For version 6.x: Quit when a syntax file was already loaded
15" tuning parameters:
16" unlet javaScript_fold
17
18if !exists("main_syntax")
19 if version < 600
20 syntax clear
21 elseif exists("b:current_syntax")
22 finish
23 endif
24 let main_syntax = 'javascript'
Bram Moolenaare2db6952013-07-24 19:53:36 +020025elseif exists("b:current_syntax") && b:current_syntax == "javascript"
26 finish
Bram Moolenaar071d4272004-06-13 20:20:40 +000027endif
28
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020029let s:cpo_save = &cpo
30set cpo&vim
31
Bram Moolenaar071d4272004-06-13 20:20:40 +000032" Drop fold if it set but vim doesn't support it.
33if version < 600 && exists("javaScript_fold")
34 unlet javaScript_fold
35endif
36
Bram Moolenaar071d4272004-06-13 20:20:40 +000037
38syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
Bram Moolenaar9964e462007-05-05 17:54:07 +000039syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000040syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
Bram Moolenaar9964e462007-05-05 17:54:07 +000041syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000042syn match javaScriptSpecial "\\\d\d\d\|\\."
Bram Moolenaar00a927d2010-05-14 23:24:24 +020043syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc
44syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc
Bram Moolenaara5792f52005-11-23 21:25:05 +000045
Bram Moolenaar071d4272004-06-13 20:20:40 +000046syn match javaScriptSpecialCharacter "'\\.'"
47syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
Bram Moolenaarec7944a2013-06-12 21:29:15 +020048syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gim]\{0,2\}\s*$+ end=+/[gim]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
Bram Moolenaara5792f52005-11-23 21:25:05 +000049
50syn keyword javaScriptConditional if else switch
51syn keyword javaScriptRepeat while for do in
52syn keyword javaScriptBranch break continue
53syn keyword javaScriptOperator new delete instanceof typeof
54syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000055syn keyword javaScriptStatement return with
56syn keyword javaScriptBoolean true false
Bram Moolenaara5792f52005-11-23 21:25:05 +000057syn keyword javaScriptNull null undefined
Bram Moolenaar00a927d2010-05-14 23:24:24 +020058syn keyword javaScriptIdentifier arguments this var let
Bram Moolenaara5792f52005-11-23 21:25:05 +000059syn keyword javaScriptLabel case default
60syn keyword javaScriptException try catch finally throw
61syn keyword javaScriptMessage alert confirm prompt status
62syn keyword javaScriptGlobal self window top parent
63syn keyword javaScriptMember document event location
64syn keyword javaScriptDeprecated escape unescape
65syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
67if exists("javaScript_fold")
Bram Moolenaar00a927d2010-05-14 23:24:24 +020068 syn match javaScriptFunction "\<function\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000069 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
70
71 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
72 syn sync match javaScriptSync grouphere NONE "^}"
73
74 setlocal foldmethod=syntax
75 setlocal foldtext=getline(v:foldstart)
76else
Bram Moolenaar00a927d2010-05-14 23:24:24 +020077 syn keyword javaScriptFunction function
Bram Moolenaara5792f52005-11-23 21:25:05 +000078 syn match javaScriptBraces "[{}\[\]]"
79 syn match javaScriptParens "[()]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000080endif
81
82syn sync fromstart
83syn sync maxlines=100
84
Bram Moolenaar071d4272004-06-13 20:20:40 +000085if main_syntax == "javascript"
86 syn sync ccomment javaScriptComment
87endif
88
89" Define the default highlighting.
90" For version 5.7 and earlier: only when not done already
91" For version 5.8 and later: only when an item doesn't have highlighting yet
92if version >= 508 || !exists("did_javascript_syn_inits")
93 if version < 508
94 let did_javascript_syn_inits = 1
95 command -nargs=+ HiLink hi link <args>
96 else
97 command -nargs=+ HiLink hi def link <args>
98 endif
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000099 HiLink javaScriptComment Comment
100 HiLink javaScriptLineComment Comment
101 HiLink javaScriptCommentTodo Todo
102 HiLink javaScriptSpecial Special
103 HiLink javaScriptStringS String
104 HiLink javaScriptStringD String
105 HiLink javaScriptCharacter Character
106 HiLink javaScriptSpecialCharacter javaScriptSpecial
107 HiLink javaScriptNumber javaScriptValue
108 HiLink javaScriptConditional Conditional
109 HiLink javaScriptRepeat Repeat
110 HiLink javaScriptBranch Conditional
111 HiLink javaScriptOperator Operator
112 HiLink javaScriptType Type
113 HiLink javaScriptStatement Statement
114 HiLink javaScriptFunction Function
115 HiLink javaScriptBraces Function
116 HiLink javaScriptError Error
117 HiLink javaScrParenError javaScriptError
118 HiLink javaScriptNull Keyword
119 HiLink javaScriptBoolean Boolean
120 HiLink javaScriptRegexpString String
Bram Moolenaara5792f52005-11-23 21:25:05 +0000121
122 HiLink javaScriptIdentifier Identifier
123 HiLink javaScriptLabel Label
124 HiLink javaScriptException Exception
125 HiLink javaScriptMessage Keyword
126 HiLink javaScriptGlobal Keyword
127 HiLink javaScriptMember Keyword
128 HiLink javaScriptDeprecated Exception
129 HiLink javaScriptReserved Keyword
130 HiLink javaScriptDebug Debug
131 HiLink javaScriptConstant Label
132
Bram Moolenaar071d4272004-06-13 20:20:40 +0000133 delcommand HiLink
134endif
135
136let b:current_syntax = "javascript"
137if main_syntax == 'javascript'
138 unlet main_syntax
139endif
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200140let &cpo = s:cpo_save
141unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000142
143" vim: ts=8