1" Vim syntax file
2" Language:	JavaScript
3" Maintainer:	Claudio Fleiner <[email protected]>
4" URL:		http://www.fleiner.com/vim/syntax/javascript.vim
5" Last Change:	2005 Jul 13
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=+/[^/*]+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
47
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
66syn 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
67" syn region  javaScriptParen       transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces
68syn 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
84  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
106  delcommand HiLink
107endif
108
109let b:current_syntax = "javascript"
110if main_syntax == 'javascript'
111  unlet main_syntax
112endif
113
114" vim: ts=8
115