blob: 8bf677bf5f83b5db0405d510fece0cfd3dde8b4e [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 Moolenaar071d4272004-06-13 20:20:40 +000011
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
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020026let s:cpo_save = &cpo
27set cpo&vim
28
Bram Moolenaar071d4272004-06-13 20:20:40 +000029" Drop fold if it set but vim doesn't support it.
30if version < 600 && exists("javaScript_fold")
31 unlet javaScript_fold
32endif
33
Bram Moolenaar071d4272004-06-13 20:20:40 +000034
35syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
Bram Moolenaar9964e462007-05-05 17:54:07 +000036syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000037syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
Bram Moolenaar9964e462007-05-05 17:54:07 +000038syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000039syn match javaScriptSpecial "\\\d\d\d\|\\."
Bram Moolenaar00a927d2010-05-14 23:24:24 +020040syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc
41syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc
Bram Moolenaara5792f52005-11-23 21:25:05 +000042
Bram Moolenaar071d4272004-06-13 20:20:40 +000043syn match javaScriptSpecialCharacter "'\\.'"
44syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +000045syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
Bram Moolenaara5792f52005-11-23 21:25:05 +000046
47syn keyword javaScriptConditional if else switch
48syn keyword javaScriptRepeat while for do in
49syn keyword javaScriptBranch break continue
50syn keyword javaScriptOperator new delete instanceof typeof
51syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000052syn keyword javaScriptStatement return with
53syn keyword javaScriptBoolean true false
Bram Moolenaara5792f52005-11-23 21:25:05 +000054syn keyword javaScriptNull null undefined
Bram Moolenaar00a927d2010-05-14 23:24:24 +020055syn keyword javaScriptIdentifier arguments this var let
Bram Moolenaara5792f52005-11-23 21:25:05 +000056syn keyword javaScriptLabel case default
57syn keyword javaScriptException try catch finally throw
58syn keyword javaScriptMessage alert confirm prompt status
59syn keyword javaScriptGlobal self window top parent
60syn keyword javaScriptMember document event location
61syn keyword javaScriptDeprecated escape unescape
62syn 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 +000063
64if exists("javaScript_fold")
Bram Moolenaar00a927d2010-05-14 23:24:24 +020065 syn match javaScriptFunction "\<function\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000066 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
67
68 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
69 syn sync match javaScriptSync grouphere NONE "^}"
70
71 setlocal foldmethod=syntax
72 setlocal foldtext=getline(v:foldstart)
73else
Bram Moolenaar00a927d2010-05-14 23:24:24 +020074 syn keyword javaScriptFunction function
Bram Moolenaara5792f52005-11-23 21:25:05 +000075 syn match javaScriptBraces "[{}\[\]]"
76 syn match javaScriptParens "[()]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000077endif
78
79syn sync fromstart
80syn sync maxlines=100
81
Bram Moolenaar071d4272004-06-13 20:20:40 +000082if main_syntax == "javascript"
83 syn sync ccomment javaScriptComment
84endif
85
86" Define the default highlighting.
87" For version 5.7 and earlier: only when not done already
88" For version 5.8 and later: only when an item doesn't have highlighting yet
89if version >= 508 || !exists("did_javascript_syn_inits")
90 if version < 508
91 let did_javascript_syn_inits = 1
92 command -nargs=+ HiLink hi link <args>
93 else
94 command -nargs=+ HiLink hi def link <args>
95 endif
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000096 HiLink javaScriptComment Comment
97 HiLink javaScriptLineComment Comment
98 HiLink javaScriptCommentTodo Todo
99 HiLink javaScriptSpecial Special
100 HiLink javaScriptStringS String
101 HiLink javaScriptStringD String
102 HiLink javaScriptCharacter Character
103 HiLink javaScriptSpecialCharacter javaScriptSpecial
104 HiLink javaScriptNumber javaScriptValue
105 HiLink javaScriptConditional Conditional
106 HiLink javaScriptRepeat Repeat
107 HiLink javaScriptBranch Conditional
108 HiLink javaScriptOperator Operator
109 HiLink javaScriptType Type
110 HiLink javaScriptStatement Statement
111 HiLink javaScriptFunction Function
112 HiLink javaScriptBraces Function
113 HiLink javaScriptError Error
114 HiLink javaScrParenError javaScriptError
115 HiLink javaScriptNull Keyword
116 HiLink javaScriptBoolean Boolean
117 HiLink javaScriptRegexpString String
Bram Moolenaara5792f52005-11-23 21:25:05 +0000118
119 HiLink javaScriptIdentifier Identifier
120 HiLink javaScriptLabel Label
121 HiLink javaScriptException Exception
122 HiLink javaScriptMessage Keyword
123 HiLink javaScriptGlobal Keyword
124 HiLink javaScriptMember Keyword
125 HiLink javaScriptDeprecated Exception
126 HiLink javaScriptReserved Keyword
127 HiLink javaScriptDebug Debug
128 HiLink javaScriptConstant Label
129
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130 delcommand HiLink
131endif
132
133let b:current_syntax = "javascript"
134if main_syntax == 'javascript'
135 unlet main_syntax
136endif
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200137let &cpo = s:cpo_save
138unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139
140" vim: ts=8