blob: 84e3779e7599345195c6ae8db89279c5c9dc8c49 [file] [log] [blame]
Bram Moolenaarc01140a2006-03-24 22:21:52 +00001" Vim syntax file
2" Language: Groovy
Bram Moolenaar81af9252010-12-10 20:35:50 +01003" Original Author: Alessio Pace <billy.corgan@tiscali.it>
4" Maintainer: Tobias Rapp <yahuxo@gmx.de>
Bram Moolenaar26852122016-05-24 20:02:38 +02005" Version: 0.1.16
Bram Moolenaar6be7f872012-01-20 21:08:56 +01006" URL: http://www.vim.org/scripts/script.php?script_id=945
Bram Moolenaar26852122016-05-24 20:02:38 +02007" Last Change: 2016 May 23
Bram Moolenaarc01140a2006-03-24 22:21:52 +00008
Bram Moolenaar81af9252010-12-10 20:35:50 +01009" THE ORIGINAL AUTHOR'S NOTES:
10"
Bram Moolenaarc01140a2006-03-24 22:21:52 +000011" This is my very first vim script, I hope to have
12" done it the right way.
Bram Moolenaar6be7f872012-01-20 21:08:56 +010013"
Bram Moolenaarc01140a2006-03-24 22:21:52 +000014" 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"
Bram Moolenaar81af9252010-12-10 20:35:50 +010022" HOWTO USE IT (INSTALL) when not part of the distribution:
Bram Moolenaarc01140a2006-03-24 22:21:52 +000023"
24" 1) copy the file in the (global or user's $HOME/.vim/syntax/) syntax folder
Bram Moolenaar6be7f872012-01-20 21:08:56 +010025"
Bram Moolenaarc01140a2006-03-24 22:21:52 +000026" 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
Bram Moolenaar6be7f872012-01-20 21:08:56 +010041"
Bram Moolenaarc01140a2006-03-24 22:21:52 +000042" 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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020047" quit when a syntax file was already loaded
Bram Moolenaarc01140a2006-03-24 22:21:52 +000048if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020049 if exists("b:current_syntax")
Bram Moolenaarc01140a2006-03-24 22:21:52 +000050 finish
51 endif
52 " we define it here so that included files can test for it
53 let main_syntax='groovy'
54endif
55
Bram Moolenaar6be7f872012-01-20 21:08:56 +010056let s:cpo_save = &cpo
57set cpo&vim
58
Bram Moolenaarc01140a2006-03-24 22:21:52 +000059" don't use standard HiLink, it will not work with included syntax files
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020060command! -nargs=+ GroovyHiLink hi def link <args>
Bram Moolenaarc01140a2006-03-24 22:21:52 +000061
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
Bram Moolenaarff034192013-04-24 18:51:19 +020071syn match groovyExternal "\<import\>\(\s\+static\>\)\?"
Bram Moolenaarc01140a2006-03-24 22:21:52 +000072syn 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
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100101
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000102 syn match groovyJavaLangClass "\<System\>"
103 syn keyword groovyJavaLangClass Cloneable Comparable Runnable Serializable Boolean Byte Class Object
104 syn keyword groovyJavaLangClass Character CharSequence ClassLoader Compiler
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100105 " syn keyword groovyJavaLangClass Integer Double Float Long
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000106 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 "->"
Bram Moolenaarf2571c62015-06-09 19:44:55 +0200154syn match groovyLineComment '^\%1l#!.*' " Shebang line
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000155syn match groovyExceptions "\<Exception\>\|\<[A-Z]\{1,}[a-zA-Z0-9]*Exception\>"
156
157" Groovy JDK stuff
158syn keyword groovyJDKBuiltin as def in
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100159syn keyword groovyJDKOperOverl div minus plus abs round power multiply
160syn keyword groovyJDKMethods each call inject sort print println
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000161syn keyword groovyJDKMethods getAt putAt size push pop toList getText writeLine eachLine readLines
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100162syn keyword groovyJDKMethods withReader withStream withWriter withPrintWriter write read leftShift
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000163syn keyword groovyJDKMethods withWriterAppend readBytes splitEachLine
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100164syn keyword groovyJDKMethods newInputStream newOutputStream newPrintWriter newReader newWriter
165syn keyword groovyJDKMethods compareTo next previous isCase
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000166syn keyword groovyJDKMethods times step toInteger upto any collect dump every find findAll grep
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100167syn keyword groovyJDKMethods inspect invokeMethods join
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000168syn keyword groovyJDKMethods getErr getIn getOut waitForOrKill
169syn keyword groovyJDKMethods count tokenize asList flatten immutable intersect reverse reverseEach
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100170syn keyword groovyJDKMethods subMap append asWritable eachByte eachLine eachFile
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000171syn 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
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000217GroovyHiLink 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
Bram Moolenaar5c736222010-01-06 20:54:52 +0100229 syntax spell default " added by Bram
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000230 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 "[^']"
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100246syn match groovySpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
247syn match groovyRegexChar contained "\\."
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000248syn region groovyString start=+"+ end=+"+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
Bram Moolenaar81af9252010-12-10 20:35:50 +0100249syn 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
Bram Moolenaar26852122016-05-24 20:02:38 +0200252if 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
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000257" syn region groovyELExpr start=+${+ end=+}+ keepend contained
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100258syn match groovyELExpr /\${.\{-}}/ contained
259syn match groovyELExpr /\$[a-zA-Z_][a-zA-Z0-9_.]*/ contained
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000260GroovyHiLink 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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200326 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
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100336
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200337 GroovyHiLink DebugString String
338 GroovyHiLink DebugSpecial Special
339 GroovyHiLink DebugBoolean Boolean
340 GroovyHiLink DebugType Type
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000341endif
342
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100343" Match all Exception classes
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000344syn 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
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100353" ###################
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000354" 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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200393GroovyHiLink 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
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100426
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200427GroovyHiLink groovyCommentTitle SpecialComment
428GroovyHiLink groovyDocTags Special
429GroovyHiLink groovyDocParam Function
430GroovyHiLink groovyCommentStar groovyComment
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100431
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200432GroovyHiLink groovyType Type
433GroovyHiLink groovyExternal Include
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100434
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200435GroovyHiLink htmlComment Special
436GroovyHiLink htmlCommentPart Special
437GroovyHiLink groovySpaceError Error
438GroovyHiLink groovyJDKBuiltin Special
439GroovyHiLink groovyJDKOperOverl Operator
440GroovyHiLink groovyJDKMethods Function
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000441
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
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100452let &cpo = s:cpo_save
453unlet s:cpo_save
454
Bram Moolenaarc01140a2006-03-24 22:21:52 +0000455" vim: ts=8