3 " Maintainer: Yi Zhao <zzlinux AT hotmail DOT com>
4 " Last Change: 2006 March 10
6 " Based On: javascript.vim from Claudio Fleiner <claudio@fleiner.com>
7 " Changes: Include all JavaScript Global Objects; and jsLabel support
10 " - internal function hightlight
14 if !exists("main_syntax")
17 elseif exists("b:current_syntax")
20 let main_syntax = 'javascript'
23 " Drop fold if it set but vim doesn't support it.
24 if version < 600 && exists("javaScript_fold")
30 syntax match jsSpecial "\\\d\d\d\|\\."
31 syntax region jsStringD start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=jsSpecial,@htmlPreproc
32 syntax region jsStringS start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=jsSpecial,@htmlPreproc
33 syntax region jsRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\?\s*$+ end=+/[gi]\?\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline
34 syntax match jsNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
36 syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
37 syntax region jsLineComment start=+\/\/+ end=/$/ contains=jsCommentTodo oneline
38 syntax region jsComment start="/\*" end="\*/" contains=jsCommentTodo,jsLineComment
40 syntax match jsLabel /\(?\s*\)\@<!\w\+\(\s*:\)\@=/
43 syntax keyword jsSource import export
44 syntax keyword jsType this var const void
45 syntax keyword jsOperator delete new in instanceof typeof
46 syntax keyword jsBoolean true false
47 syntax keyword jsNull null
50 syntax keyword jsConditional if else
51 syntax keyword jsRepeat while for
52 syntax keyword jsBranch break continue switch case default return
53 syntax keyword jsStatement try catch throw with
55 syntax keyword jsGlobalObjects Array Boolean Date Error Function java JavaArray JavaClass JavaObject JavaPackage Math netscape Number Object Packages RegExp String sun
57 if exists("javaScript_fold")
58 syntax match jsFunction "\<function\>"
59 syntax region jsFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
61 syntax sync match jsSync grouphere jsFunctionFold "\<function\>"
62 syntax sync match jsSync grouphere NONE "^}"
64 setlocal foldmethod=syntax
65 setlocal foldtext=getline(v:foldstart)
67 syntax keyword jsFunction function
71 syntax sync maxlines=100
74 syntax cluster jsAll contains=jsComment,jsSpecial,jsStringD,jsStringS,jsNumber,jsRegexpString,jsBoolean,jsFunction,jsFunctionFold,jsConditional,jsRepeat,jsBranch,jsOperator,jsType,jsStatement,jsBoolean,jsGlobalObjects
75 syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsBracket,jsParen,jsBlock
76 syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParen,jsBracket,jsBlock
77 syntax region jsBlock matchgroup=jsBlcok transparent start="{" end="}" contains=ALL
79 " catch errors caused by wrong parenthesis
80 syntax match jsParenError ")\|}\|\]"
82 if main_syntax == "javascript"
83 syntax sync ccomment jsComment
86 " Define the default highlighting.
87 " For version 5.7 and earlier: only when not done already
88 " For version 5.8 and later: only when an item doesn't have highlighting yet
89 if version >= 508 || !exists("did_javascript_syn_inits")
91 let did_javascript_syn_inits = 1
92 command -nargs=+ HiLink hi link <args>
94 command -nargs=+ HiLink hi def link <args>
96 HiLink jsComment Comment
97 HiLink jsLineComment Comment
98 HiLink jsCommentTodo Todo
99 HiLink jsStringS String
100 HiLink jsStringD String
101 HiLink jsRegexpString String
102 HiLink jsCharacter Character
103 HiLink jsConditional Conditional
104 HiLink jsBranch Conditional
105 HiLink jsRepeat Repeat
106 HiLink jsStatement Statement
107 HiLink jsFunction Function
108 HiLink jsBlock Function
110 HiLink jsParenError Error
111 HiLink jsOperator Operator
114 HiLink jsNumber Number
115 HiLink jsBoolean Boolean
117 HiLink jsSpecial Special
118 HiLink jsSource Special
119 HiLink jsGlobalObjects Special
123 let b:current_syntax = "javascript"
124 if main_syntax == 'javascript'