blob: e113a904c3dd819ef7793a7d545967e02e274928 [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
9" Quit when a syntax file was already loaded
10if !exists("main_syntax")
11 if version < 600
12 syntax clear
13 elseif exists("b:current_syntax")
14 finish
15 endif
16 " we define it here so that included files can test for it
17 let main_syntax='java'
Bram Moolenaar5c736222010-01-06 20:54:52 +010018 syn region javaFold start="{" end="}" transparent fold
Bram Moolenaar071d4272004-06-13 20:20:40 +000019endif
20
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020021let s:cpo_save = &cpo
22set cpo&vim
23
Bram Moolenaar071d4272004-06-13 20:20:40 +000024" don't use standard HiLink, it will not work with included syntax files
25if version < 508
26 command! -nargs=+ JavaHiLink hi link <args>
27else
28 command! -nargs=+ JavaHiLink hi def link <args>
29endif
30
31" some characters that cannot be in a java program (outside a string)
32syn match javaError "[\\@`]"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +010033syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020034
Bram Moolenaar071d4272004-06-13 20:20:40 +000035syn match javaOK "\.\.\."
36
37" use separate name so that it can be deleted in javacc.vim
38syn match javaError2 "#\|=<"
39JavaHiLink javaError2 javaError
40
41
42
43" keyword definitions
44syn keyword javaExternal native package
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000045syn match javaExternal "\<import\>\(\s\+static\>\)\?"
Bram Moolenaar071d4272004-06-13 20:20:40 +000046syn keyword javaError goto const
47syn keyword javaConditional if else switch
48syn keyword javaRepeat while for do
49syn keyword javaBoolean true false
50syn keyword javaConstant null
51syn keyword javaTypedef this super
52syn keyword javaOperator new instanceof
53syn keyword javaType boolean char byte short int long float double
54syn keyword javaType void
55syn keyword javaStatement return
56syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable
57syn keyword javaExceptions throw try catch finally
58syn keyword javaAssert assert
59syn keyword javaMethodDecl synchronized throws
60syn keyword javaClassDecl extends implements interface
61" to differentiate the keyword class from MyClass.class we use a match here
62syn match javaTypedef "\.\s*\<class\>"ms=s+1
63syn keyword javaClassDecl enum
64syn match javaClassDecl "^class\>"
65syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +010066syn 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 +020067syn match javaClassDecl "@interface\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000068syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
69syn match javaUserLabelRef "\k\+" contained
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000070syn match javaVarArg "\.\.\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000071syn keyword javaScopeDecl public protected private abstract
72
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000073if exists("java_highlight_java_lang_ids")
74 let java_highlight_all=1
75endif
Bram Moolenaar00a927d2010-05-14 23:24:24 +020076if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
Bram Moolenaar071d4272004-06-13 20:20:40 +000077 " java.lang.*
78 syn match javaLangClass "\<System\>"
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000079 syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
80 syn cluster javaTop add=javaR_JavaLang
81 syn cluster javaClasses add=javaR_JavaLang
82 JavaHiLink javaR_JavaLang javaR_Java
83 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
84 syn cluster javaTop add=javaC_JavaLang
85 syn cluster javaClasses add=javaC_JavaLang
86 JavaHiLink javaC_JavaLang javaC_Java
87 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
88 syn cluster javaTop add=javaE_JavaLang
89 syn cluster javaClasses add=javaE_JavaLang
90 JavaHiLink javaE_JavaLang javaE_Java
91 syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException
92 syn cluster javaTop add=javaX_JavaLang
93 syn cluster javaClasses add=javaX_JavaLang
94 JavaHiLink javaX_JavaLang javaX_Java
95
96 JavaHiLink javaR_Java javaR_
97 JavaHiLink javaC_Java javaC_
98 JavaHiLink javaE_Java javaE_
99 JavaHiLink javaX_Java javaX_
100 JavaHiLink javaX_ javaExceptions
101 JavaHiLink javaR_ javaExceptions
102 JavaHiLink javaE_ javaExceptions
103 JavaHiLink javaC_ javaConstant
104
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105 syn keyword javaLangObject clone equals finalize getClass hashCode
106 syn keyword javaLangObject notify notifyAll toString wait
Bram Moolenaar071d4272004-06-13 20:20:40 +0000107 JavaHiLink javaLangObject javaConstant
Bram Moolenaar8ada17c2006-01-19 22:16:24 +0000108 syn cluster javaTop add=javaLangObject
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109endif
110
111if filereadable(expand("<sfile>:p:h")."/javaid.vim")
112 source <sfile>:p:h/javaid.vim
113endif
114
115if exists("java_space_errors")
116 if !exists("java_no_trail_space_error")
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200117 syn match javaSpaceError "\s\+$"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000118 endif
119 if !exists("java_no_tab_space_error")
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200120 syn match javaSpaceError " \+\t"me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000121 endif
122endif
123
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100124syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200125syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126syn keyword javaLabel default
127
Bram Moolenaarb6b046b2011-12-30 13:11:27 +0100128" highlighting C++ keywords as errors removed, too many people find it
129" annoying. Was: if !exists("java_allow_cpp_keywords")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130
131" The following cluster contains all java groups except the contained ones
Bram Moolenaara5792f52005-11-23 21:25:05 +0000132syn 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 +0000133
134
135" Comments
136syn keyword javaTodo contained TODO FIXME XXX
137if exists("java_comment_strings")
138 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 +0200139 syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000140 syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
141 syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
142 syn match javaCommentCharacter contained "'[^\\]'"
143 syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
144 syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
145endif
146syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200147syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
148syn match javaCommentStar contained "^\s*\*$"
149syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150JavaHiLink javaCommentString javaString
151JavaHiLink javaComment2String javaString
152JavaHiLink javaCommentCharacter javaCharacter
153
154syn cluster javaTop add=javaComment,javaLineComment
155
156if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
157 syntax case ignore
158 " syntax coloring for javadoc comments (HTML)
159 syntax include @javaHtml <sfile>:p:h/html.vim
160 unlet b:current_syntax
Bram Moolenaar5c736222010-01-06 20:54:52 +0100161 " HTML enables spell checking for all text that is not in a syntax item. This
162 " is wrong for Java (all identifiers would be spell-checked), so it's undone
163 " here.
164 syntax spell default
165
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200166 syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
167 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 +0000168
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200169 syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200170 syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
171 syn match javaDocParam contained "\s\S\+"
172 syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
173 syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
Bram Moolenaar8ada17c2006-01-19 22:16:24 +0000174 syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000175 syntax case match
176endif
177
178" match the special comment /**/
179syn match javaComment "/\*\*/"
180
181" Strings and constants
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200182syn match javaSpecialError contained "\\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000183syn match javaSpecialCharError contained "[^']"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200184syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
186" next line disabled, it can cause a crash for a long line
187"syn match javaStringError +"\([^"\\]\|\\.\)*$+
188syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
189syn match javaCharacter "'\\''" contains=javaSpecialChar
190syn match javaCharacter "'[^\\]'"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100191syn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>"
192syn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\="
193syn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>"
194syn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000195
196" unicode characters
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200197syn match javaSpecial "\\u\d\{4\}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000198
199syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
200
201if exists("java_highlight_functions")
202 if java_highlight_functions == "indent"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100203 syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
204 syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
205 syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
206 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 +0000207 else
208 " This line catches method declarations at any indentation>0, but it assumes
209 " two things:
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200210 " 1. class names are always capitalized (ie: Button)
211 " 2. method names are never capitalized (except constructors, of course)
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100212 "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
213 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 +0000214 endif
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100215 syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000216 syn match javaBraces "[{}]"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100217 syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218endif
219
220if exists("java_highlight_debug")
221
222 " Strings and constants
223 syn match javaDebugSpecial contained "\\\d\d\d\|\\."
224 syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200225 syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000226 syn match javaDebugCharacter contained "'[^\\]'"
227 syn match javaDebugSpecialCharacter contained "'\\.'"
228 syn match javaDebugSpecialCharacter contained "'\\''"
229 syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
230 syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
231 syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
232 syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
233 syn keyword javaDebugBoolean contained true false
234 syn keyword javaDebugType contained null this super
235 syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
236
237 " to make this work you must define the highlighting for these groups
238 syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000239 syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
Bram Moolenaar071d4272004-06-13 20:20:40 +0000240 syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
241 syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
242
243 syn cluster javaTop add=javaDebug
244
245 if version >= 508 || !exists("did_c_syn_inits")
246 JavaHiLink javaDebug Debug
247 JavaHiLink javaDebugString DebugString
248 JavaHiLink javaDebugStringError javaError
249 JavaHiLink javaDebugType DebugType
250 JavaHiLink javaDebugBoolean DebugBoolean
251 JavaHiLink javaDebugNumber Debug
252 JavaHiLink javaDebugSpecial DebugSpecial
253 JavaHiLink javaDebugSpecialCharacter DebugSpecial
254 JavaHiLink javaDebugCharacter DebugString
255 JavaHiLink javaDebugParen Debug
256
257 JavaHiLink DebugString String
258 JavaHiLink DebugSpecial Special
259 JavaHiLink DebugBoolean Boolean
260 JavaHiLink DebugType Type
261 endif
262endif
263
264if exists("java_mark_braces_in_parens_as_errors")
265 syn match javaInParen contained "[{}]"
266 JavaHiLink javaInParen javaError
267 syn cluster javaTop add=javaInParen
268endif
269
270" catch errors caused by wrong parenthesis
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100271syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000272syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
273syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200274syn match javaParenError ")"
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000275" catch errors caused by wrong square parenthesis
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100276syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000277syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
278syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200279syn match javaParenError "\]"
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000280
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200281JavaHiLink javaParenError javaError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000282
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100283if exists("java_highlight_functions")
284 syn match javaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*->"
285 " needs to be defined after the parenthesis error catcher to work
286endif
287
Bram Moolenaar071d4272004-06-13 20:20:40 +0000288if !exists("java_minlines")
289 let java_minlines = 10
290endif
291exec "syn sync ccomment javaComment minlines=" . java_minlines
292
293" The default highlighting.
294if version >= 508 || !exists("did_java_syn_inits")
295 if version < 508
296 let did_java_syn_inits = 1
297 endif
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100298 JavaHiLink javaLambdaDef Function
Bram Moolenaar071d4272004-06-13 20:20:40 +0000299 JavaHiLink javaFuncDef Function
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200300 JavaHiLink javaVarArg Function
Bram Moolenaar071d4272004-06-13 20:20:40 +0000301 JavaHiLink javaBraces Function
302 JavaHiLink javaBranch Conditional
303 JavaHiLink javaUserLabelRef javaUserLabel
304 JavaHiLink javaLabel Label
305 JavaHiLink javaUserLabel Label
306 JavaHiLink javaConditional Conditional
307 JavaHiLink javaRepeat Repeat
308 JavaHiLink javaExceptions Exception
309 JavaHiLink javaAssert Statement
310 JavaHiLink javaStorageClass StorageClass
311 JavaHiLink javaMethodDecl javaStorageClass
312 JavaHiLink javaClassDecl javaStorageClass
313 JavaHiLink javaScopeDecl javaStorageClass
314 JavaHiLink javaBoolean Boolean
315 JavaHiLink javaSpecial Special
316 JavaHiLink javaSpecialError Error
317 JavaHiLink javaSpecialCharError Error
318 JavaHiLink javaString String
319 JavaHiLink javaCharacter Character
320 JavaHiLink javaSpecialChar SpecialChar
321 JavaHiLink javaNumber Number
322 JavaHiLink javaError Error
323 JavaHiLink javaStringError Error
324 JavaHiLink javaStatement Statement
325 JavaHiLink javaOperator Operator
326 JavaHiLink javaComment Comment
327 JavaHiLink javaDocComment Comment
328 JavaHiLink javaLineComment Comment
329 JavaHiLink javaConstant Constant
330 JavaHiLink javaTypedef Typedef
331 JavaHiLink javaTodo Todo
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200332 JavaHiLink javaAnnotation PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333
334 JavaHiLink javaCommentTitle SpecialComment
335 JavaHiLink javaDocTags Special
336 JavaHiLink javaDocParam Function
Bram Moolenaar8ada17c2006-01-19 22:16:24 +0000337 JavaHiLink javaDocSeeTagParam Function
Bram Moolenaar071d4272004-06-13 20:20:40 +0000338 JavaHiLink javaCommentStar javaComment
339
340 JavaHiLink javaType Type
341 JavaHiLink javaExternal Include
342
343 JavaHiLink htmlComment Special
344 JavaHiLink htmlCommentPart Special
345 JavaHiLink javaSpaceError Error
346endif
347
348delcommand JavaHiLink
349
350let b:current_syntax = "java"
351
352if main_syntax == 'java'
353 unlet main_syntax
354endif
355
356let b:spell_options="contained"
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200357let &cpo = s:cpo_save
358unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000359
360" vim: ts=8