blob: a95ecacb0920b638a36fb8a122a2bcfda066e8f4 [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 Moolenaar7dda86f2018-04-20 22:36:41 +020012" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
Bram Moolenaar071d4272004-06-13 20:20:40 +000013
Bram Moolenaar071d4272004-06-13 20:20:40 +000014" tuning parameters:
15" unlet javaScript_fold
16
17if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020018 " quit when a syntax file was already loaded
19 if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000020 finish
21 endif
22 let main_syntax = 'javascript'
Bram Moolenaare2db6952013-07-24 19:53:36 +020023elseif exists("b:current_syntax") && b:current_syntax == "javascript"
24 finish
Bram Moolenaar071d4272004-06-13 20:20:40 +000025endif
26
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020027let s:cpo_save = &cpo
28set cpo&vim
29
Bram Moolenaar071d4272004-06-13 20:20:40 +000030
31syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
Bram Moolenaar9964e462007-05-05 17:54:07 +000032syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000033syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
Bram Moolenaar9964e462007-05-05 17:54:07 +000034syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000035syn match javaScriptSpecial "\\\d\d\d\|\\."
Bram Moolenaar00a927d2010-05-14 23:24:24 +020036syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc
37syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc
Bram Moolenaara5792f52005-11-23 21:25:05 +000038
Bram Moolenaar071d4272004-06-13 20:20:40 +000039syn match javaScriptSpecialCharacter "'\\.'"
40syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
Bram Moolenaar7dda86f2018-04-20 22:36:41 +020041syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
Bram Moolenaara5792f52005-11-23 21:25:05 +000042
43syn keyword javaScriptConditional if else switch
44syn keyword javaScriptRepeat while for do in
45syn keyword javaScriptBranch break continue
46syn keyword javaScriptOperator new delete instanceof typeof
47syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000048syn keyword javaScriptStatement return with
49syn keyword javaScriptBoolean true false
Bram Moolenaara5792f52005-11-23 21:25:05 +000050syn keyword javaScriptNull null undefined
Bram Moolenaar00a927d2010-05-14 23:24:24 +020051syn keyword javaScriptIdentifier arguments this var let
Bram Moolenaara5792f52005-11-23 21:25:05 +000052syn keyword javaScriptLabel case default
53syn keyword javaScriptException try catch finally throw
54syn keyword javaScriptMessage alert confirm prompt status
55syn keyword javaScriptGlobal self window top parent
56syn keyword javaScriptMember document event location
57syn keyword javaScriptDeprecated escape unescape
58syn 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 +000059
60if exists("javaScript_fold")
Bram Moolenaar00a927d2010-05-14 23:24:24 +020061 syn match javaScriptFunction "\<function\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000062 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
63
64 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
65 syn sync match javaScriptSync grouphere NONE "^}"
66
67 setlocal foldmethod=syntax
68 setlocal foldtext=getline(v:foldstart)
69else
Bram Moolenaar00a927d2010-05-14 23:24:24 +020070 syn keyword javaScriptFunction function
Bram Moolenaara5792f52005-11-23 21:25:05 +000071 syn match javaScriptBraces "[{}\[\]]"
72 syn match javaScriptParens "[()]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000073endif
74
75syn sync fromstart
76syn sync maxlines=100
77
Bram Moolenaar071d4272004-06-13 20:20:40 +000078if main_syntax == "javascript"
79 syn sync ccomment javaScriptComment
80endif
81
82" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020083" Only when an item doesn't have highlighting yet
Bram Moolenaarf37506f2016-08-31 22:22:10 +020084hi def link javaScriptComment Comment
85hi def link javaScriptLineComment Comment
86hi def link javaScriptCommentTodo Todo
87hi def link javaScriptSpecial Special
88hi def link javaScriptStringS String
89hi def link javaScriptStringD String
90hi def link javaScriptCharacter Character
91hi def link javaScriptSpecialCharacter javaScriptSpecial
92hi def link javaScriptNumber javaScriptValue
93hi def link javaScriptConditional Conditional
94hi def link javaScriptRepeat Repeat
95hi def link javaScriptBranch Conditional
96hi def link javaScriptOperator Operator
97hi def link javaScriptType Type
98hi def link javaScriptStatement Statement
99hi def link javaScriptFunction Function
100hi def link javaScriptBraces Function
101hi def link javaScriptError Error
102hi def link javaScrParenError javaScriptError
103hi def link javaScriptNull Keyword
104hi def link javaScriptBoolean Boolean
105hi def link javaScriptRegexpString String
Bram Moolenaara5792f52005-11-23 21:25:05 +0000106
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200107hi def link javaScriptIdentifier Identifier
108hi def link javaScriptLabel Label
109hi def link javaScriptException Exception
110hi def link javaScriptMessage Keyword
111hi def link javaScriptGlobal Keyword
112hi def link javaScriptMember Keyword
113hi def link javaScriptDeprecated Exception
114hi def link javaScriptReserved Keyword
115hi def link javaScriptDebug Debug
116hi def link javaScriptConstant Label
Bram Moolenaara5792f52005-11-23 21:25:05 +0000117
Bram Moolenaar071d4272004-06-13 20:20:40 +0000118
119let b:current_syntax = "javascript"
120if main_syntax == 'javascript'
121 unlet main_syntax
122endif
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200123let &cpo = s:cpo_save
124unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125
126" vim: ts=8