xref: /vim-8.2.3635/runtime/syntax/groovy.vim (revision 577fadfc)
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 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
256syn match groovyELExpr /\$[a-zA-Z_][a-zA-Z0-9_.]*/ contained
257hi def link groovyELExpr Identifier
258
259" TODO: better matching. I am waiting to understand how it really works in groovy
260" syn region  groovyClosureParamsBraces          start=+|+ end=+|+ contains=groovyClosureParams
261" syn match groovyClosureParams	"[ a-zA-Z0-9_*]\+" contained
262" hi def link groovyClosureParams Identifier
263
264" next line disabled, it can cause a crash for a long line
265"syn match   groovyStringError      +"\([^"\\]\|\\.\)*$+
266
267" disabled: in groovy strings or characters are written the same
268" syn match   groovyCharacter        "'[^']*'" contains=groovySpecialChar,groovySpecialCharError
269" syn match   groovyCharacter        "'\\''" contains=groovySpecialChar
270" syn match   groovyCharacter        "'[^\\]'"
271syn match   groovyNumber           "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
272syn match   groovyNumber           "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
273syn match   groovyNumber           "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
274syn match   groovyNumber           "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
275
276" unicode characters
277syn match   groovySpecial "\\u\d\{4\}"
278
279syn cluster groovyTop add=groovyString,groovyCharacter,groovyNumber,groovySpecial,groovyStringError
280
281if exists("groovy_highlight_functions")
282  if groovy_highlight_functions == "indent"
283    syn match  groovyFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
284    syn region groovyFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
285    syn match  groovyFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
286    syn region groovyFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses
287  else
288    " This line catches method declarations at any indentation>0, but it assumes
289    " two things:
290    "   1. class names are always capitalized (ie: Button)
291    "   2. method names are never capitalized (except constructors, of course)
292    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
293  endif
294  syn match  groovyBraces  "[{}]"
295  syn cluster groovyTop add=groovyFuncDef,groovyBraces
296endif
297
298if exists("groovy_highlight_debug")
299
300  " Strings and constants
301  syn match   groovyDebugSpecial          contained "\\\d\d\d\|\\."
302  syn region  groovyDebugString           contained start=+"+  end=+"+  contains=groovyDebugSpecial
303  syn match   groovyDebugStringError      +"\([^"\\]\|\\.\)*$+
304  syn match   groovyDebugCharacter        contained "'[^\\]'"
305  syn match   groovyDebugSpecialCharacter contained "'\\.'"
306  syn match   groovyDebugSpecialCharacter contained "'\\''"
307  syn match   groovyDebugNumber           contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
308  syn match   groovyDebugNumber           contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
309  syn match   groovyDebugNumber           contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
310  syn match   groovyDebugNumber           contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
311  syn keyword groovyDebugBoolean          contained true false
312  syn keyword groovyDebugType             contained null this super
313  syn region groovyDebugParen  start=+(+ end=+)+ contained contains=groovyDebug.*,groovyDebugParen
314
315  " to make this work you must define the highlighting for these groups
316  syn match groovyDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
317  syn match groovyDebug "\<p\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
318  syn match groovyDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
319  syn match groovyDebug "\<trace[SL]\=\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen
320
321  syn cluster groovyTop add=groovyDebug
322
323  hi def link groovyDebug                 Debug
324  hi def link groovyDebugString           DebugString
325  hi def link groovyDebugStringError      groovyError
326  hi def link groovyDebugType             DebugType
327  hi def link groovyDebugBoolean          DebugBoolean
328  hi def link groovyDebugNumber           Debug
329  hi def link groovyDebugSpecial          DebugSpecial
330  hi def link groovyDebugSpecialCharacter DebugSpecial
331  hi def link groovyDebugCharacter        DebugString
332  hi def link groovyDebugParen            Debug
333
334  hi def link DebugString               String
335  hi def link DebugSpecial              Special
336  hi def link DebugBoolean              Boolean
337  hi def link DebugType                 Type
338endif
339
340" Match all Exception classes
341syn match groovyExceptions        "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
342
343
344if !exists("groovy_minlines")
345  let groovy_minlines = 10
346endif
347exec "syn sync ccomment groovyComment minlines=" . groovy_minlines
348
349
350" ###################
351" Groovy stuff
352" syn match groovyOperator		"|[ ,a-zA-Z0-9_*]\+|"
353
354" All groovy valid tokens
355" syn match groovyTokens ";\|,\|<=>\|<>\|:\|:=\|>\|>=\|=\|==\|<\|<=\|!=\|/\|/=\|\.\.|\.\.\.\|\~=\|\~=="
356" syn match groovyTokens "\*=\|&\|&=\|\*\|->\|\~\|+\|-\|/\|?\|<<<\|>>>\|<<\|>>"
357
358" Must put explicit these ones because groovy.vim mark them as errors otherwise
359" syn match groovyTokens "<=>\|<>\|==\~"
360"syn cluster groovyTop add=groovyTokens
361
362" Mark these as operators
363
364" Hightlight brackets
365" syn match  groovyBraces		"[{}]"
366" syn match  groovyBraces		"[\[\]]"
367" syn match  groovyBraces		"[\|]"
368
369if exists("groovy_mark_braces_in_parens_as_errors")
370  syn match groovyInParen          contained "[{}]"
371  hi def link groovyInParen        groovyError
372  syn cluster groovyTop add=groovyInParen
373endif
374
375" catch errors caused by wrong parenthesis
376syn region  groovyParenT  transparent matchgroup=groovyParen  start="("  end=")" contains=@groovyTop,groovyParenT1
377syn region  groovyParenT1 transparent matchgroup=groovyParen1 start="(" end=")" contains=@groovyTop,groovyParenT2 contained
378syn region  groovyParenT2 transparent matchgroup=groovyParen2 start="(" end=")" contains=@groovyTop,groovyParenT  contained
379syn match   groovyParenError       ")"
380hi def link groovyParenError       groovyError
381
382" catch errors caused by wrong square parenthesis
383syn region  groovyParenT  transparent matchgroup=groovyParen  start="\["  end="\]" contains=@groovyTop,groovyParenT1
384syn region  groovyParenT1 transparent matchgroup=groovyParen1 start="\[" end="\]" contains=@groovyTop,groovyParenT2 contained
385syn region  groovyParenT2 transparent matchgroup=groovyParen2 start="\[" end="\]" contains=@groovyTop,groovyParenT  contained
386syn match   groovyParenError       "\]"
387
388" ###############################
389" java.vim default highlighting
390hi def link groovyFuncDef		Function
391hi def link groovyBraces		Function
392hi def link groovyBranch		Conditional
393hi def link groovyUserLabelRef	groovyUserLabel
394hi def link groovyLabel		Label
395hi def link groovyUserLabel		Label
396hi def link groovyConditional	Conditional
397hi def link groovyRepeat		Repeat
398hi def link groovyExceptions		Exception
399hi def link groovyAssert 		Statement
400hi def link groovyStorageClass	StorageClass
401hi def link groovyMethodDecl		groovyStorageClass
402hi def link groovyClassDecl		groovyStorageClass
403hi def link groovyScopeDecl		groovyStorageClass
404hi def link groovyBoolean		Boolean
405hi def link groovySpecial		Special
406hi def link groovySpecialError	Error
407hi def link groovySpecialCharError	Error
408hi def link groovyString		String
409hi def link groovyRegexChar		String
410hi def link groovyCharacter		Character
411hi def link groovySpecialChar	SpecialChar
412hi def link groovyNumber		Number
413hi def link groovyError		Error
414hi def link groovyStringError	Error
415hi def link groovyStatement		Statement
416hi def link groovyOperator		Operator
417hi def link groovyComment		Comment
418hi def link groovyDocComment		Comment
419hi def link groovyLineComment	Comment
420hi def link groovyConstant		Constant
421hi def link groovyTypedef		Typedef
422hi def link groovyTodo		Todo
423
424hi def link groovyCommentTitle	SpecialComment
425hi def link groovyDocTags		Special
426hi def link groovyDocParam		Function
427hi def link groovyCommentStar	groovyComment
428
429hi def link groovyType		Type
430hi def link groovyExternal		Include
431
432hi def link htmlComment		Special
433hi def link htmlCommentPart		Special
434hi def link groovySpaceError		Error
435hi def link groovyJDKBuiltin         Special
436hi def link groovyJDKOperOverl       Operator
437hi def link groovyJDKMethods         Function
438
439
440let b:current_syntax = "groovy"
441if main_syntax == 'groovy'
442  unlet main_syntax
443endif
444
445let b:spell_options="contained"
446
447let &cpo = s:cpo_save
448unlet s:cpo_save
449
450" vim: ts=8
451