blob: 10bf4db759d91057629d2ea03446dc565e03397e [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: JavaScript
3" Maintainer: Claudio Fleiner <claudio@fleiner.com>
4" URL: http://www.fleiner.com/vim/syntax/javascript.vim
Bram Moolenaarfe3ca8d2005-07-18 21:43:02 +00005" Last Change: 2005 Jul 13
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9" tuning parameters:
10" unlet javaScript_fold
11
12if !exists("main_syntax")
13 if version < 600
14 syntax clear
15 elseif exists("b:current_syntax")
16 finish
17 endif
18 let main_syntax = 'javascript'
19endif
20
21" Drop fold if it set but vim doesn't support it.
22if version < 600 && exists("javaScript_fold")
23 unlet javaScript_fold
24endif
25
26syn case ignore
27
28
29syn keyword javaScriptCommentTodo TODO FIXME XXX TBD contained
30syn match javaScriptLineComment "\/\/.*$" contains=javaScriptCommentTodo
31syn match javaScriptCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
32syn region javaScriptComment start="/\*" end="\*/" contains=javaScriptCommentTodo
33syn match javaScriptSpecial "\\\d\d\d\|\\."
34syn region javaScriptStringD start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=javaScriptSpecial,@htmlPreproc
35syn region javaScriptStringS start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=javaScriptSpecial,@htmlPreproc
36syn match javaScriptSpecialCharacter "'\\.'"
37syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000038syn region javaScriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\?\s*$+ end=+/[gi]\?\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline
39syn keyword javaScriptConditional if else
40syn keyword javaScriptRepeat while for
41syn keyword javaScriptBranch break continue switch case default
42syn keyword javaScriptOperator new in
43syn keyword javaScriptType this var const
44syn keyword javaScriptStatement return with
45syn keyword javaScriptBoolean true false
46syn keyword javaScriptNull null
Bram Moolenaar071d4272004-06-13 20:20:40 +000047
48if exists("javaScript_fold")
49 syn match javaScriptFunction "\<function\>"
50 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
51
52 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
53 syn sync match javaScriptSync grouphere NONE "^}"
54
55 setlocal foldmethod=syntax
56 setlocal foldtext=getline(v:foldstart)
57else
58 syn keyword javaScriptFunction function
59 syn match javaScriptBraces "[{}]"
60endif
61
62syn sync fromstart
63syn sync maxlines=100
64
65" catch errors caused by wrong parenthesis
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000066syn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces,javaScriptFunction,javaScriptFunctionFold,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptBoolean,javaScriptConstant
Bram Moolenaarfe3ca8d2005-07-18 21:43:02 +000067" syn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces
Bram Moolenaar071d4272004-06-13 20:20:40 +000068syn match javaScrParenError ")"
69
70if main_syntax == "javascript"
71 syn sync ccomment javaScriptComment
72endif
73
74" Define the default highlighting.
75" For version 5.7 and earlier: only when not done already
76" For version 5.8 and later: only when an item doesn't have highlighting yet
77if version >= 508 || !exists("did_javascript_syn_inits")
78 if version < 508
79 let did_javascript_syn_inits = 1
80 command -nargs=+ HiLink hi link <args>
81 else
82 command -nargs=+ HiLink hi def link <args>
83 endif
Bram Moolenaar293ee4d2004-12-09 21:34:53 +000084 HiLink javaScriptComment Comment
85 HiLink javaScriptLineComment Comment
86 HiLink javaScriptCommentTodo Todo
87 HiLink javaScriptSpecial Special
88 HiLink javaScriptStringS String
89 HiLink javaScriptStringD String
90 HiLink javaScriptCharacter Character
91 HiLink javaScriptSpecialCharacter javaScriptSpecial
92 HiLink javaScriptNumber javaScriptValue
93 HiLink javaScriptConditional Conditional
94 HiLink javaScriptRepeat Repeat
95 HiLink javaScriptBranch Conditional
96 HiLink javaScriptOperator Operator
97 HiLink javaScriptType Type
98 HiLink javaScriptStatement Statement
99 HiLink javaScriptFunction Function
100 HiLink javaScriptBraces Function
101 HiLink javaScriptError Error
102 HiLink javaScrParenError javaScriptError
103 HiLink javaScriptNull Keyword
104 HiLink javaScriptBoolean Boolean
105 HiLink javaScriptRegexpString String
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106 delcommand HiLink
107endif
108
109let b:current_syntax = "javascript"
110if main_syntax == 'javascript'
111 unlet main_syntax
112endif
113
114" vim: ts=8