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:	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
112