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