blob: e3e8262d39e864f51b85b022853cbd75efdfb4bc [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
Bram Moolenaar071d4272004-06-13 20:20:40 +000013" tuning parameters:
14" unlet javaScript_fold
15
16if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020017 " quit when a syntax file was already loaded
18 if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000019 finish
20 endif
21 let main_syntax = 'javascript'
Bram Moolenaare2db6952013-07-24 19:53:36 +020022elseif exists("b:current_syntax") && b:current_syntax == "javascript"
23 finish
Bram Moolenaar071d4272004-06-13 20:20:40 +000024endif
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
30syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
Bram Moolenaar9964e462007-05-05 17:54:07 +000031syn match javaScriptLineComment "\/\/.*" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000032syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
Bram Moolenaar9964e462007-05-05 17:54:07 +000033syn region javaScriptComment start="/\*" end="\*/" contains=@Spell,javaScriptCommentTodo
Bram Moolenaar071d4272004-06-13 20:20:40 +000034syn match javaScriptSpecial "\\\d\d\d\|\\."
Bram Moolenaar00a927d2010-05-14 23:24:24 +020035syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ contains=javaScriptSpecial,@htmlPreproc
36syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'\|$+ contains=javaScriptSpecial,@htmlPreproc
Bram Moolenaara5792f52005-11-23 21:25:05 +000037
Bram Moolenaar071d4272004-06-13 20:20:40 +000038syn match javaScriptSpecialCharacter "'\\.'"
39syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
Bram Moolenaarec7944a2013-06-12 21:29:15 +020040syn 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 +000041
42syn keyword javaScriptConditional if else switch
43syn keyword javaScriptRepeat while for do in
44syn keyword javaScriptBranch break continue
45syn keyword javaScriptOperator new delete instanceof typeof
46syn keyword javaScriptType Array Boolean Date Function Number Object String RegExp
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000047syn keyword javaScriptStatement return with
48syn keyword javaScriptBoolean true false
Bram Moolenaara5792f52005-11-23 21:25:05 +000049syn keyword javaScriptNull null undefined
Bram Moolenaar00a927d2010-05-14 23:24:24 +020050syn keyword javaScriptIdentifier arguments this var let
Bram Moolenaara5792f52005-11-23 21:25:05 +000051syn keyword javaScriptLabel case default
52syn keyword javaScriptException try catch finally throw
53syn keyword javaScriptMessage alert confirm prompt status
54syn keyword javaScriptGlobal self window top parent
55syn keyword javaScriptMember document event location
56syn keyword javaScriptDeprecated escape unescape
57syn 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 +000058
59if exists("javaScript_fold")
Bram Moolenaar00a927d2010-05-14 23:24:24 +020060 syn match javaScriptFunction "\<function\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000061 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
62
63 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
64 syn sync match javaScriptSync grouphere NONE "^}"
65
66 setlocal foldmethod=syntax
67 setlocal foldtext=getline(v:foldstart)
68else
Bram Moolenaar00a927d2010-05-14 23:24:24 +020069 syn keyword javaScriptFunction function
Bram Moolenaara5792f52005-11-23 21:25:05 +000070 syn match javaScriptBraces "[{}\[\]]"
71 syn match javaScriptParens "[()]"
Bram Moolenaar071d4272004-06-13 20:20:40 +000072endif
73
74syn sync fromstart
75syn sync maxlines=100
76
Bram Moolenaar071d4272004-06-13 20:20:40 +000077if main_syntax == "javascript"
78 syn sync ccomment javaScriptComment
79endif
80
81" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020082" Only when an item doesn't have highlighting yet
83command -nargs=+ HiLink hi def link <args>
84HiLink javaScriptComment Comment
85HiLink javaScriptLineComment Comment
86HiLink javaScriptCommentTodo Todo
87HiLink javaScriptSpecial Special
88HiLink javaScriptStringS String
89HiLink javaScriptStringD String
90HiLink javaScriptCharacter Character
91HiLink javaScriptSpecialCharacter javaScriptSpecial
92HiLink javaScriptNumber javaScriptValue
93HiLink javaScriptConditional Conditional
94HiLink javaScriptRepeat Repeat
95HiLink javaScriptBranch Conditional
96HiLink javaScriptOperator Operator
97HiLink javaScriptType Type
98HiLink javaScriptStatement Statement
99HiLink javaScriptFunction Function
100HiLink javaScriptBraces Function
101HiLink javaScriptError Error
102HiLink javaScrParenError javaScriptError
103HiLink javaScriptNull Keyword
104HiLink javaScriptBoolean Boolean
105HiLink javaScriptRegexpString String
Bram Moolenaara5792f52005-11-23 21:25:05 +0000106
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200107HiLink javaScriptIdentifier Identifier
108HiLink javaScriptLabel Label
109HiLink javaScriptException Exception
110HiLink javaScriptMessage Keyword
111HiLink javaScriptGlobal Keyword
112HiLink javaScriptMember Keyword
113HiLink javaScriptDeprecated Exception
114HiLink javaScriptReserved Keyword
115HiLink javaScriptDebug Debug
116HiLink javaScriptConstant Label
Bram Moolenaara5792f52005-11-23 21:25:05 +0000117
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200118delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000119
120let b:current_syntax = "javascript"
121if main_syntax == 'javascript'
122 unlet main_syntax
123endif
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200124let &cpo = s:cpo_save
125unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126
127" vim: ts=8