blob: 1ab1c2db117a17c11f1b858c92f30754c9a32beb [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 Moolenaardad44732021-03-31 20:07:33 +020010" Last Change: 2021 Mar 30
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 Moolenaar91f84f62018-07-29 15:07:52 +020038syn region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contains=javaScriptSpecial,javaScriptEmbed,@htmlPreproc
39
40syn region javaScriptEmbed start=+${+ end=+}+ contains=@javaScriptEmbededExpr
Bram Moolenaara5792f52005-11-23 21:25:05 +000041
Bram Moolenaar071d4272004-06-13 20:20:40 +000042syn match javaScriptSpecialCharacter "'\\.'"
43syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
Bram Moolenaardad44732021-03-31 20:07:33 +020044syn match javaScriptNumber "-\=\<\d\+\%(_\d\+\)*\>"
Bram Moolenaar91f84f62018-07-29 15:07:52 +020045syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment 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 Moolenaar5be4cee2019-09-27 19:34:08 +020052syn keyword javaScriptStatement return with await
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000053syn 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
Bram Moolenaar5be4cee2019-09-27 19:34:08 +020062syn 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 async
Bram Moolenaar071d4272004-06-13 20:20:40 +000063
Bram Moolenaar91f84f62018-07-29 15:07:52 +020064syn cluster javaScriptEmbededExpr contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT
65
Bram Moolenaar071d4272004-06-13 20:20:40 +000066if exists("javaScript_fold")
Bram Moolenaar00a927d2010-05-14 23:24:24 +020067 syn match javaScriptFunction "\<function\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000068 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
69
70 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
71 syn sync match javaScriptSync grouphere NONE "^}"
72
73 setlocal foldmethod=syntax
74 setlocal foldtext=getline(v:foldstart)
75else
Bram Moolenaar00a927d2010-05-14 23:24:24 +020076 syn keyword javaScriptFunction function
Bram Moolenaara5792f52005-11-23 21:25:05 +000077 syn match javaScriptBraces "[{}\[\]]"
78 syn match javaScriptParens "[()]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000079endif
80
Bram Moolenaar071d4272004-06-13 20:20:40 +000081if main_syntax == "javascript"
Bram Moolenaar388a5d42020-05-26 21:20:45 +020082 syn sync fromstart
83 syn sync maxlines=100
84
Bram Moolenaar071d4272004-06-13 20:20:40 +000085 syn sync ccomment javaScriptComment
86endif
87
88" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020089" Only when an item doesn't have highlighting yet
Bram Moolenaarf37506f2016-08-31 22:22:10 +020090hi def link javaScriptComment Comment
91hi def link javaScriptLineComment Comment
92hi def link javaScriptCommentTodo Todo
93hi def link javaScriptSpecial Special
94hi def link javaScriptStringS String
95hi def link javaScriptStringD String
Bram Moolenaar91f84f62018-07-29 15:07:52 +020096hi def link javaScriptStringT String
Bram Moolenaarf37506f2016-08-31 22:22:10 +020097hi def link javaScriptCharacter Character
98hi def link javaScriptSpecialCharacter javaScriptSpecial
99hi def link javaScriptNumber javaScriptValue
100hi def link javaScriptConditional Conditional
101hi def link javaScriptRepeat Repeat
102hi def link javaScriptBranch Conditional
103hi def link javaScriptOperator Operator
104hi def link javaScriptType Type
105hi def link javaScriptStatement Statement
106hi def link javaScriptFunction Function
107hi def link javaScriptBraces Function
108hi def link javaScriptError Error
109hi def link javaScrParenError javaScriptError
110hi def link javaScriptNull Keyword
111hi def link javaScriptBoolean Boolean
112hi def link javaScriptRegexpString String
Bram Moolenaara5792f52005-11-23 21:25:05 +0000113
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200114hi def link javaScriptIdentifier Identifier
115hi def link javaScriptLabel Label
116hi def link javaScriptException Exception
117hi def link javaScriptMessage Keyword
118hi def link javaScriptGlobal Keyword
119hi def link javaScriptMember Keyword
120hi def link javaScriptDeprecated Exception
121hi def link javaScriptReserved Keyword
122hi def link javaScriptDebug Debug
123hi def link javaScriptConstant Label
Bram Moolenaar91f84f62018-07-29 15:07:52 +0200124hi def link javaScriptEmbed Special
125
Bram Moolenaara5792f52005-11-23 21:25:05 +0000126
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127
128let b:current_syntax = "javascript"
129if main_syntax == 'javascript'
130 unlet main_syntax
131endif
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200132let &cpo = s:cpo_save
133unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000134
135" vim: ts=8