neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

groovy.vim (22483B)


      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
     48 if !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'
     54 endif
     55 
     56 let s:cpo_save = &cpo
     57 set 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
     67 syn keyword groovyExternal        native package
     68 syn match groovyExternal          "\<import\>\(\s\+static\>\)\?"
     69 syn keyword groovyError           goto const
     70 syn keyword groovyConditional     if else switch
     71 syn keyword groovyRepeat          while for do
     72 syn keyword groovyBoolean         true false
     73 syn keyword groovyConstant        null
     74 syn keyword groovyTypedef         this super
     75 syn keyword groovyOperator        new instanceof
     76 syn keyword groovyType            boolean char byte short int long float double
     77 syn keyword groovyType            void
     78 syn keyword groovyType		  Integer Double Date Boolean Float String Array Vector List
     79 syn keyword groovyStatement       return
     80 syn keyword groovyStorageClass    static synchronized transient volatile final strictfp serializable
     81 syn keyword groovyExceptions      throw try catch finally
     82 syn keyword groovyAssert          assert
     83 syn keyword groovyMethodDecl      synchronized throws
     84 syn keyword groovyClassDecl       extends implements interface
     85 " to differentiate the keyword class from MyClass.class we use a match here
     86 syn match   groovyTypedef         "\.\s*\<class\>"ms=s+1
     87 syn keyword groovyClassDecl         enum
     88 syn match   groovyClassDecl       "^class\>"
     89 syn match   groovyClassDecl       "[^.]\s*\<class\>"ms=s+1
     90 syn keyword groovyBranch          break continue nextgroup=groovyUserLabelRef skipwhite
     91 syn match   groovyUserLabelRef    "\k\+" contained
     92 syn keyword groovyScopeDecl       public protected private abstract
     93 
     94 
     95 if 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
    143 endif
    144 
    145 
    146 " Groovy stuff
    147 syn match groovyOperator "\.\."
    148 syn match groovyOperator "<\{2,3}"
    149 syn match groovyOperator ">\{2,3}"
    150 syn match groovyOperator "->"
    151 syn match groovyLineComment       '^\%1l#!.*'  " Shebang line
    152 syn match groovyExceptions        "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
    153 
    154 " Groovy JDK stuff
    155 syn keyword groovyJDKBuiltin    as def in
    156 syn keyword groovyJDKOperOverl  div minus plus abs round power multiply
    157 syn keyword groovyJDKMethods 	each call inject sort print println
    158 syn keyword groovyJDKMethods    getAt putAt size push pop toList getText writeLine eachLine readLines
    159 syn keyword groovyJDKMethods    withReader withStream withWriter withPrintWriter write read leftShift
    160 syn keyword groovyJDKMethods    withWriterAppend readBytes splitEachLine
    161 syn keyword groovyJDKMethods    newInputStream newOutputStream newPrintWriter newReader newWriter
    162 syn keyword groovyJDKMethods    compareTo next previous isCase
    163 syn keyword groovyJDKMethods    times step toInteger upto any collect dump every find findAll grep
    164 syn keyword groovyJDKMethods    inspect invokeMethods join
    165 syn keyword groovyJDKMethods    getErr getIn getOut waitForOrKill
    166 syn keyword groovyJDKMethods    count tokenize asList flatten immutable intersect reverse reverseEach
    167 syn keyword groovyJDKMethods    subMap append asWritable eachByte eachLine eachFile
    168 syn 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 
    175 if 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
    182 endif
    183 
    184 " it is a better case construct than java.vim to match groovy syntax
    185 syn region  groovyLabelRegion     transparent matchgroup=groovyLabel start="\<case\>" matchgroup=NONE end=":\|$" contains=groovyNumber,groovyString,groovyLangClass,groovyJavaLangClass
    186 syn match   groovyUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=groovyLabel
    187 syn keyword groovyLabel           default
    188 
    189 if !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
    193 endif
    194 
    195 " The following cluster contains all groovy groups except the contained ones
    196 syn 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
    200 syn keyword groovyTodo             contained TODO FIXME XXX
    201 if 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
    209 endif
    210 syn region  groovyComment          start="/\*"  end="\*/" contains=@groovyCommentSpecial,groovyTodo,@Spell
    211 syn match   groovyCommentStar      contained "^\s*\*[^/]"me=e-1
    212 syn match   groovyCommentStar      contained "^\s*\*$"
    213 syn match   groovyLineComment      "//.*" contains=@groovyCommentSpecial2,groovyTodo,@Spell
    214 hi def link groovyCommentString groovyString
    215 hi def link groovyComment2String groovyString
    216 hi def link groovyCommentCharacter groovyCharacter
    217 
    218 syn cluster groovyTop add=groovyComment,groovyLineComment
    219 
    220 if !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
    235 endif
    236 
    237 " match the special comment /**/
    238 syn match   groovyComment          "/\*\*/"
    239 
    240 " Strings and constants
    241 syn match   groovySpecialError     contained "\\."
    242 syn match   groovySpecialCharError contained "[^']"
    243 syn match   groovySpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
    244 syn match   groovyRegexChar        contained "\\."
    245 syn region  groovyString          start=+"+ end=+"+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
    246 syn region  groovyString          start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell
    247 syn region  groovyString          start=+"""+ end=+"""+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
    248 syn region  groovyString          start=+'''+ end=+'''+ contains=groovySpecialChar,groovySpecialError,@Spell
    249 if 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
    253 endif
    254 " syn region groovyELExpr start=+${+ end=+}+ keepend contained
    255 syn match groovyELExpr /\${.\{-}}/ contained
    256 " Fix: force use of the NFA regexp engine (2), see GitHub issue #7280
    257 syn 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
    258 hi 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        "'[^\\]'"
    272 syn match   groovyNumber           "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
    273 syn match   groovyNumber           "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
    274 syn match   groovyNumber           "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
    275 syn match   groovyNumber           "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
    276 
    277 " unicode characters
    278 syn match   groovySpecial "\\u\d\{4\}"
    279 
    280 syn cluster groovyTop add=groovyString,groovyCharacter,groovyNumber,groovySpecial,groovyStringError
    281 
    282 if 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
    297 endif
    298 
    299 if 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
    339 endif
    340 
    341 " Match all Exception classes
    342 syn match groovyExceptions        "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
    343 
    344 
    345 if !exists("groovy_minlines")
    346  let groovy_minlines = 10
    347 endif
    348 exec "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 " Highlight brackets
    366 " syn match  groovyBraces		"[{}]"
    367 " syn match  groovyBraces		"[\[\]]"
    368 " syn match  groovyBraces		"[\|]"
    369 
    370 if 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
    374 endif
    375 
    376 " catch errors caused by wrong parenthesis
    377 syn region  groovyParenT  transparent matchgroup=groovyParen  start="("  end=")" contains=@groovyTop,groovyParenT1
    378 syn region  groovyParenT1 transparent matchgroup=groovyParen1 start="(" end=")" contains=@groovyTop,groovyParenT2 contained
    379 syn region  groovyParenT2 transparent matchgroup=groovyParen2 start="(" end=")" contains=@groovyTop,groovyParenT  contained
    380 syn match   groovyParenError       ")"
    381 hi def link groovyParenError       groovyError
    382 
    383 " catch errors caused by wrong square parenthesis
    384 syn region  groovyParenT  transparent matchgroup=groovyParen  start="\["  end="\]" contains=@groovyTop,groovyParenT1
    385 syn region  groovyParenT1 transparent matchgroup=groovyParen1 start="\[" end="\]" contains=@groovyTop,groovyParenT2 contained
    386 syn region  groovyParenT2 transparent matchgroup=groovyParen2 start="\[" end="\]" contains=@groovyTop,groovyParenT  contained
    387 syn match   groovyParenError       "\]"
    388 
    389 " ###############################
    390 " java.vim default highlighting
    391 hi def link groovyFuncDef		Function
    392 hi def link groovyBraces		Function
    393 hi def link groovyBranch		Conditional
    394 hi def link groovyUserLabelRef	groovyUserLabel
    395 hi def link groovyLabel		Label
    396 hi def link groovyUserLabel		Label
    397 hi def link groovyConditional	Conditional
    398 hi def link groovyRepeat		Repeat
    399 hi def link groovyExceptions		Exception
    400 hi def link groovyAssert 		Statement
    401 hi def link groovyStorageClass	StorageClass
    402 hi def link groovyMethodDecl		groovyStorageClass
    403 hi def link groovyClassDecl		groovyStorageClass
    404 hi def link groovyScopeDecl		groovyStorageClass
    405 hi def link groovyBoolean		Boolean
    406 hi def link groovySpecial		Special
    407 hi def link groovySpecialError	Error
    408 hi def link groovySpecialCharError	Error
    409 hi def link groovyString		String
    410 hi def link groovyRegexChar		String
    411 hi def link groovyCharacter		Character
    412 hi def link groovySpecialChar	SpecialChar
    413 hi def link groovyNumber		Number
    414 hi def link groovyError		Error
    415 hi def link groovyStringError	Error
    416 hi def link groovyStatement		Statement
    417 hi def link groovyOperator		Operator
    418 hi def link groovyComment		Comment
    419 hi def link groovyDocComment		Comment
    420 hi def link groovyLineComment	Comment
    421 hi def link groovyConstant		Constant
    422 hi def link groovyTypedef		Typedef
    423 hi def link groovyTodo		Todo
    424 
    425 hi def link groovyCommentTitle	SpecialComment
    426 hi def link groovyDocTags		Special
    427 hi def link groovyDocParam		Function
    428 hi def link groovyCommentStar	groovyComment
    429 
    430 hi def link groovyType		Type
    431 hi def link groovyExternal		Include
    432 
    433 hi def link htmlComment		Special
    434 hi def link htmlCommentPart		Special
    435 hi def link groovySpaceError		Error
    436 hi def link groovyJDKBuiltin         Special
    437 hi def link groovyJDKOperOverl       Operator
    438 hi def link groovyJDKMethods         Function
    439 
    440 
    441 let b:current_syntax = "groovy"
    442 if main_syntax == 'groovy'
    443  unlet main_syntax
    444 endif
    445 
    446 let b:spell_options="contained"
    447 
    448 let &cpo = s:cpo_save
    449 unlet s:cpo_save
    450 
    451 " vim: ts=8