codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: Groovy3" Original Author: Alessio Pace <billy.corgan AT tiscali.it>4" Maintainer: Tobias Rapp <yahuxo+vim AT mailbox.org>5" Version: 0.1.186" URL: http://www.vim.org/scripts/script.php?script_id=9457" Last Change: 2021 Feb 038" 2025 Apr 27 by Vim Project correct Vim script spelling9 10" THE ORIGINAL AUTHOR'S NOTES:11"12" This is my very first Vim script, I hope to have13" done it the right way.14"15" I must directly or indirectly thank the author of java.vim and ruby.vim:16" I copied from them most of the stuff :-)17"18" Relies on html.vim19 20" For version 5.x: Clear all syntax items21" For version 6.x: Quit when a syntax file was already loaded22"23" HOWTO USE IT (INSTALL) when not part of the distribution:24"25" 1) copy the file in the (global or user's $HOME/.vim/syntax/) syntax folder26"27" 2) add this line to recognize groovy files by filename extension:28"29" au BufNewFile,BufRead *.groovy setf groovy30" in the global vim filetype.vim file or inside $HOME/.vim/filetype.vim31"32" 3) add this part to recognize by content groovy script (no extension needed :-)33"34" if did_filetype()35" finish36" endif37" if getline(1) =~ '^#!.*[/\\]groovy\>'38" setf groovy39" endif40"41" in the global scripts.vim file or in $HOME/.vim/scripts.vim42"43" 4) open/write a .groovy file or a groovy script :-)44"45" Let me know if you like it or send me patches, so that I can improve it46" when I have time47 48" quit when a syntax file was already loaded49if !exists("main_syntax")50 if exists("b:current_syntax")51 finish52 endif53 " we define it here so that included files can test for it54 let main_syntax='groovy'55endif56 57let s:cpo_save = &cpo58set cpo&vim59 60" ##########################61" Java stuff taken from java.vim62" some characters that cannot be in a groovy program (outside a string)63" syn match groovyError "[\\@`]"64"syn match groovyError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"65"syn match groovyOK "\.\.\."66 67" keyword definitions68syn keyword groovyExternal native package69syn match groovyExternal "\<import\>\(\s\+static\>\)\?"70syn keyword groovyError goto const71syn keyword groovyConditional if else switch72syn keyword groovyRepeat while for do73syn keyword groovyBoolean true false74syn keyword groovyConstant null75syn keyword groovyTypedef this super76syn keyword groovyOperator new instanceof77syn keyword groovyType boolean char byte short int long float double78syn keyword groovyType void79syn keyword groovyType Integer Double Date Boolean Float String Array Vector List80syn keyword groovyStatement return81syn keyword groovyStorageClass static synchronized transient volatile final strictfp serializable82syn keyword groovyExceptions throw try catch finally83syn keyword groovyAssert assert84syn keyword groovyMethodDecl synchronized throws85syn keyword groovyClassDecl extends implements interface86" to differentiate the keyword class from MyClass.class we use a match here87syn match groovyTypedef "\.\s*\<class\>"ms=s+188syn keyword groovyClassDecl enum89syn match groovyClassDecl "^class\>"90syn match groovyClassDecl "[^.]\s*\<class\>"ms=s+191syn keyword groovyBranch break continue nextgroup=groovyUserLabelRef skipwhite92syn match groovyUserLabelRef "\k\+" contained93syn keyword groovyScopeDecl public protected private abstract94 95 96if exists("groovy_highlight_groovy_lang_ids") || exists("groovy_highlight_groovy_lang") || exists("groovy_highlight_all")97 " groovy.lang.*98 syn keyword groovyLangClass Closure MetaMethod GroovyObject99 100 syn match groovyJavaLangClass "\<System\>"101 syn keyword groovyJavaLangClass Cloneable Comparable Runnable Serializable Boolean Byte Class Object102 syn keyword groovyJavaLangClass Character CharSequence ClassLoader Compiler103 " syn keyword groovyJavaLangClass Integer Double Float Long104 syn keyword groovyJavaLangClass InheritableThreadLocal Math Number Object Package Process105 syn keyword groovyJavaLangClass Runtime RuntimePermission InheritableThreadLocal106 syn keyword groovyJavaLangClass SecurityManager Short StrictMath StackTraceElement107 syn keyword groovyJavaLangClass StringBuffer Thread ThreadGroup108 syn keyword groovyJavaLangClass ThreadLocal Throwable Void ArithmeticException109 syn keyword groovyJavaLangClass ArrayIndexOutOfBoundsException AssertionError110 syn keyword groovyJavaLangClass ArrayStoreException ClassCastException111 syn keyword groovyJavaLangClass ClassNotFoundException112 syn keyword groovyJavaLangClass CloneNotSupportedException Exception113 syn keyword groovyJavaLangClass IllegalAccessException114 syn keyword groovyJavaLangClass IllegalArgumentException115 syn keyword groovyJavaLangClass IllegalMonitorStateException116 syn keyword groovyJavaLangClass IllegalStateException117 syn keyword groovyJavaLangClass IllegalThreadStateException118 syn keyword groovyJavaLangClass IndexOutOfBoundsException119 syn keyword groovyJavaLangClass InstantiationException InterruptedException120 syn keyword groovyJavaLangClass NegativeArraySizeException NoSuchFieldException121 syn keyword groovyJavaLangClass NoSuchMethodException NullPointerException122 syn keyword groovyJavaLangClass NumberFormatException RuntimeException123 syn keyword groovyJavaLangClass SecurityException StringIndexOutOfBoundsException124 syn keyword groovyJavaLangClass UnsupportedOperationException125 syn keyword groovyJavaLangClass AbstractMethodError ClassCircularityError126 syn keyword groovyJavaLangClass ClassFormatError Error ExceptionInInitializerError127 syn keyword groovyJavaLangClass IllegalAccessError InstantiationError128 syn keyword groovyJavaLangClass IncompatibleClassChangeError InternalError129 syn keyword groovyJavaLangClass LinkageError NoClassDefFoundError130 syn keyword groovyJavaLangClass NoSuchFieldError NoSuchMethodError131 syn keyword groovyJavaLangClass OutOfMemoryError StackOverflowError132 syn keyword groovyJavaLangClass ThreadDeath UnknownError UnsatisfiedLinkError133 syn keyword groovyJavaLangClass UnsupportedClassVersionError VerifyError134 syn keyword groovyJavaLangClass VirtualMachineError135 136 syn keyword groovyJavaLangObject clone equals finalize getClass hashCode137 syn keyword groovyJavaLangObject notify notifyAll toString wait138 139 hi def link groovyLangClass groovyConstant140 hi def link groovyJavaLangClass groovyExternal141 hi def link groovyJavaLangObject groovyConstant142 syn cluster groovyTop add=groovyJavaLangObject,groovyJavaLangClass,groovyLangClass143 syn cluster groovyClasses add=groovyJavaLangClass,groovyLangClass144endif145 146 147" Groovy stuff148syn match groovyOperator "\.\."149syn match groovyOperator "<\{2,3}"150syn match groovyOperator ">\{2,3}"151syn match groovyOperator "->"152syn match groovyLineComment '^\%1l#!.*' " Shebang line153syn match groovyExceptions "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"154 155" Groovy JDK stuff156syn keyword groovyJDKBuiltin as def in157syn keyword groovyJDKOperOverl div minus plus abs round power multiply158syn keyword groovyJDKMethods each call inject sort print println159syn keyword groovyJDKMethods getAt putAt size push pop toList getText writeLine eachLine readLines160syn keyword groovyJDKMethods withReader withStream withWriter withPrintWriter write read leftShift161syn keyword groovyJDKMethods withWriterAppend readBytes splitEachLine162syn keyword groovyJDKMethods newInputStream newOutputStream newPrintWriter newReader newWriter163syn keyword groovyJDKMethods compareTo next previous isCase164syn keyword groovyJDKMethods times step toInteger upto any collect dump every find findAll grep165syn keyword groovyJDKMethods inspect invokeMethods join166syn keyword groovyJDKMethods getErr getIn getOut waitForOrKill167syn keyword groovyJDKMethods count tokenize asList flatten immutable intersect reverse reverseEach168syn keyword groovyJDKMethods subMap append asWritable eachByte eachLine eachFile169syn cluster groovyTop add=groovyJDKBuiltin,groovyJDKOperOverl,groovyJDKMethods170 171" no useful I think, so I comment it..172"if filereadable(expand("<sfile>:p:h")."/groovyid.vim")173 " source <sfile>:p:h/groovyid.vim174"endif175 176if exists("groovy_space_errors")177 if !exists("groovy_no_trail_space_error")178 syn match groovySpaceError "\s\+$"179 endif180 if !exists("groovy_no_tab_space_error")181 syn match groovySpaceError " \+\t"me=e-1182 endif183endif184 185" it is a better case construct than java.vim to match groovy syntax186syn region groovyLabelRegion transparent matchgroup=groovyLabel start="\<case\>" matchgroup=NONE end=":\|$" contains=groovyNumber,groovyString,groovyLangClass,groovyJavaLangClass187syn match groovyUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=groovyLabel188syn keyword groovyLabel default189 190if !exists("groovy_allow_cpp_keywords")191 syn keyword groovyError auto delete extern friend inline redeclared192 syn keyword groovyError register signed sizeof struct template typedef union193 syn keyword groovyError unsigned operator194endif195 196" The following cluster contains all groovy groups except the contained ones197syn 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,groovyLangObject198 199 200" Comments201syn keyword groovyTodo contained TODO FIXME XXX202if exists("groovy_comment_strings")203 syn region groovyCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=groovySpecial,groovyCommentStar,groovySpecialChar,@Spell204 syn region groovyComment2String contained start=+"+ end=+$\|"+ contains=groovySpecial,groovySpecialChar,@Spell205 syn match groovyCommentCharacter contained "'\\[^']\{1,6\}'" contains=groovySpecialChar206 syn match groovyCommentCharacter contained "'\\''" contains=groovySpecialChar207 syn match groovyCommentCharacter contained "'[^\\]'"208 syn cluster groovyCommentSpecial add=groovyCommentString,groovyCommentCharacter,groovyNumber209 syn cluster groovyCommentSpecial2 add=groovyComment2String,groovyCommentCharacter,groovyNumber210endif211syn region groovyComment start="/\*" end="\*/" contains=@groovyCommentSpecial,groovyTodo,@Spell212syn match groovyCommentStar contained "^\s*\*[^/]"me=e-1213syn match groovyCommentStar contained "^\s*\*$"214syn match groovyLineComment "//.*" contains=@groovyCommentSpecial2,groovyTodo,@Spell215hi def link groovyCommentString groovyString216hi def link groovyComment2String groovyString217hi def link groovyCommentCharacter groovyCharacter218 219syn cluster groovyTop add=groovyComment,groovyLineComment220 221if !exists("groovy_ignore_groovydoc") && main_syntax != 'jsp'222 syntax case ignore223 " syntax coloring for groovydoc comments (HTML)224 " syntax include @groovyHtml <sfile>:p:h/html.vim225 syntax include @groovyHtml runtime! syntax/html.vim226 unlet b:current_syntax227 syntax spell default " added by Bram228 syn region groovyDocComment start="/\*\*" end="\*/" keepend contains=groovyCommentTitle,@groovyHtml,groovyDocTags,groovyTodo,@Spell229 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,groovyDocTags230 231 syn region groovyDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"232 syn match groovyDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=groovyDocParam233 syn match groovyDocParam contained "\s\S\+"234 syn match groovyDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"235 syntax case match236endif237 238" match the special comment /**/239syn match groovyComment "/\*\*/"240 241" Strings and constants242syn match groovySpecialError contained "\\."243syn match groovySpecialCharError contained "[^']"244syn match groovySpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"245syn match groovyRegexChar contained "\\."246syn region groovyString start=+"+ end=+"+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr247syn region groovyString start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell248syn region groovyString start=+"""+ end=+"""+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr249syn region groovyString start=+'''+ end=+'''+ contains=groovySpecialChar,groovySpecialError,@Spell250if exists("groovy_regex_strings")251 " regex strings interfere with the division operator and thus are disabled252 " by default253 syn region groovyString start='/[^/*]' end='/' contains=groovySpecialChar,groovyRegexChar,groovyELExpr254endif255" syn region groovyELExpr start=+${+ end=+}+ keepend contained256syn match groovyELExpr /\${.\{-}}/ contained257" Fix: force use of the NFA regexp engine (2), see GitHub issue #7280258syn 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_.]*/ contained259hi def link groovyELExpr Identifier260 261" TODO: better matching. I am waiting to understand how it really works in groovy262" syn region groovyClosureParamsBraces start=+|+ end=+|+ contains=groovyClosureParams263" syn match groovyClosureParams "[ a-zA-Z0-9_*]\+" contained264" hi def link groovyClosureParams Identifier265 266" next line disabled, it can cause a crash for a long line267"syn match groovyStringError +"\([^"\\]\|\\.\)*$+268 269" disabled: in groovy strings or characters are written the same270" syn match groovyCharacter "'[^']*'" contains=groovySpecialChar,groovySpecialCharError271" syn match groovyCharacter "'\\''" contains=groovySpecialChar272" syn match groovyCharacter "'[^\\]'"273syn match groovyNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"274syn match groovyNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="275syn match groovyNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"276syn match groovyNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"277 278" unicode characters279syn match groovySpecial "\\u\d\{4\}"280 281syn cluster groovyTop add=groovyString,groovyCharacter,groovyNumber,groovySpecial,groovyStringError282 283if exists("groovy_highlight_functions")284 if groovy_highlight_functions == "indent"285 syn match groovyFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses286 syn region groovyFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses287 syn match groovyFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses288 syn region groovyFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=groovyScopeDecl,groovyType,groovyStorageClass,@groovyClasses289 else290 " This line catches method declarations at any indentation>0, but it assumes291 " two things:292 " 1. class names are always capitalized (ie: Button)293 " 2. method names are never capitalized (except constructors, of course)294 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,@groovyClasses295 endif296 syn match groovyBraces "[{}]"297 syn cluster groovyTop add=groovyFuncDef,groovyBraces298endif299 300if exists("groovy_highlight_debug")301 302 " Strings and constants303 syn match groovyDebugSpecial contained "\\\d\d\d\|\\."304 syn region groovyDebugString contained start=+"+ end=+"+ contains=groovyDebugSpecial305 syn match groovyDebugStringError +"\([^"\\]\|\\.\)*$+306 syn match groovyDebugCharacter contained "'[^\\]'"307 syn match groovyDebugSpecialCharacter contained "'\\.'"308 syn match groovyDebugSpecialCharacter contained "'\\''"309 syn match groovyDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"310 syn match groovyDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="311 syn match groovyDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"312 syn match groovyDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"313 syn keyword groovyDebugBoolean contained true false314 syn keyword groovyDebugType contained null this super315 syn region groovyDebugParen start=+(+ end=+)+ contained contains=groovyDebug.*,groovyDebugParen316 317 " to make this work you must define the highlighting for these groups318 syn match groovyDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen319 syn match groovyDebug "\<p\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen320 syn match groovyDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen321 syn match groovyDebug "\<trace[SL]\=\s*("me=e-1 contains=groovyDebug.* nextgroup=groovyDebugParen322 323 syn cluster groovyTop add=groovyDebug324 325 hi def link groovyDebug Debug326 hi def link groovyDebugString DebugString327 hi def link groovyDebugStringError groovyError328 hi def link groovyDebugType DebugType329 hi def link groovyDebugBoolean DebugBoolean330 hi def link groovyDebugNumber Debug331 hi def link groovyDebugSpecial DebugSpecial332 hi def link groovyDebugSpecialCharacter DebugSpecial333 hi def link groovyDebugCharacter DebugString334 hi def link groovyDebugParen Debug335 336 hi def link DebugString String337 hi def link DebugSpecial Special338 hi def link DebugBoolean Boolean339 hi def link DebugType Type340endif341 342" Match all Exception classes343syn match groovyExceptions "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"344 345 346if !exists("groovy_minlines")347 let groovy_minlines = 10348endif349exec "syn sync ccomment groovyComment minlines=" . groovy_minlines350 351 352" ###################353" Groovy stuff354" syn match groovyOperator "|[ ,a-zA-Z0-9_*]\+|"355 356" All groovy valid tokens357" syn match groovyTokens ";\|,\|<=>\|<>\|:\|:=\|>\|>=\|=\|==\|<\|<=\|!=\|/\|/=\|\.\.|\.\.\.\|\~=\|\~=="358" syn match groovyTokens "\*=\|&\|&=\|\*\|->\|\~\|+\|-\|/\|?\|<<<\|>>>\|<<\|>>"359 360" Must put explicit these ones because groovy.vim mark them as errors otherwise361" syn match groovyTokens "<=>\|<>\|==\~"362"syn cluster groovyTop add=groovyTokens363 364" Mark these as operators365 366" Highlight brackets367" syn match groovyBraces "[{}]"368" syn match groovyBraces "[\[\]]"369" syn match groovyBraces "[\|]"370 371if exists("groovy_mark_braces_in_parens_as_errors")372 syn match groovyInParen contained "[{}]"373 hi def link groovyInParen groovyError374 syn cluster groovyTop add=groovyInParen375endif376 377" catch errors caused by wrong parenthesis378syn region groovyParenT transparent matchgroup=groovyParen start="(" end=")" contains=@groovyTop,groovyParenT1379syn region groovyParenT1 transparent matchgroup=groovyParen1 start="(" end=")" contains=@groovyTop,groovyParenT2 contained380syn region groovyParenT2 transparent matchgroup=groovyParen2 start="(" end=")" contains=@groovyTop,groovyParenT contained381syn match groovyParenError ")"382hi def link groovyParenError groovyError383 384" catch errors caused by wrong square parenthesis385syn region groovyParenT transparent matchgroup=groovyParen start="\[" end="\]" contains=@groovyTop,groovyParenT1386syn region groovyParenT1 transparent matchgroup=groovyParen1 start="\[" end="\]" contains=@groovyTop,groovyParenT2 contained387syn region groovyParenT2 transparent matchgroup=groovyParen2 start="\[" end="\]" contains=@groovyTop,groovyParenT contained388syn match groovyParenError "\]"389 390" ###############################391" java.vim default highlighting392hi def link groovyFuncDef Function393hi def link groovyBraces Function394hi def link groovyBranch Conditional395hi def link groovyUserLabelRef groovyUserLabel396hi def link groovyLabel Label397hi def link groovyUserLabel Label398hi def link groovyConditional Conditional399hi def link groovyRepeat Repeat400hi def link groovyExceptions Exception401hi def link groovyAssert Statement402hi def link groovyStorageClass StorageClass403hi def link groovyMethodDecl groovyStorageClass404hi def link groovyClassDecl groovyStorageClass405hi def link groovyScopeDecl groovyStorageClass406hi def link groovyBoolean Boolean407hi def link groovySpecial Special408hi def link groovySpecialError Error409hi def link groovySpecialCharError Error410hi def link groovyString String411hi def link groovyRegexChar String412hi def link groovyCharacter Character413hi def link groovySpecialChar SpecialChar414hi def link groovyNumber Number415hi def link groovyError Error416hi def link groovyStringError Error417hi def link groovyStatement Statement418hi def link groovyOperator Operator419hi def link groovyComment Comment420hi def link groovyDocComment Comment421hi def link groovyLineComment Comment422hi def link groovyConstant Constant423hi def link groovyTypedef Typedef424hi def link groovyTodo Todo425 426hi def link groovyCommentTitle SpecialComment427hi def link groovyDocTags Special428hi def link groovyDocParam Function429hi def link groovyCommentStar groovyComment430 431hi def link groovyType Type432hi def link groovyExternal Include433 434hi def link htmlComment Special435hi def link htmlCommentPart Special436hi def link groovySpaceError Error437hi def link groovyJDKBuiltin Special438hi def link groovyJDKOperOverl Operator439hi def link groovyJDKMethods Function440 441 442let b:current_syntax = "groovy"443if main_syntax == 'groovy'444 unlet main_syntax445endif446 447let b:spell_options="contained"448 449let &cpo = s:cpo_save450unlet s:cpo_save451 452" vim: ts=8453 