3 " Maintainer: Yi Zhao <zzlinux AT hotmail DOT com>
4 " Last Change: 2006 March 20
6 " Based On: javascript.vim from Claudio Fleiner <claudio@fleiner.com>
7 " Changes: export @htmlJavaScript to html.vim
10 " - internal function hightlight
13 if !exists("main_syntax")
16 elseif exists("b:current_syntax")
19 let main_syntax = 'javascript'
22 " Drop fold if it set but vim doesn't support it.
23 if version < 600 && exists("javaScript_fold")
26 " let javaScript_fold = 'true'
31 syntax match jsSpecial "\\\d\d\d\|\\x[0-9a-fA-F]\{2\}\|\\u[0-9a-fA-F]\{4\}\|\\."
32 syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc
33 syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc
34 syntax region jsRegexpString start=+/\(\*\|/\)\@!+ skip=+\\\\\|\\/+ end=+/[gim]*\(\s*[),.;$]\)\@=+ contains=jsSpecial,@htmlPreproc oneline
35 syntax match jsNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
37 syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
38 syntax region jsLineComment start=+\/\/+ end=/$/ contains=jsCommentTodo oneline
39 syntax region jsComment start="/\*" end="\*/" contains=jsCommentTodo,jsLineComment fold
41 syntax match jsLabel /\(?\s*\)\@<!\<\w\+\(\s*:\)\@=/
44 syntax keyword jsSource import export
45 syntax keyword jsType this var const void
46 syntax keyword jsOperator delete new in instanceof typeof
47 syntax keyword jsBoolean true false
48 syntax keyword jsNull null
51 syntax keyword jsConditional if else
52 syntax keyword jsRepeat do while for
53 syntax keyword jsBranch break continue switch case default return
54 syntax keyword jsStatement try catch throw with
56 syntax keyword jsGlobalObjects Array Boolean Date Error Function java JavaArray JavaClass JavaObject JavaPackage Math netscape Number Object Packages RegExp String sun
59 syntax sync maxlines=100
62 syntax cluster jsAll contains=jsComment,jsLineComment,jsSpecial,jsStringD,jsStringS,jsNumber,jsRegexpString,jsBoolean,jsFunction,jsConditional,jsRepeat,jsBranch,jsOperator,jsType,jsStatement,jsBoolean,jsGlobalObjects
63 syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsBracket,jsParen,jsBlock
64 syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParen,jsBracket,jsBlock
65 syntax region jsBlock matchgroup=jsBlcok transparent start="{" end="}" contains=ALL
67 " catch errors caused by wrong parenthesis
68 syntax match jsParenError ")\|}\|\]"
70 if main_syntax == "javascript"
71 syntax sync ccomment jsComment
74 if exists("javaScript_fold")
75 syntax match jsFunction /\<function\>/
76 syntax match jsFuncFoldStart /\([=:^]\s*\)\@<=\<function\>\(\s*\w*\s*\)\@=/ nextgroup=jsFuncFoldParen skipwhite fold
77 syntax region jsFuncFoldParen start="(" end=")" contained nextgroup=jsFuncBlock skipwhite contains=@jsAll,jsParen fold
78 syntax region jsFuncFoldBlock start="{" end="}\([\s;]*$\)\@=" skipwhite contains=ALL contained fold
80 syntax sync match jsSync grouphere jsFuncFoldBlock "\<function\>"
81 syntax sync match jsSync grouphere NONE "^}"
83 setlocal foldmethod=syntax
84 setlocal foldtext=getline(v:foldstart)
86 syntax keyword jsFunction function
89 " Define the default highlighting.
90 " For version 5.7 and earlier: only when not done already
91 " For version 5.8 and later: only when an item doesn't have highlighting yet
92 if version >= 508 || !exists("did_javascript_syn_inits")
94 let did_javascript_syn_inits = 1
95 command -nargs=+ HiLink hi link <args>
97 command -nargs=+ HiLink hi def link <args>
99 HiLink jsComment Comment
100 HiLink jsLineComment Comment
101 HiLink jsCommentTodo Todo
102 HiLink jsStringS String
103 HiLink jsStringD String
104 HiLink jsRegexpString String
105 HiLink jsCharacter Character
106 HiLink jsConditional Conditional
107 HiLink jsBranch Conditional
108 HiLink jsRepeat Repeat
109 HiLink jsStatement Statement
110 HiLink jsFunction Function
111 HiLink jsBlock Function
113 HiLink jsParenError Error
114 HiLink jsOperator Operator
117 HiLink jsNumber Number
118 HiLink jsBoolean Boolean
120 HiLink jsSpecial Special
121 HiLink jsSource Special
122 HiLink jsGlobalObjects Special
126 " Define the htmlJavaScript for HTML syntax html.vim
127 syntax cluster htmlJavaScript contains=@jsAll,jsBracket,jsParen,jsBlock,jsParenError
128 " Removing javaScriptExpression, while it didn't work because we are loaded first.
129 "syntax clear javaScriptExpression
131 let b:current_syntax = "javascript"
132 if main_syntax == 'javascript'