blob: a037496bb29fff75631869226db475749123460f [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
5" Last Change: 2004 May 16
6
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]\+\>"
38syn region javaScriptRegexpString start=+/+ 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
46
47if exists("javaScript_fold")
48 syn match javaScriptFunction "\<function\>"
49 syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
50
51 syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
52 syn sync match javaScriptSync grouphere NONE "^}"
53
54 setlocal foldmethod=syntax
55 setlocal foldtext=getline(v:foldstart)
56else
57 syn keyword javaScriptFunction function
58 syn match javaScriptBraces "[{}]"
59endif
60
61syn sync fromstart
62syn sync maxlines=100
63
64" catch errors caused by wrong parenthesis
65syn region javaScriptParen transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces
66syn match javaScrParenError ")"
67
68if main_syntax == "javascript"
69 syn sync ccomment javaScriptComment
70endif
71
72" Define the default highlighting.
73" For version 5.7 and earlier: only when not done already
74" For version 5.8 and later: only when an item doesn't have highlighting yet
75if version >= 508 || !exists("did_javascript_syn_inits")
76 if version < 508
77 let did_javascript_syn_inits = 1
78 command -nargs=+ HiLink hi link <args>
79 else
80 command -nargs=+ HiLink hi def link <args>
81 endif
82 HiLink javaScriptComment Comment
83 HiLink javaScriptLineComment Comment
84 HiLink javaScriptCommentTodo Todo
85 HiLink javaScriptSpecial Special
86 HiLink javaScriptStringS String
87 HiLink javaScriptStringD String
88 HiLink javaScriptCharacter Character
89 HiLink javaScriptSpecialCharacter javaScriptSpecial
90 HiLink javaScriptNumber javaScriptValue
91 HiLink javaScriptConditional Conditional
92 HiLink javaScriptRepeat Repeat
93 HiLink javaScriptBranch Conditional
94 HiLink javaScriptOperator Operator
95 HiLink javaScriptType Type
96 HiLink javaScriptStatement Statement
97 HiLink javaScriptFunction Function
98 HiLink javaScriptBraces Function
99 HiLink javaScriptError Error
100 HiLink javaScrParenError javaScriptError
101 HiLink javaScriptBoolean Boolean
102 HiLink javaScriptRegexpString String
103 delcommand HiLink
104endif
105
106let b:current_syntax = "javascript"
107if main_syntax == 'javascript'
108 unlet main_syntax
109endif
110
111" vim: ts=8