blob: 89320597f13ee880c97eb952be0b19e0c1cbd6b3 [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" some characters that cannot be in a java program (outside a string)
23syn match javaError "[\\@`]"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +010024syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020025
Bram Moolenaar071d4272004-06-13 20:20:40 +000026syn match javaOK "\.\.\."
27
28" use separate name so that it can be deleted in javacc.vim
29syn match javaError2 "#\|=<"
Bram Moolenaarf37506f2016-08-31 22:22:10 +020030hi def link javaError2 javaError
Bram Moolenaar071d4272004-06-13 20:20:40 +000031
32
33
34" keyword definitions
35syn keyword javaExternal native package
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000036syn match javaExternal "\<import\>\(\s\+static\>\)\?"
Bram Moolenaar071d4272004-06-13 20:20:40 +000037syn keyword javaError goto const
38syn keyword javaConditional if else switch
39syn keyword javaRepeat while for do
40syn keyword javaBoolean true false
41syn keyword javaConstant null
42syn keyword javaTypedef this super
43syn keyword javaOperator new instanceof
44syn keyword javaType boolean char byte short int long float double
45syn keyword javaType void
46syn keyword javaStatement return
47syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable
48syn keyword javaExceptions throw try catch finally
49syn keyword javaAssert assert
50syn keyword javaMethodDecl synchronized throws
51syn keyword javaClassDecl extends implements interface
52" to differentiate the keyword class from MyClass.class we use a match here
53syn match javaTypedef "\.\s*\<class\>"ms=s+1
54syn keyword javaClassDecl enum
55syn match javaClassDecl "^class\>"
56syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +010057syn 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 +020058syn match javaClassDecl "@interface\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000059syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
60syn match javaUserLabelRef "\k\+" contained
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000061syn match javaVarArg "\.\.\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000062syn keyword javaScopeDecl public protected private abstract
63
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000064if exists("java_highlight_java_lang_ids")
65 let java_highlight_all=1
66endif
Bram Moolenaar00a927d2010-05-14 23:24:24 +020067if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
Bram Moolenaar071d4272004-06-13 20:20:40 +000068 " java.lang.*
69 syn match javaLangClass "\<System\>"
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000070 syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
71 syn cluster javaTop add=javaR_JavaLang
72 syn cluster javaClasses add=javaR_JavaLang
Bram Moolenaarf37506f2016-08-31 22:22:10 +020073 hi def link javaR_JavaLang javaR_Java
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000074 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
75 syn cluster javaTop add=javaC_JavaLang
76 syn cluster javaClasses add=javaC_JavaLang
Bram Moolenaarf37506f2016-08-31 22:22:10 +020077 hi def link javaC_JavaLang javaC_Java
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000078 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
79 syn cluster javaTop add=javaE_JavaLang
80 syn cluster javaClasses add=javaE_JavaLang
Bram Moolenaarf37506f2016-08-31 22:22:10 +020081 hi def link javaE_JavaLang javaE_Java
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000082 syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException
83 syn cluster javaTop add=javaX_JavaLang
84 syn cluster javaClasses add=javaX_JavaLang
Bram Moolenaarf37506f2016-08-31 22:22:10 +020085 hi def link javaX_JavaLang javaX_Java
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000086
Bram Moolenaarf37506f2016-08-31 22:22:10 +020087 hi def link javaR_Java javaR_
88 hi def link javaC_Java javaC_
89 hi def link javaE_Java javaE_
90 hi def link javaX_Java javaX_
91 hi def link javaX_ javaExceptions
92 hi def link javaR_ javaExceptions
93 hi def link javaE_ javaExceptions
94 hi def link javaC_ javaConstant
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000095
Bram Moolenaar071d4272004-06-13 20:20:40 +000096 syn keyword javaLangObject clone equals finalize getClass hashCode
97 syn keyword javaLangObject notify notifyAll toString wait
Bram Moolenaarf37506f2016-08-31 22:22:10 +020098 hi def link javaLangObject javaConstant
Bram Moolenaar8ada17c2006-01-19 22:16:24 +000099 syn cluster javaTop add=javaLangObject
Bram Moolenaar071d4272004-06-13 20:20:40 +0000100endif
101
102if filereadable(expand("<sfile>:p:h")."/javaid.vim")
103 source <sfile>:p:h/javaid.vim
104endif
105
106if exists("java_space_errors")
107 if !exists("java_no_trail_space_error")
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200108 syn match javaSpaceError "\s\+$"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109 endif
110 if !exists("java_no_tab_space_error")
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200111 syn match javaSpaceError " \+\t"me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112 endif
113endif
114
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100115syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200116syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
Bram Moolenaar071d4272004-06-13 20:20:40 +0000117syn keyword javaLabel default
118
Bram Moolenaarb6b046b2011-12-30 13:11:27 +0100119" highlighting C++ keywords as errors removed, too many people find it
120" annoying. Was: if !exists("java_allow_cpp_keywords")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000121
122" The following cluster contains all java groups except the contained ones
Bram Moolenaara5792f52005-11-23 21:25:05 +0000123syn 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 +0000124
125
126" Comments
127syn keyword javaTodo contained TODO FIXME XXX
128if exists("java_comment_strings")
129 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 +0200130 syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +0000131 syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
132 syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
133 syn match javaCommentCharacter contained "'[^\\]'"
134 syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
135 syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
136endif
137syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200138syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
139syn match javaCommentStar contained "^\s*\*$"
140syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200141hi def link javaCommentString javaString
142hi def link javaComment2String javaString
143hi def link javaCommentCharacter javaCharacter
Bram Moolenaar071d4272004-06-13 20:20:40 +0000144
145syn cluster javaTop add=javaComment,javaLineComment
146
147if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
148 syntax case ignore
149 " syntax coloring for javadoc comments (HTML)
150 syntax include @javaHtml <sfile>:p:h/html.vim
151 unlet b:current_syntax
Bram Moolenaar5c736222010-01-06 20:54:52 +0100152 " HTML enables spell checking for all text that is not in a syntax item. This
153 " is wrong for Java (all identifiers would be spell-checked), so it's undone
154 " here.
155 syntax spell default
156
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200157 syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
158 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 +0000159
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200160 syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200161 syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
162 syn match javaDocParam contained "\s\S\+"
163 syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
164 syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
Bram Moolenaar8ada17c2006-01-19 22:16:24 +0000165 syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend
Bram Moolenaar071d4272004-06-13 20:20:40 +0000166 syntax case match
167endif
168
169" match the special comment /**/
170syn match javaComment "/\*\*/"
171
172" Strings and constants
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200173syn match javaSpecialError contained "\\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000174syn match javaSpecialCharError contained "[^']"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200175syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000176syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
177" next line disabled, it can cause a crash for a long line
178"syn match javaStringError +"\([^"\\]\|\\.\)*$+
179syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
180syn match javaCharacter "'\\''" contains=javaSpecialChar
181syn match javaCharacter "'[^\\]'"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100182syn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>"
183syn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\="
184syn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>"
185syn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000186
187" unicode characters
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200188syn match javaSpecial "\\u\d\{4\}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189
190syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
191
192if exists("java_highlight_functions")
193 if java_highlight_functions == "indent"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100194 syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
195 syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
196 syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation
197 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 +0000198 else
199 " This line catches method declarations at any indentation>0, but it assumes
200 " two things:
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200201 " 1. class names are always capitalized (ie: Button)
202 " 2. method names are never capitalized (except constructors, of course)
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100203 "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
204 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 +0000205 endif
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100206 syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000207 syn match javaBraces "[{}]"
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100208 syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef
Bram Moolenaar071d4272004-06-13 20:20:40 +0000209endif
210
211if exists("java_highlight_debug")
212
213 " Strings and constants
214 syn match javaDebugSpecial contained "\\\d\d\d\|\\."
215 syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200216 syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217 syn match javaDebugCharacter contained "'[^\\]'"
218 syn match javaDebugSpecialCharacter contained "'\\.'"
219 syn match javaDebugSpecialCharacter contained "'\\''"
220 syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
221 syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
222 syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
223 syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
224 syn keyword javaDebugBoolean contained true false
225 syn keyword javaDebugType contained null this super
226 syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
227
228 " to make this work you must define the highlighting for these groups
229 syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000230 syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
Bram Moolenaar071d4272004-06-13 20:20:40 +0000231 syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
232 syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
233
234 syn cluster javaTop add=javaDebug
235
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200236 hi def link javaDebug Debug
237 hi def link javaDebugString DebugString
238 hi def link javaDebugStringError javaError
239 hi def link javaDebugType DebugType
240 hi def link javaDebugBoolean DebugBoolean
241 hi def link javaDebugNumber Debug
242 hi def link javaDebugSpecial DebugSpecial
243 hi def link javaDebugSpecialCharacter DebugSpecial
244 hi def link javaDebugCharacter DebugString
245 hi def link javaDebugParen Debug
Bram Moolenaar071d4272004-06-13 20:20:40 +0000246
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200247 hi def link DebugString String
248 hi def link DebugSpecial Special
249 hi def link DebugBoolean Boolean
250 hi def link DebugType Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000251endif
252
253if exists("java_mark_braces_in_parens_as_errors")
254 syn match javaInParen contained "[{}]"
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200255 hi def link javaInParen javaError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256 syn cluster javaTop add=javaInParen
257endif
258
259" catch errors caused by wrong parenthesis
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100260syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
262syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200263syn match javaParenError ")"
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000264" catch errors caused by wrong square parenthesis
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100265syn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000266syn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
267syn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200268syn match javaParenError "\]"
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000269
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200270hi def link javaParenError javaError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271
Bram Moolenaarf3c2afb2015-03-02 23:16:07 +0100272if exists("java_highlight_functions")
273 syn match javaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*->"
274 " needs to be defined after the parenthesis error catcher to work
275endif
276
Bram Moolenaar071d4272004-06-13 20:20:40 +0000277if !exists("java_minlines")
278 let java_minlines = 10
279endif
280exec "syn sync ccomment javaComment minlines=" . java_minlines
281
282" The default highlighting.
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200283hi def link javaLambdaDef Function
284hi def link javaFuncDef Function
285hi def link javaVarArg Function
286hi def link javaBraces Function
287hi def link javaBranch Conditional
288hi def link javaUserLabelRef javaUserLabel
289hi def link javaLabel Label
290hi def link javaUserLabel Label
291hi def link javaConditional Conditional
292hi def link javaRepeat Repeat
293hi def link javaExceptions Exception
294hi def link javaAssert Statement
295hi def link javaStorageClass StorageClass
296hi def link javaMethodDecl javaStorageClass
297hi def link javaClassDecl javaStorageClass
298hi def link javaScopeDecl javaStorageClass
299hi def link javaBoolean Boolean
300hi def link javaSpecial Special
301hi def link javaSpecialError Error
302hi def link javaSpecialCharError Error
303hi def link javaString String
304hi def link javaCharacter Character
305hi def link javaSpecialChar SpecialChar
306hi def link javaNumber Number
307hi def link javaError Error
308hi def link javaStringError Error
309hi def link javaStatement Statement
310hi def link javaOperator Operator
311hi def link javaComment Comment
312hi def link javaDocComment Comment
313hi def link javaLineComment Comment
314hi def link javaConstant Constant
315hi def link javaTypedef Typedef
316hi def link javaTodo Todo
317hi def link javaAnnotation PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000318
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200319hi def link javaCommentTitle SpecialComment
320hi def link javaDocTags Special
321hi def link javaDocParam Function
322hi def link javaDocSeeTagParam Function
323hi def link javaCommentStar javaComment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000324
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200325hi def link javaType Type
326hi def link javaExternal Include
Bram Moolenaar071d4272004-06-13 20:20:40 +0000327
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200328hi def link htmlComment Special
329hi def link htmlCommentPart Special
330hi def link javaSpaceError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331
332let b:current_syntax = "java"
333
334if main_syntax == 'java'
335 unlet main_syntax
336endif
337
338let b:spell_options="contained"
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +0200339let &cpo = s:cpo_save
340unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +0000341
342" vim: ts=8