1" Vim syntax file
2" Language:	Groovy
3" Maintainer:	Alessio Pace <billy.corgan@tiscali.it>
4" Version: 	0.1.9b
5" URL:	  http://www.vim.org/scripts/script.php?script_id=945	
6" Last Change:	6/4/2004
7
8" This is my very first vim script, I hope to have
9" done it the right way.
10" 
11" I must directly or indirectly thank the author of java.vim and ruby.vim:
12" I copied from them most of the stuff :-)
13"
14" Relies on html.vim
15
16" For version 5.x: Clear all syntax items
17" For version 6.x: Quit when a syntax file was already loaded
18"
19" HOWTO USE IT (INSTALL):
20" [groovy is still not recognized by vim! :-( ]
21"
22" 1) copy the file in the (global or user's $HOME/.vim/syntax/) syntax folder
23" 
24" 2) add this line to recognize groovy files by filename extension:
25"
26" au BufNewFile,BufRead *.groovy  setf groovy
27" in the global vim filetype.vim file or inside $HOME/.vim/filetype.vim
28"
29" 3) add this part to recognize by content groovy script (no extension needed :-)
30"
31"  if did_filetype()
32"    finish
33"  endif
34"  if getline(1) =~ '^#!.*[/\\]groovy\>'
35"    setf groovy
36"  endif
37"
38"  in the global scripts.vim file or in $HOME/.vim/scripts.vim
39" 
40" 4) open/write a .groovy file or a groovy script :-)
41"
42" Let me know if you like it or send me patches, so that I can improve it
43" when I have time
44
45" Quit when a syntax file was already loaded
46if !exists("main_syntax")
47  if version < 600
48    syntax clear
49  elseif exists("b:current_syntax")
50    finish
51  endif
52  " we define it here so that included files can test for it
53  let main_syntax='groovy'
54endif
55
56" don't use standard HiLink, it will not work with included syntax files
57if version < 508
58  command! -nargs=+ GroovyHiLink hi link <args>
59else
60  command! -nargs=+ GroovyHiLink hi def link <args>
61endif
62
63" ##########################
64" Java stuff taken from java.vim
65" some characters that cannot be in a groovy program (outside a string)
66" syn match groovyError "[\\@`]"
67"syn match groovyError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
68"syn match groovyOK "\.\.\."
69
70" keyword definitions
71syn keyword groovyExternal        native package
72syn match groovyExternal          "\<import\(\s\+static\>\)\?"
73syn keyword groovyError           goto const
74syn keyword groovyConditional     if else switch
75syn keyword groovyRepeat          while for do
76syn keyword groovyBoolean         true false
77syn keyword groovyConstant        null
78syn keyword groovyTypedef         this super
79syn keyword groovyOperator        new instanceof
80syn keyword groovyType            boolean char byte short int long float double
81syn keyword groovyType            void
82syn keyword groovyType		  Integer Double Date Boolean Float String Array Vector List
83syn keyword groovyStatement       return
84syn keyword groovyStorageClass    static synchronized transient volatile final strictfp serializable
85syn keyword groovyExceptions      throw try catch finally
86syn keyword groovyAssert          assert
87syn keyword groovyMethodDecl      synchronized throws
88syn keyword groovyClassDecl       extends implements interface
89" to differentiate the keyword class from MyClass.class we use a match here
90syn match   groovyTypedef         "\.\s*\<class\>"ms=s+1
91syn keyword groovyClassDecl         enum
92syn match   groovyClassDecl       "^class\>"
93syn match   groovyClassDecl       "[^.]\s*\<class\>"ms=s+1
94syn keyword groovyBranch          break continue nextgroup=groovyUserLabelRef skipwhite
95syn match   groovyUserLabelRef    "\k\+" contained
96syn keyword groovyScopeDecl       public protected private abstract
97
98
99if exists("groovy_highlight_groovy_lang_ids") || exists("groovy_highlight_groovy_lang") || exists("groovy_highlight_all")
100  " groovy.lang.*
101  syn keyword groovyLangClass  Closure MetaMethod GroovyObject
102  
103  syn match groovyJavaLangClass "\<System\>"
104  syn keyword groovyJavaLangClass  Cloneable Comparable Runnable Serializable Boolean Byte Class Object
105  syn keyword groovyJavaLangClass  Character CharSequence ClassLoader Compiler
106  " syn keyword groovyJavaLangClass  Integer Double Float Long 
107  syn keyword groovyJavaLangClass  InheritableThreadLocal Math Number Object Package Process
108  syn keyword groovyJavaLangClass  Runtime RuntimePermission InheritableThreadLocal
109  syn keyword groovyJavaLangClass  SecurityManager Short StrictMath StackTraceElement
110  syn keyword groovyJavaLangClass  StringBuffer Thread ThreadGroup
111  syn keyword groovyJavaLangClass  ThreadLocal Throwable Void ArithmeticException
112  syn keyword groovyJavaLangClass  ArrayIndexOutOfBoundsException AssertionError
113  syn keyword groovyJavaLangClass  ArrayStoreException ClassCastException
114  syn keyword groovyJavaLangClass  ClassNotFoundException
115  syn keyword groovyJavaLangClass  CloneNotSupportedException Exception
116  syn keyword groovyJavaLangClass  IllegalAccessException
117  syn keyword groovyJavaLangClass  IllegalArgumentException
118  syn keyword groovyJavaLangClass  IllegalMonitorStateException
119  syn keyword groovyJavaLangClass  IllegalStateException
120  syn keyword groovyJavaLangClass  IllegalThreadStateException
121  syn keyword groovyJavaLangClass  IndexOutOfBoundsException
122  syn keyword groovyJavaLangClass  InstantiationException InterruptedException
123  syn keyword groovyJavaLangClass  NegativeArraySizeException NoSuchFieldException
124  syn keyword groovyJavaLangClass  NoSuchMethodException NullPointerException
125  syn keyword groovyJavaLangClass  NumberFormatException RuntimeException
126  syn keyword groovyJavaLangClass  SecurityException StringIndexOutOfBoundsException
127  syn keyword groovyJavaLangClass  UnsupportedOperationException
128  syn keyword groovyJavaLangClass  AbstractMethodError ClassCircularityError
129  syn keyword groovyJavaLangClass  ClassFormatError Error ExceptionInInitializerError
130  syn keyword groovyJavaLangClass  IllegalAccessError InstantiationError
131  syn keyword groovyJavaLangClass  IncompatibleClassChangeError InternalError
132  syn keyword groovyJavaLangClass  LinkageError NoClassDefFoundError
133  syn keyword groovyJavaLangClass  NoSuchFieldError NoSuchMethodError
134  syn keyword groovyJavaLangClass  OutOfMemoryError StackOverflowError
135  syn keyword groovyJavaLangClass  ThreadDeath UnknownError UnsatisfiedLinkError
136  syn keyword groovyJavaLangClass  UnsupportedClassVersionError VerifyError
137  syn keyword groovyJavaLangClass  VirtualMachineError
138
139  syn keyword groovyJavaLangObject clone equals finalize getClass hashCode
140  syn keyword groovyJavaLangObject notify notifyAll toString wait
141
142  GroovyHiLink groovyLangClass                   groovyConstant
143  GroovyHiLink groovyJavaLangClass               groovyExternal
144  GroovyHiLink groovyJavaLangObject              groovyConstant
145  syn cluster groovyTop add=groovyJavaLangObject,groovyJavaLangClass,groovyLangClass
146  syn cluster groovyClasses add=groovyJavaLangClass,groovyLangClass
147endif
148
149
150" Groovy stuff
151syn match groovyOperator "\.\."
152syn match groovyOperator "<\{2,3}"
153syn match groovyOperator ">\{2,3}"
154syn match groovyOperator "->"
155syn match groovyExternal		'^#!.*[/\\]groovy\>'
156syn match groovyExceptions        "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
157
158" Groovy JDK stuff
159syn keyword groovyJDKBuiltin    as def in
160syn keyword groovyJDKOperOverl  div minus plus abs round power multiply 
161syn keyword groovyJDKMethods 	each call inject sort print println 
162syn keyword groovyJDKMethods    getAt putAt size push pop toList getText writeLine eachLine readLines
163syn keyword groovyJDKMethods    withReader withStream withWriter withPrintWriter write read leftShift 
164syn keyword groovyJDKMethods    withWriterAppend readBytes splitEachLine
165syn keyword groovyJDKMethods    newInputStream newOutputStream newPrintWriter newReader newWriter 
166syn keyword groovyJDKMethods    compareTo next previous isCase 
167syn keyword groovyJDKMethods    times step toInteger upto any collect dump every find findAll grep
168syn keyword groovyJDKMethods    inspect invokeMethods join 
169syn keyword groovyJDKMethods    getErr getIn getOut waitForOrKill
170syn keyword groovyJDKMethods    count tokenize asList flatten immutable intersect reverse reverseEach
171syn keyword groovyJDKMethods    subMap append asWritable eachByte eachLine eachFile 
172syn cluster groovyTop add=groovyJDKBuiltin,groovyJDKOperOverl,groovyJDKMethods
173
174" no useful I think, so I comment it..
175"if filereadable(expand("<sfile>:p:h")."/groovyid.vim")
176 " source <sfile>:p:h/groovyid.vim
177"endif
178
179if exists("groovy_space_errors")
180  if !exists("groovy_no_trail_space_error")
181    syn match   groovySpaceError  "\s\+$"
182  endif
183  if !exists("groovy_no_tab_space_error")
184    syn match   groovySpaceError  " \+\t"me=e-1
185  endif
186endif
187
188" it is a better case construct than java.vim to match groovy syntax
189syn region  groovyLabelRegion     transparent matchgroup=groovyLabel start="\<case\>" matchgroup=NONE end=":\|$" contains=groovyNumber,groovyString,groovyLangClass,groovyJavaLangClass
190syn match   groovyUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=groovyLabel
191syn keyword groovyLabel           default
192
193if !exists("groovy_allow_cpp_keywords")
194  syn keyword groovyError auto delete extern friend inline redeclared
195  syn keyword groovyError register signed sizeof struct template typedef union
196  syn keyword groovyError unsigned operator
197endif
198
199" The following cluster contains all groovy groups except the contained ones
200syn cluster groovyTop add=groovyExternal,groovyError,groovyError,groovyBranch,groovyLabelRegion,groovyLabel,groovyConditional,groovyRepeat,groovyBoolean,groovyConstant,groovyTypedef,groovyOperator,groovyType,groovyType,groovyStatement,groovyStorageClass,groovyAssert,groovyExceptions,groovyMethodDecl,groovyClassDecl,groovyClassDecl,groovyClassDecl,groovyScopeDecl,groovyError,groovyError2,groovyUserLabel,groovyLangObject
201
202
203" Comments
204syn keyword groovyTodo             contained TODO FIXME XXX
205if exists("groovy_comment_strings")
206  syn region  groovyCommentString    contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=groovySpecial,groovyCommentStar,groovySpecialChar,@Spell
207  syn region  groovyComment2String   contained start=+"+  end=+$\|"+  contains=groovySpecial,groovySpecialChar,@Spell
208  syn match   groovyCommentCharacter contained "'\\[^']\{1,6\}'" contains=groovySpecialChar
209  syn match   groovyCommentCharacter contained "'\\''" contains=groovySpecialChar
210  syn match   groovyCommentCharacter contained "'[^\\]'"
211  syn cluster groovyCommentSpecial add=groovyCommentString,groovyCommentCharacter,groovyNumber
212  syn cluster groovyCommentSpecial2 add=groovyComment2String,groovyCommentCharacter,groovyNumber
213endif
214syn region  groovyComment          start="/\*"  end="\*/" contains=@groovyCommentSpecial,groovyTodo,@Spell
215syn match   groovyCommentStar      contained "^\s*\*[^/]"me=e-1
216syn match   groovyCommentStar      contained "^\s*\*$"
217syn match   groovyLineComment      "//.*" contains=@groovyCommentSpecial2,groovyTodo,@Spell
218syn match   groovyLineComment      "#.*" contains=@groovyCommentSpecial2,groovyTodo,@Spell
219GroovyHiLink groovyCommentString groovyString
220GroovyHiLink groovyComment2String groovyString
221GroovyHiLink groovyCommentCharacter groovyCharacter
222
223syn cluster groovyTop add=groovyComment,groovyLineComment
224
225if !exists("groovy_ignore_groovydoc") && main_syntax != 'jsp'
226  syntax case ignore
227  " syntax coloring for groovydoc comments (HTML)
228  " syntax include @groovyHtml <sfile>:p:h/html.vim
229   syntax include @groovyHtml runtime! syntax/html.vim
230  unlet b:current_syntax
231  syntax spell default  " added by Bram
232  syn region  groovyDocComment    start="/\*\*"  end="\*/" keepend contains=groovyCommentTitle,@groovyHtml,groovyDocTags,groovyTodo,@Spell
233  syn region  groovyCommentTitle  contained matchgroup=groovyDocComment start="/\*\*"   matchgroup=groovyCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@groovyHtml,groovyCommentStar,groovyTodo,@Spell,groovyDocTags
234
235  syn region groovyDocTags  contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
236  syn match  groovyDocTags  contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=groovyDocParam
237  syn match  groovyDocParam contained "\s\S\+"
238  syn match  groovyDocTags  contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
239  syntax case match
240endif
241
242" match the special comment /**/
243syn match   groovyComment          "/\*\*/"
244
245" Strings and constants
246syn match   groovySpecialError     contained "\\."
247syn match   groovySpecialCharError contained "[^']"
248syn match   groovySpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
249syn region  groovyString          start=+"+ end=+"+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
250syn region  groovyString          start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
251" syn region groovyELExpr start=+${+ end=+}+ keepend contained
252 syn match groovyELExpr /\${.\{-}}/ contained
253GroovyHiLink groovyELExpr Identifier
254
255" TODO: better matching. I am waiting to understand how it really works in groovy
256" syn region  groovyClosureParamsBraces          start=+|+ end=+|+ contains=groovyClosureParams
257" syn match groovyClosureParams	"[ a-zA-Z0-9_*]\+" contained
258" GroovyHiLink groovyClosureParams Identifier
259
260" next line disabled, it can cause a crash for a long line
261"syn match   groovyStringError      +"\([^"\\]\|\\.\)*$+
262
263" disabled: in groovy strings or characters are written the same
264" syn match   groovyCharacter        "'[^']*'" contains=groovySpecialChar,groovySpecialCharError
265" syn match   groovyCharacter        "'\\''" contains=groovySpecialChar
266" syn match   groovyCharacter        "'[^\\]'"
267syn match   groovyNumber           "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
268syn match   groovyNumber           "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
269syn match   groovyNumber           "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
270syn match   groovyNumber           "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
271
272" unicode characters
273syn match   groovySpecial "\\u\d\{4\}"
274
275syn cluster groovyTop add=groovyString,groovyCharacter,groovyNumber,groovySpecial,groovyStringError
276
277if exists("groovy_highlight_functions")
278  if groovy_highlight_functions == "indent"
279    syn match  groovyFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
280    syn region groovyFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
281    syn match  groovyFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
282    syn region groovyFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
283  else
284    " This line catches method declarations at any indentation>0, but it assumes
285    " two things:
286    "   1. class names are always capitalized (ie: Button)
287    "   2. method names are never capitalized (except constructors, of course)
288    syn region groovyFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(<[^>]*>\)\=\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*([^0-9]+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,groovyComment,groovyLineComment,@groovyClasses
289  endif
290  syn match  groovyBraces  "[{}]"
291  syn cluster groovyTop add=groovyFuncDef,groovyBraces
292endif
293
294if exists("groovy_highlight_debug")
295
296  " Strings and constants
297  syn match   groovyDebugSpecial          contained "\\\d\d\d\|\\."
298  syn region  groovyDebugString           contained start=+"+  end=+"+  contains=groovyDebugSpecial
299  syn match   groovyDebugStringError      +"\([^"\\]\|\\.\)*$+
300  syn match   groovyDebugCharacter        contained "'[^\\]'"
301  syn match   groovyDebugSpecialCharacter contained "'\\.'"
302  syn match   groovyDebugSpecialCharacter contained "'\\''"
303  syn match   groovyDebugNumber           contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
304  syn match   groovyDebugNumber           contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
305  syn match   groovyDebugNumber           contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
306  syn match   groovyDebugNumber           contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
307  syn keyword groovyDebugBoolean          contained true false
308  syn keyword groovyDebugType             contained null this super
309  syn region groovyDebugParen  start=+(+ end=+)+ contained contains=groovyDebug.*,groovyDebugParen
310
311  " to make this work you must define the highlighting for these groups
312  syn match groovyDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
313  syn match groovyDebug "\<p\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
314  syn match groovyDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
315  syn match groovyDebug "\<trace[SL]\=\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
316
317  syn cluster groovyTop add=groovyDebug
318
319  if version >= 508 || !exists("did_c_syn_inits")
320    GroovyHiLink groovyDebug                 Debug
321    GroovyHiLink groovyDebugString           DebugString
322    GroovyHiLink groovyDebugStringError      groovyError
323    GroovyHiLink groovyDebugType             DebugType
324    GroovyHiLink groovyDebugBoolean          DebugBoolean
325    GroovyHiLink groovyDebugNumber           Debug
326    GroovyHiLink groovyDebugSpecial          DebugSpecial
327    GroovyHiLink groovyDebugSpecialCharacter DebugSpecial
328    GroovyHiLink groovyDebugCharacter        DebugString
329    GroovyHiLink groovyDebugParen            Debug
330  
331    GroovyHiLink DebugString               String
332    GroovyHiLink DebugSpecial              Special
333    GroovyHiLink DebugBoolean              Boolean
334    GroovyHiLink DebugType                 Type
335  endif
336endif
337
338" Match all Exception classes 
339syn match groovyExceptions        "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
340
341
342if !exists("groovy_minlines")
343  let groovy_minlines = 10
344endif
345exec "syn sync ccomment groovyComment minlines=" . groovy_minlines
346
347
348" ################### 
349" Groovy stuff
350" syn match groovyOperator		"|[ ,a-zA-Z0-9_*]\+|"
351
352" All groovy valid tokens
353" syn match groovyTokens ";\|,\|<=>\|<>\|:\|:=\|>\|>=\|=\|==\|<\|<=\|!=\|/\|/=\|\.\.|\.\.\.\|\~=\|\~=="
354" syn match groovyTokens "\*=\|&\|&=\|\*\|->\|\~\|+\|-\|/\|?\|<<<\|>>>\|<<\|>>"
355
356" Must put explicit these ones because groovy.vim mark them as errors otherwise
357" syn match groovyTokens "<=>\|<>\|==\~"
358"syn cluster groovyTop add=groovyTokens
359
360" Mark these as operators
361
362" Hightlight brackets
363" syn match  groovyBraces		"[{}]"
364" syn match  groovyBraces		"[\[\]]"
365" syn match  groovyBraces		"[\|]"
366
367if exists("groovy_mark_braces_in_parens_as_errors")
368  syn match groovyInParen          contained "[{}]"
369  GroovyHiLink groovyInParen        groovyError
370  syn cluster groovyTop add=groovyInParen
371endif
372
373" catch errors caused by wrong parenthesis
374syn region  groovyParenT  transparent matchgroup=groovyParen  start="("  end=")" contains=@groovyTop,groovyParenT1
375syn region  groovyParenT1 transparent matchgroup=groovyParen1 start="(" end=")" contains=@groovyTop,groovyParenT2 contained
376syn region  groovyParenT2 transparent matchgroup=groovyParen2 start="(" end=")" contains=@groovyTop,groovyParenT  contained
377syn match   groovyParenError       ")"
378GroovyHiLink groovyParenError       groovyError
379
380" catch errors caused by wrong square parenthesis
381syn region  groovyParenT  transparent matchgroup=groovyParen  start="\["  end="\]" contains=@groovyTop,groovyParenT1
382syn region  groovyParenT1 transparent matchgroup=groovyParen1 start="\[" end="\]" contains=@groovyTop,groovyParenT2 contained
383syn region  groovyParenT2 transparent matchgroup=groovyParen2 start="\[" end="\]" contains=@groovyTop,groovyParenT  contained
384syn match   groovyParenError       "\]"
385
386" ###############################
387" java.vim default highlighting
388if version >= 508 || !exists("did_groovy_syn_inits")
389  if version < 508
390    let did_groovy_syn_inits = 1
391  endif
392  GroovyHiLink groovyFuncDef		Function
393  GroovyHiLink groovyBraces		Function
394  GroovyHiLink groovyBranch		Conditional
395  GroovyHiLink groovyUserLabelRef	groovyUserLabel
396  GroovyHiLink groovyLabel		Label
397  GroovyHiLink groovyUserLabel		Label
398  GroovyHiLink groovyConditional	Conditional
399  GroovyHiLink groovyRepeat		Repeat
400  GroovyHiLink groovyExceptions		Exception
401  GroovyHiLink groovyAssert 		Statement
402  GroovyHiLink groovyStorageClass	StorageClass
403  GroovyHiLink groovyMethodDecl		groovyStorageClass
404  GroovyHiLink groovyClassDecl		groovyStorageClass
405  GroovyHiLink groovyScopeDecl		groovyStorageClass
406  GroovyHiLink groovyBoolean		Boolean
407  GroovyHiLink groovySpecial		Special
408  GroovyHiLink groovySpecialError	Error
409  GroovyHiLink groovySpecialCharError	Error
410  GroovyHiLink groovyString		String
411  GroovyHiLink groovyCharacter		Character
412  GroovyHiLink groovySpecialChar	SpecialChar
413  GroovyHiLink groovyNumber		Number
414  GroovyHiLink groovyError		Error
415  GroovyHiLink groovyStringError	Error
416  GroovyHiLink groovyStatement		Statement
417  GroovyHiLink groovyOperator		Operator
418  GroovyHiLink groovyComment		Comment
419  GroovyHiLink groovyDocComment		Comment
420  GroovyHiLink groovyLineComment	Comment
421  GroovyHiLink groovyConstant		Constant
422  GroovyHiLink groovyTypedef		Typedef
423  GroovyHiLink groovyTodo		Todo
424  
425  GroovyHiLink groovyCommentTitle	SpecialComment
426  GroovyHiLink groovyDocTags		Special
427  GroovyHiLink groovyDocParam		Function
428  GroovyHiLink groovyCommentStar	groovyComment
429  
430  GroovyHiLink groovyType		Type
431  GroovyHiLink groovyExternal		Include
432  
433  GroovyHiLink htmlComment		Special
434  GroovyHiLink htmlCommentPart		Special
435  GroovyHiLink groovySpaceError		Error
436  GroovyHiLink groovyJDKBuiltin         Special
437  GroovyHiLink groovyJDKOperOverl       Operator
438  GroovyHiLink groovyJDKMethods         Function
439endif
440
441delcommand GroovyHiLink
442
443
444let b:current_syntax = "groovy"
445if main_syntax == 'groovy'
446  unlet main_syntax
447endif
448
449let b:spell_options="contained"
450
451" vim: ts=8
452