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