blob: c22c67bba327e394793ff8d2af0a26d9093e04a0 [file] [log] [blame]
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +02001" Vim syntax file
2" Language: Java
Bram Moolenaar00a927d2010-05-14 23:24:24 +02003" Maintainer: Claudio Fleiner <claudio@fleiner.com>
Bram Moolenaar071d4272004-06-13 20:20:40 +00004" URL: http://www.fleiner.com/vim/syntax/java.vim
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +01005" Last Change: 2015 March 01
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" Please check :help java.vim for comments on some of the options available.
8
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02009" quit when a syntax file was already loaded
Bram Moolenaar071d4272004-06-13 20:20:40 +000010if !exists("main_syntax")
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020011 if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000012 finish
13 endif
14 " we define it here so that included files can test for it
15 let main_syntax='java'
Bram Moolenaar5c736222010-01-06 20:54:52 +010016 syn region javaFold start="{" end="}" transparent fold
Bram Moolenaar071d4272004-06-13 20:20:40 +000017endif
18
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020019let s:cpo_save = &cpo
20set cpo&vim
21
Bram Moolenaar071d4272004-06-13 20:20:40 +000022" don't use standard HiLink, it will not work with included syntax files
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020023command! -nargs=+ JavaHiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000024
25" some characters that cannot be in a java program (outside a string)
26syn match javaError "[\\@`]"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +010027syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020028
Bram Moolenaar071d4272004-06-13 20:20:40 +000029syn match javaOK "\.\.\."
30
31" use separate name so that it can be deleted in javacc.vim
32syn match javaError2 "#\|=<"
33JavaHiLink javaError2 javaError
34
35
36
37" keyword definitions
38syn keyword javaExternal native package
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000039syn match javaExternal "\<import\>\(\s\+static\>\)\?"
Bram Moolenaar071d4272004-06-13 20:20:40 +000040syn keyword javaError goto const
41syn keyword javaConditional if else switch
42syn keyword javaRepeat while for do
43syn keyword javaBoolean true false
44syn keyword javaConstant null
45syn keyword javaTypedef this super
46syn keyword javaOperator new instanceof
47syn keyword javaType boolean char byte short int long float double
48syn keyword javaType void
49syn keyword javaStatement return
50syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable
51syn keyword javaExceptions throw try catch finally
52syn keyword javaAssert assert
53syn keyword javaMethodDecl synchronized throws
54syn keyword javaClassDecl extends implements interface
55" to differentiate the keyword class from MyClass.class we use a match here
56syn match javaTypedef "\.\s*\<class\>"ms=s+1
57syn keyword javaClassDecl enum
58syn match javaClassDecl "^class\>"
59syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +010060syn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>\(([^)]*)\)\=" contains=javaString
Bram Moolenaar00a927d2010-05-14 23:24:24 +020061syn match javaClassDecl "@interface\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000062syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
63syn match javaUserLabelRef "\k\+" contained
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000064syn match javaVarArg "\.\.\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000065syn keyword javaScopeDecl public protected private abstract
66
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000067if exists("java_highlight_java_lang_ids")
68 let java_highlight_all=1
69endif
Bram Moolenaar00a927d2010-05-14 23:24:24 +020070if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
Bram Moolenaar071d4272004-06-13 20:20:40 +000071 " java.lang.*
72 syn match javaLangClass "\<System\>"
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000073 syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
74 syn cluster javaTop add=javaR_JavaLang
75 syn cluster javaClasses add=javaR_JavaLang
76 JavaHiLink javaR_JavaLang javaR_Java
77 syn keyword javaC_JavaLang Process RuntimePermission StringKeySet CharacterData01 Class ThreadLocal ThreadLocalMap CharacterData0E Package Character StringCoding Long ProcessImpl ProcessEnvironment Short AssertionStatusDirectives 1PackageInfoProxy UnicodeBlock InheritableThreadLocal AbstractStringBuilder StringEnvironment ClassLoader ConditionalSpecialCasing CharacterDataPrivateUse StringBuffer StringDecoder Entry StringEntry WrappedHook StringBuilder StrictMath State ThreadGroup Runtime CharacterData02 MethodArray Object CharacterDataUndefined Integer Gate Boolean Enum Variable Subset StringEncoder Void Terminator CharsetSD IntegerCache CharacterCache Byte CharsetSE Thread SystemClassLoaderAction CharacterDataLatin1 StringValues StackTraceElement Shutdown ShortCache String ConverterSD ByteCache Lock EnclosingMethodInfo Math Float Value Double SecurityManager LongCache ProcessBuilder StringEntrySet Compiler Number UNIXProcess ConverterSE ExternalData CaseInsensitiveComparator CharacterData00 NativeLibrary
78 syn cluster javaTop add=javaC_JavaLang
79 syn cluster javaClasses add=javaC_JavaLang
80 JavaHiLink javaC_JavaLang javaC_Java
81 syn keyword javaE_JavaLang IncompatibleClassChangeError InternalError UnknownError ClassCircularityError AssertionError ThreadDeath IllegalAccessError NoClassDefFoundError ClassFormatError UnsupportedClassVersionError NoSuchFieldError VerifyError ExceptionInInitializerError InstantiationError LinkageError NoSuchMethodError Error UnsatisfiedLinkError StackOverflowError AbstractMethodError VirtualMachineError OutOfMemoryError
82 syn cluster javaTop add=javaE_JavaLang
83 syn cluster javaClasses add=javaE_JavaLang
84 JavaHiLink javaE_JavaLang javaE_Java
85 syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException
86 syn cluster javaTop add=javaX_JavaLang
87 syn cluster javaClasses add=javaX_JavaLang
88 JavaHiLink javaX_JavaLang javaX_Java
89
90 JavaHiLink javaR_Java javaR_
91 JavaHiLink javaC_Java javaC_
92 JavaHiLink javaE_Java javaE_
93 JavaHiLink javaX_Java javaX_
94 JavaHiLink javaX_ javaExceptions
95 JavaHiLink javaR_ javaExceptions
96 JavaHiLink javaE_ javaExceptions
97 JavaHiLink javaC_ javaConstant
98
Bram Moolenaar071d4272004-06-13 20:20:40 +000099 syn keyword javaLangObject clone equals finalize getClass hashCode
100 syn keyword javaLangObject notify notifyAll toString wait
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101 JavaHiLink javaLangObject javaConstant
Bram Moolenaar8ada17c2006-01-19 22:16:24 +0000102 syn cluster javaTop add=javaLangObject
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103endif
104
105if filereadable(expand("<sfile>:p:h")."/javaid.vim")
106 source <sfile>:p:h/javaid.vim
107endif
108
109if exists("java_space_errors")
110 if !exists("java_no_trail_space_error")
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200111 syn match javaSpaceError "\s\+$"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112 endif
113 if !exists("java_no_tab_space_error")
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200114 syn match javaSpaceError " \+\t"me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 endif
116endif
117
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100118syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200119syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
Bram Moolenaar071d4272004-06-13 20:20:40 +0000120syn keyword javaLabel default
121
Bram Moolenaarb6b046b2011-12-30 13:11:27 +0100122" highlighting C++ keywords as errors removed, too many people find it
123" annoying. Was: if !exists("java_allow_cpp_keywords")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000124
125" The following cluster contains all java groups except the contained ones
Bram Moolenaara5792f52005-11-23 21:25:05 +0000126syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127
128
129" Comments
130syn keyword javaTodo contained TODO FIXME XXX
131if exists("java_comment_strings")
132 syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200133 syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000134 syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
135 syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
136 syn match javaCommentCharacter contained "'[^\\]'"
137 syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
138 syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
139endif
140syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200141syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
142syn match javaCommentStar contained "^\s*\*$"
143syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000144JavaHiLink javaCommentString javaString
145JavaHiLink javaComment2String javaString
146JavaHiLink javaCommentCharacter javaCharacter
147
148syn cluster javaTop add=javaComment,javaLineComment
149
150if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
151 syntax case ignore
152 " syntax coloring for javadoc comments (HTML)
153 syntax include @javaHtml <sfile>:p:h/html.vim
154 unlet b:current_syntax
Bram Moolenaar5c736222010-01-06 20:54:52 +0100155 " HTML enables spell checking for all text that is not in a syntax item. This
156 " is wrong for Java (all identifiers would be spell-checked), so it's undone
157 " here.
158 syntax spell default
159
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200160 syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
161 syn region javaCommentTitle contained matchgroup=javaDocComment start="/\*\*" matchgroup=javaCommentTitle keepend end="\.$" end="\.[ \t\r<&]"me=e-1 end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1 contains=@javaHtml,javaCommentStar,javaTodo,@Spell,javaDocTags,javaDocSeeTag
Bram Moolenaar071d4272004-06-13 20:20:40 +0000162
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200163 syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200164 syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
165 syn match javaDocParam contained "\s\S\+"
166 syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
167 syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
Bram Moolenaar8ada17c2006-01-19 22:16:24 +0000168 syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169 syntax case match
170endif
171
172" match the special comment /**/
173syn match javaComment "/\*\*/"
174
175" Strings and constants
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200176syn match javaSpecialError contained "\\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000177syn match javaSpecialCharError contained "[^']"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200178syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
180" next line disabled, it can cause a crash for a long line
181"syn match javaStringError +"\([^"\\]\|\\.\)*$+
182syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
183syn match javaCharacter "'\\''" contains=javaSpecialChar
184syn match javaCharacter "'[^\\]'"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100185syn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>"
186syn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\="
187syn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>"
188syn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189
190" unicode characters
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200191syn match javaSpecial "\\u\d\{4\}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192
193syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
194
195if exists("java_highlight_functions")
196 if java_highlight_functions == "indent"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100197 syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
198 syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
199 syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
200 syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
Bram Moolenaar071d4272004-06-13 20:20:40 +0000201 else
202 " This line catches method declarations at any indentation>0, but it assumes
203 " two things:
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200204 " 1. class names are always capitalized (ie: Button)
205 " 2. method names are never capitalized (except constructors, of course)
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100206 "syn region javaFuncDef 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=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses
207 syn region javaFuncDef start=+^\s\+\(\(public\|protected\|private\|static\|abstract\|final\|native\|synchronized\)\s\+\)*\(<.*>\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*(+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,javaComment,javaLineComment,@javaClasses,javaAnnotation
Bram Moolenaar071d4272004-06-13 20:20:40 +0000208 endif
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100209 syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210 syn match javaBraces "[{}]"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100211 syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef
Bram Moolenaar071d4272004-06-13 20:20:40 +0000212endif
213
214if exists("java_highlight_debug")
215
216 " Strings and constants
217 syn match javaDebugSpecial contained "\\\d\d\d\|\\."
218 syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200219 syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000220 syn match javaDebugCharacter contained "'[^\\]'"
221 syn match javaDebugSpecialCharacter contained "'\\.'"
222 syn match javaDebugSpecialCharacter contained "'\\''"
223 syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
224 syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
225 syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
226 syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
227 syn keyword javaDebugBoolean contained true false
228 syn keyword javaDebugType contained null this super
229 syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
230
231 " to make this work you must define the highlighting for these groups
232 syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000233 syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
Bram Moolenaar071d4272004-06-13 20:20:40 +0000234 syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
235 syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
236
237 syn cluster javaTop add=javaDebug
238
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200239 JavaHiLink javaDebug Debug
240 JavaHiLink javaDebugString DebugString
241 JavaHiLink javaDebugStringError javaError
242 JavaHiLink javaDebugType DebugType
243 JavaHiLink javaDebugBoolean DebugBoolean
244 JavaHiLink javaDebugNumber Debug
245 JavaHiLink javaDebugSpecial DebugSpecial
246 JavaHiLink javaDebugSpecialCharacter DebugSpecial
247 JavaHiLink javaDebugCharacter DebugString
248 JavaHiLink javaDebugParen Debug
Bram Moolenaar071d4272004-06-13 20:20:40 +0000249
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200250 JavaHiLink DebugString String
251 JavaHiLink DebugSpecial Special
252 JavaHiLink DebugBoolean Boolean
253 JavaHiLink DebugType Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254endif
255
256if exists("java_mark_braces_in_parens_as_errors")
257 syn match javaInParen contained "[{}]"
258 JavaHiLink javaInParen javaError
259 syn cluster javaTop add=javaInParen
260endif
261
262" catch errors caused by wrong parenthesis
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100263syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000264syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
265syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200266syn match javaParenError ")"
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000267" catch errors caused by wrong square parenthesis
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100268syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000269syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
270syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200271syn match javaParenError "\]"
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000272
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200273JavaHiLink javaParenError javaError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100275if exists("java_highlight_functions")
276 syn match javaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*->"
277 " needs to be defined after the parenthesis error catcher to work
278endif
279
Bram Moolenaar071d4272004-06-13 20:20:40 +0000280if !exists("java_minlines")
281 let java_minlines = 10
282endif
283exec "syn sync ccomment javaComment minlines=" . java_minlines
284
285" The default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200286JavaHiLink javaLambdaDef Function
287JavaHiLink javaFuncDef Function
288JavaHiLink javaVarArg Function
289JavaHiLink javaBraces Function
290JavaHiLink javaBranch Conditional
291JavaHiLink javaUserLabelRef javaUserLabel
292JavaHiLink javaLabel Label
293JavaHiLink javaUserLabel Label
294JavaHiLink javaConditional Conditional
295JavaHiLink javaRepeat Repeat
296JavaHiLink javaExceptions Exception
297JavaHiLink javaAssert Statement
298JavaHiLink javaStorageClass StorageClass
299JavaHiLink javaMethodDecl javaStorageClass
300JavaHiLink javaClassDecl javaStorageClass
301JavaHiLink javaScopeDecl javaStorageClass
302JavaHiLink javaBoolean Boolean
303JavaHiLink javaSpecial Special
304JavaHiLink javaSpecialError Error
305JavaHiLink javaSpecialCharError Error
306JavaHiLink javaString String
307JavaHiLink javaCharacter Character
308JavaHiLink javaSpecialChar SpecialChar
309JavaHiLink javaNumber Number
310JavaHiLink javaError Error
311JavaHiLink javaStringError Error
312JavaHiLink javaStatement Statement
313JavaHiLink javaOperator Operator
314JavaHiLink javaComment Comment
315JavaHiLink javaDocComment Comment
316JavaHiLink javaLineComment Comment
317JavaHiLink javaConstant Constant
318JavaHiLink javaTypedef Typedef
319JavaHiLink javaTodo Todo
320JavaHiLink javaAnnotation PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000321
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200322JavaHiLink javaCommentTitle SpecialComment
323JavaHiLink javaDocTags Special
324JavaHiLink javaDocParam Function
325JavaHiLink javaDocSeeTagParam Function
326JavaHiLink javaCommentStar javaComment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000327
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200328JavaHiLink javaType Type
329JavaHiLink javaExternal Include
Bram Moolenaar071d4272004-06-13 20:20:40 +0000330
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200331JavaHiLink htmlComment Special
332JavaHiLink htmlCommentPart Special
333JavaHiLink javaSpaceError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000334
335delcommand JavaHiLink
336
337let b:current_syntax = "java"
338
339if main_syntax == 'java'
340 unlet main_syntax
341endif
342
343let b:spell_options="contained"
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200344let &cpo = s:cpo_save
345unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000346
347" vim: ts=8