blob: b293eb8069ef05b6ebb37006ba1212d7676abe45 [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 Moolenaar00a927d2010-05-14 23:24:24 +020010" Last Change: 2010 Mar 25
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
26" Drop fold if it set but vim doesn't support it.
27if version < 600 && exists("javaScript_fold")
28 unlet javaScript_fold
29endif
30
Bram Moolenaar071d4272004-06-13 20:20:40 +000031
32syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
Bram Moolenaar9964e462007-05-05 17:54:07 +000033syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000034syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
Bram Moolenaar9964e462007-05-05 17:54:07 +000035syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000036syn match javaScriptSpecial "\\\d\d\d\|\\."
Bram Moolenaar00a927d2010-05-14 23:24:24 +020037syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc
38syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc
Bram Moolenaara5792f52005-11-23 21:25:05 +000039
Bram Moolenaar071d4272004-06-13 20:20:40 +000040syn match javaScriptSpecialCharacter "'\\.'"
41syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
Bram Moolenaar9e54a0e2006-04-14 20:42:25 +000042syn 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 +000043
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
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000049syn keyword javaScriptStatement return with
50syn keyword javaScriptBoolean true false
Bram Moolenaara5792f52005-11-23 21:25:05 +000051syn keyword javaScriptNull null undefined
Bram Moolenaar00a927d2010-05-14 23:24:24 +020052syn keyword javaScriptIdentifier arguments this var let
Bram Moolenaara5792f52005-11-23 21:25:05 +000053syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000060
61if exists("javaScript_fold")
Bram Moolenaar00a927d2010-05-14 23:24:24 +020062 syn match javaScriptFunction "\<function\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000063 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
Bram Moolenaar00a927d2010-05-14 23:24:24 +020071 syn keyword javaScriptFunction function
Bram Moolenaara5792f52005-11-23 21:25:05 +000072 syn match javaScriptBraces "[{}\[\]]"
73 syn match javaScriptParens "[()]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000074endif
75
76syn sync fromstart
77syn sync maxlines=100
78
Bram Moolenaar071d4272004-06-13 20:20:40 +000079if 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
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000093 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
Bram Moolenaara5792f52005-11-23 21:25:05 +0000115
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
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127 delcommand HiLink
128endif
129
130let b:current_syntax = "javascript"
131if main_syntax == 'javascript'
132 unlet main_syntax
133endif
134
135" vim: ts=8