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