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