xref: /vim-8.2.3635/runtime/syntax/java.vim (revision 00a927d6)
1*00a927d6SBram Moolenaar" Vim syntax file " Language:	  Java
2071d4279SBram Moolenaar" Maintainer:	Claudio Fleiner <[email protected]>
3071d4279SBram Moolenaar" URL:		http://www.fleiner.com/vim/syntax/java.vim
4*00a927d6SBram Moolenaar" Last Change:	2010 March 23
5071d4279SBram Moolenaar
6071d4279SBram Moolenaar" Please check :help java.vim for comments on some of the options available.
7071d4279SBram Moolenaar
8071d4279SBram Moolenaar" Quit when a syntax file was already loaded
9071d4279SBram Moolenaarif !exists("main_syntax")
10071d4279SBram Moolenaar  if version < 600
11071d4279SBram Moolenaar    syntax clear
12071d4279SBram Moolenaar  elseif exists("b:current_syntax")
13071d4279SBram Moolenaar    finish
14071d4279SBram Moolenaar  endif
15071d4279SBram Moolenaar  " we define it here so that included files can test for it
16071d4279SBram Moolenaar  let main_syntax='java'
175c73622aSBram Moolenaar  syn region javaFold start="{" end="}" transparent fold
18071d4279SBram Moolenaarendif
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar" don't use standard HiLink, it will not work with included syntax files
21071d4279SBram Moolenaarif version < 508
22071d4279SBram Moolenaar  command! -nargs=+ JavaHiLink hi link <args>
23071d4279SBram Moolenaarelse
24071d4279SBram Moolenaar  command! -nargs=+ JavaHiLink hi def link <args>
25071d4279SBram Moolenaarendif
26071d4279SBram Moolenaar
27071d4279SBram Moolenaar" some characters that cannot be in a java program (outside a string)
28071d4279SBram Moolenaarsyn match javaError "[\\@`]"
29071d4279SBram Moolenaarsyn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
30071d4279SBram Moolenaarsyn match javaOK "\.\.\."
31071d4279SBram Moolenaar
32071d4279SBram Moolenaar" use separate name so that it can be deleted in javacc.vim
33071d4279SBram Moolenaarsyn match   javaError2 "#\|=<"
34071d4279SBram MoolenaarJavaHiLink javaError2 javaError
35071d4279SBram Moolenaar
36071d4279SBram Moolenaar
37071d4279SBram Moolenaar
38071d4279SBram Moolenaar" keyword definitions
39071d4279SBram Moolenaarsyn keyword javaExternal	native package
40293ee4d4SBram Moolenaarsyn match javaExternal		"\<import\>\(\s\+static\>\)\?"
41071d4279SBram Moolenaarsyn keyword javaError		goto const
42071d4279SBram Moolenaarsyn keyword javaConditional	if else switch
43071d4279SBram Moolenaarsyn keyword javaRepeat		while for do
44071d4279SBram Moolenaarsyn keyword javaBoolean		true false
45071d4279SBram Moolenaarsyn keyword javaConstant	null
46071d4279SBram Moolenaarsyn keyword javaTypedef		this super
47071d4279SBram Moolenaarsyn keyword javaOperator	new instanceof
48071d4279SBram Moolenaarsyn keyword javaType		boolean char byte short int long float double
49071d4279SBram Moolenaarsyn keyword javaType		void
50071d4279SBram Moolenaarsyn keyword javaStatement	return
51071d4279SBram Moolenaarsyn keyword javaStorageClass	static synchronized transient volatile final strictfp serializable
52071d4279SBram Moolenaarsyn keyword javaExceptions	throw try catch finally
53071d4279SBram Moolenaarsyn keyword javaAssert		assert
54071d4279SBram Moolenaarsyn keyword javaMethodDecl	synchronized throws
55071d4279SBram Moolenaarsyn keyword javaClassDecl	extends implements interface
56071d4279SBram Moolenaar" to differentiate the keyword class from MyClass.class we use a match here
57071d4279SBram Moolenaarsyn match   javaTypedef		"\.\s*\<class\>"ms=s+1
58071d4279SBram Moolenaarsyn keyword javaClassDecl	enum
59071d4279SBram Moolenaarsyn match   javaClassDecl	"^class\>"
60071d4279SBram Moolenaarsyn match   javaClassDecl	"[^.]\s*\<class\>"ms=s+1
615c73622aSBram Moolenaarsyn match   javaAnnotation	"@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>"
62a5792f58SBram Moolenaarsyn match   javaClassDecl	"@interface\>"
63071d4279SBram Moolenaarsyn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhite
64071d4279SBram Moolenaarsyn match   javaUserLabelRef	"\k\+" contained
65a5792f58SBram Moolenaarsyn match   javaVarArg		"\.\.\."
66071d4279SBram Moolenaarsyn keyword javaScopeDecl	public protected private abstract
67071d4279SBram Moolenaar
688ada17c4SBram Moolenaarif exists("java_highlight_java_lang_ids")
698ada17c4SBram Moolenaar  let java_highlight_all=1
708ada17c4SBram Moolenaarendif
718ada17c4SBram Moolenaarif exists("java_highlight_all")  || exists("java_highlight_java")  || exists("java_highlight_java_lang")
72071d4279SBram Moolenaar  " java.lang.*
73071d4279SBram Moolenaar  syn match javaLangClass "\<System\>"
748ada17c4SBram Moolenaar  syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
758ada17c4SBram Moolenaar  syn cluster javaTop add=javaR_JavaLang
768ada17c4SBram Moolenaar  syn cluster javaClasses add=javaR_JavaLang
778ada17c4SBram Moolenaar  JavaHiLink javaR_JavaLang javaR_Java
788ada17c4SBram Moolenaar  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
798ada17c4SBram Moolenaar  syn cluster javaTop add=javaC_JavaLang
808ada17c4SBram Moolenaar  syn cluster javaClasses add=javaC_JavaLang
818ada17c4SBram Moolenaar  JavaHiLink javaC_JavaLang javaC_Java
828ada17c4SBram Moolenaar  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
838ada17c4SBram Moolenaar  syn cluster javaTop add=javaE_JavaLang
848ada17c4SBram Moolenaar  syn cluster javaClasses add=javaE_JavaLang
858ada17c4SBram Moolenaar  JavaHiLink javaE_JavaLang javaE_Java
868ada17c4SBram Moolenaar  syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException
878ada17c4SBram Moolenaar  syn cluster javaTop add=javaX_JavaLang
888ada17c4SBram Moolenaar  syn cluster javaClasses add=javaX_JavaLang
898ada17c4SBram Moolenaar  JavaHiLink javaX_JavaLang javaX_Java
908ada17c4SBram Moolenaar
918ada17c4SBram Moolenaar  JavaHiLink javaR_Java javaR_
928ada17c4SBram Moolenaar  JavaHiLink javaC_Java javaC_
938ada17c4SBram Moolenaar  JavaHiLink javaE_Java javaE_
948ada17c4SBram Moolenaar  JavaHiLink javaX_Java javaX_
958ada17c4SBram Moolenaar  JavaHiLink javaX_		     javaExceptions
968ada17c4SBram Moolenaar  JavaHiLink javaR_		     javaExceptions
978ada17c4SBram Moolenaar  JavaHiLink javaE_		     javaExceptions
988ada17c4SBram Moolenaar  JavaHiLink javaC_		     javaConstant
998ada17c4SBram Moolenaar
100071d4279SBram Moolenaar  syn keyword javaLangObject clone equals finalize getClass hashCode
101071d4279SBram Moolenaar  syn keyword javaLangObject notify notifyAll toString wait
102071d4279SBram Moolenaar  JavaHiLink javaLangObject		     javaConstant
1038ada17c4SBram Moolenaar  syn cluster javaTop add=javaLangObject
104071d4279SBram Moolenaarendif
105071d4279SBram Moolenaar
106071d4279SBram Moolenaarif filereadable(expand("<sfile>:p:h")."/javaid.vim")
107071d4279SBram Moolenaar  source <sfile>:p:h/javaid.vim
108071d4279SBram Moolenaarendif
109071d4279SBram Moolenaar
110071d4279SBram Moolenaarif exists("java_space_errors")
111071d4279SBram Moolenaar  if !exists("java_no_trail_space_error")
112071d4279SBram Moolenaar    syn match	javaSpaceError	"\s\+$"
113071d4279SBram Moolenaar  endif
114071d4279SBram Moolenaar  if !exists("java_no_tab_space_error")
115071d4279SBram Moolenaar    syn match	javaSpaceError	" \+\t"me=e-1
116071d4279SBram Moolenaar  endif
117071d4279SBram Moolenaarendif
118071d4279SBram Moolenaar
119071d4279SBram Moolenaarsyn region  javaLabelRegion	transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
120071d4279SBram Moolenaarsyn match   javaUserLabel	"^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
121071d4279SBram Moolenaarsyn keyword javaLabel		default
122071d4279SBram Moolenaar
123071d4279SBram Moolenaarif !exists("java_allow_cpp_keywords")
124071d4279SBram Moolenaar  syn keyword javaError auto delete extern friend inline redeclared
125071d4279SBram Moolenaar  syn keyword javaError register signed sizeof struct template typedef union
126071d4279SBram Moolenaar  syn keyword javaError unsigned operator
127071d4279SBram Moolenaarendif
128071d4279SBram Moolenaar
129071d4279SBram Moolenaar" The following cluster contains all java groups except the contained ones
130a5792f58SBram Moolenaarsyn 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
131071d4279SBram Moolenaar
132071d4279SBram Moolenaar
133071d4279SBram Moolenaar" Comments
134071d4279SBram Moolenaarsyn keyword javaTodo		 contained TODO FIXME XXX
135071d4279SBram Moolenaarif exists("java_comment_strings")
136071d4279SBram Moolenaar  syn region  javaCommentString    contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
137071d4279SBram Moolenaar  syn region  javaComment2String   contained start=+"+	end=+$\|"+  contains=javaSpecial,javaSpecialChar,@Spell
138071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
139071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'\\''" contains=javaSpecialChar
140071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'[^\\]'"
141071d4279SBram Moolenaar  syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
142071d4279SBram Moolenaar  syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
143071d4279SBram Moolenaarendif
144071d4279SBram Moolenaarsyn region  javaComment		 start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
145071d4279SBram Moolenaarsyn match   javaCommentStar	 contained "^\s*\*[^/]"me=e-1
146071d4279SBram Moolenaarsyn match   javaCommentStar	 contained "^\s*\*$"
147071d4279SBram Moolenaarsyn match   javaLineComment	 "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
148071d4279SBram MoolenaarJavaHiLink javaCommentString javaString
149071d4279SBram MoolenaarJavaHiLink javaComment2String javaString
150071d4279SBram MoolenaarJavaHiLink javaCommentCharacter javaCharacter
151071d4279SBram Moolenaar
152071d4279SBram Moolenaarsyn cluster javaTop add=javaComment,javaLineComment
153071d4279SBram Moolenaar
154071d4279SBram Moolenaarif !exists("java_ignore_javadoc") && main_syntax != 'jsp'
155071d4279SBram Moolenaar  syntax case ignore
156071d4279SBram Moolenaar  " syntax coloring for javadoc comments (HTML)
157071d4279SBram Moolenaar  syntax include @javaHtml <sfile>:p:h/html.vim
158071d4279SBram Moolenaar  unlet b:current_syntax
1595c73622aSBram Moolenaar  " HTML enables spell checking for all text that is not in a syntax item. This
1605c73622aSBram Moolenaar  " is wrong for Java (all identifiers would be spell-checked), so it's undone
1615c73622aSBram Moolenaar  " here.
1625c73622aSBram Moolenaar  syntax spell default
1635c73622aSBram Moolenaar
1648ada17c4SBram Moolenaar  syn region  javaDocComment	start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell
1658ada17c4SBram Moolenaar  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
166071d4279SBram Moolenaar
167071d4279SBram Moolenaar  syn region javaDocTags	 contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
1688ada17c4SBram Moolenaar  syn match  javaDocTags	 contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
169071d4279SBram Moolenaar  syn match  javaDocParam	 contained "\s\S\+"
170071d4279SBram Moolenaar  syn match  javaDocTags	 contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
1718ada17c4SBram Moolenaar  syn region javaDocSeeTag	 contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
1728ada17c4SBram Moolenaar  syn match  javaDocSeeTagParam  contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend
173071d4279SBram Moolenaar  syntax case match
174071d4279SBram Moolenaarendif
175071d4279SBram Moolenaar
176071d4279SBram Moolenaar" match the special comment /**/
177071d4279SBram Moolenaarsyn match   javaComment		 "/\*\*/"
178071d4279SBram Moolenaar
179071d4279SBram Moolenaar" Strings and constants
180071d4279SBram Moolenaarsyn match   javaSpecialError	 contained "\\."
181071d4279SBram Moolenaarsyn match   javaSpecialCharError contained "[^']"
182*00a927d6SBram Moolenaarsyn match   javaSpecialChar	 contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
183071d4279SBram Moolenaarsyn region  javaString		start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
184071d4279SBram Moolenaar" next line disabled, it can cause a crash for a long line
185071d4279SBram Moolenaar"syn match   javaStringError	  +"\([^"\\]\|\\.\)*$+
186071d4279SBram Moolenaarsyn match   javaCharacter	 "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
187071d4279SBram Moolenaarsyn match   javaCharacter	 "'\\''" contains=javaSpecialChar
188071d4279SBram Moolenaarsyn match   javaCharacter	 "'[^\\]'"
189071d4279SBram Moolenaarsyn match   javaNumber		 "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
190071d4279SBram Moolenaarsyn match   javaNumber		 "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
191071d4279SBram Moolenaarsyn match   javaNumber		 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
192071d4279SBram Moolenaarsyn match   javaNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
193071d4279SBram Moolenaar
194071d4279SBram Moolenaar" unicode characters
195*00a927d6SBram Moolenaarsyn match   javaSpecial "\\u\d\{4\}"
196071d4279SBram Moolenaar
197071d4279SBram Moolenaarsyn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
198071d4279SBram Moolenaar
199071d4279SBram Moolenaarif exists("java_highlight_functions")
200071d4279SBram Moolenaar  if java_highlight_functions == "indent"
201071d4279SBram Moolenaar    syn match  javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
202071d4279SBram Moolenaar    syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
203071d4279SBram Moolenaar    syn match  javaFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
204071d4279SBram Moolenaar    syn region javaFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
205071d4279SBram Moolenaar  else
206071d4279SBram Moolenaar    " This line catches method declarations at any indentation>0, but it assumes
207071d4279SBram Moolenaar    " two things:
208071d4279SBram Moolenaar    "	1. class names are always capitalized (ie: Button)
209071d4279SBram Moolenaar    "	2. method names are never capitalized (except constructors, of course)
210071d4279SBram Moolenaar    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
211071d4279SBram Moolenaar  endif
212071d4279SBram Moolenaar  syn match  javaBraces  "[{}]"
213071d4279SBram Moolenaar  syn cluster javaTop add=javaFuncDef,javaBraces
214071d4279SBram Moolenaarendif
215071d4279SBram Moolenaar
216071d4279SBram Moolenaarif exists("java_highlight_debug")
217071d4279SBram Moolenaar
218071d4279SBram Moolenaar  " Strings and constants
219071d4279SBram Moolenaar  syn match   javaDebugSpecial		contained "\\\d\d\d\|\\."
220071d4279SBram Moolenaar  syn region  javaDebugString		contained start=+"+  end=+"+  contains=javaDebugSpecial
221071d4279SBram Moolenaar  syn match   javaDebugStringError	+"\([^"\\]\|\\.\)*$+
222071d4279SBram Moolenaar  syn match   javaDebugCharacter	contained "'[^\\]'"
223071d4279SBram Moolenaar  syn match   javaDebugSpecialCharacter contained "'\\.'"
224071d4279SBram Moolenaar  syn match   javaDebugSpecialCharacter contained "'\\''"
225071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
226071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
227071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
228071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
229071d4279SBram Moolenaar  syn keyword javaDebugBoolean		contained true false
230071d4279SBram Moolenaar  syn keyword javaDebugType		contained null this super
231071d4279SBram Moolenaar  syn region javaDebugParen  start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
232071d4279SBram Moolenaar
233071d4279SBram Moolenaar  " to make this work you must define the highlighting for these groups
234071d4279SBram Moolenaar  syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
235293ee4d4SBram Moolenaar  syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
236071d4279SBram Moolenaar  syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
237071d4279SBram Moolenaar  syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
238071d4279SBram Moolenaar
239071d4279SBram Moolenaar  syn cluster javaTop add=javaDebug
240071d4279SBram Moolenaar
241071d4279SBram Moolenaar  if version >= 508 || !exists("did_c_syn_inits")
242071d4279SBram Moolenaar    JavaHiLink javaDebug		 Debug
243071d4279SBram Moolenaar    JavaHiLink javaDebugString		 DebugString
244071d4279SBram Moolenaar    JavaHiLink javaDebugStringError	 javaError
245071d4279SBram Moolenaar    JavaHiLink javaDebugType		 DebugType
246071d4279SBram Moolenaar    JavaHiLink javaDebugBoolean		 DebugBoolean
247071d4279SBram Moolenaar    JavaHiLink javaDebugNumber		 Debug
248071d4279SBram Moolenaar    JavaHiLink javaDebugSpecial		 DebugSpecial
249071d4279SBram Moolenaar    JavaHiLink javaDebugSpecialCharacter DebugSpecial
250071d4279SBram Moolenaar    JavaHiLink javaDebugCharacter	 DebugString
251071d4279SBram Moolenaar    JavaHiLink javaDebugParen		 Debug
252071d4279SBram Moolenaar
253071d4279SBram Moolenaar    JavaHiLink DebugString		 String
254071d4279SBram Moolenaar    JavaHiLink DebugSpecial		 Special
255071d4279SBram Moolenaar    JavaHiLink DebugBoolean		 Boolean
256071d4279SBram Moolenaar    JavaHiLink DebugType		 Type
257071d4279SBram Moolenaar  endif
258071d4279SBram Moolenaarendif
259071d4279SBram Moolenaar
260071d4279SBram Moolenaarif exists("java_mark_braces_in_parens_as_errors")
261071d4279SBram Moolenaar  syn match javaInParen		 contained "[{}]"
262071d4279SBram Moolenaar  JavaHiLink javaInParen	javaError
263071d4279SBram Moolenaar  syn cluster javaTop add=javaInParen
264071d4279SBram Moolenaarendif
265071d4279SBram Moolenaar
266071d4279SBram Moolenaar" catch errors caused by wrong parenthesis
267071d4279SBram Moolenaarsyn region  javaParenT	transparent matchgroup=javaParen  start="("  end=")" contains=@javaTop,javaParenT1
268071d4279SBram Moolenaarsyn region  javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
269071d4279SBram Moolenaarsyn region  javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT  contained
270071d4279SBram Moolenaarsyn match   javaParenError	 ")"
271293ee4d4SBram Moolenaar" catch errors caused by wrong square parenthesis
272293ee4d4SBram Moolenaarsyn region  javaParenT	transparent matchgroup=javaParen  start="\["  end="\]" contains=@javaTop,javaParenT1
273293ee4d4SBram Moolenaarsyn region  javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
274293ee4d4SBram Moolenaarsyn region  javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT  contained
275293ee4d4SBram Moolenaarsyn match   javaParenError	 "\]"
276293ee4d4SBram Moolenaar
277071d4279SBram MoolenaarJavaHiLink javaParenError	javaError
278071d4279SBram Moolenaar
279071d4279SBram Moolenaarif !exists("java_minlines")
280071d4279SBram Moolenaar  let java_minlines = 10
281071d4279SBram Moolenaarendif
282071d4279SBram Moolenaarexec "syn sync ccomment javaComment minlines=" . java_minlines
283071d4279SBram Moolenaar
284071d4279SBram Moolenaar" The default highlighting.
285071d4279SBram Moolenaarif version >= 508 || !exists("did_java_syn_inits")
286071d4279SBram Moolenaar  if version < 508
287071d4279SBram Moolenaar    let did_java_syn_inits = 1
288071d4279SBram Moolenaar  endif
289071d4279SBram Moolenaar  JavaHiLink javaFuncDef		Function
290a5792f58SBram Moolenaar  JavaHiLink javaVarArg			Function
291071d4279SBram Moolenaar  JavaHiLink javaBraces			Function
292071d4279SBram Moolenaar  JavaHiLink javaBranch			Conditional
293071d4279SBram Moolenaar  JavaHiLink javaUserLabelRef		javaUserLabel
294071d4279SBram Moolenaar  JavaHiLink javaLabel			Label
295071d4279SBram Moolenaar  JavaHiLink javaUserLabel		Label
296071d4279SBram Moolenaar  JavaHiLink javaConditional		Conditional
297071d4279SBram Moolenaar  JavaHiLink javaRepeat			Repeat
298071d4279SBram Moolenaar  JavaHiLink javaExceptions		Exception
299071d4279SBram Moolenaar  JavaHiLink javaAssert			Statement
300071d4279SBram Moolenaar  JavaHiLink javaStorageClass		StorageClass
301071d4279SBram Moolenaar  JavaHiLink javaMethodDecl		javaStorageClass
302071d4279SBram Moolenaar  JavaHiLink javaClassDecl		javaStorageClass
303071d4279SBram Moolenaar  JavaHiLink javaScopeDecl		javaStorageClass
304071d4279SBram Moolenaar  JavaHiLink javaBoolean		Boolean
305071d4279SBram Moolenaar  JavaHiLink javaSpecial		Special
306071d4279SBram Moolenaar  JavaHiLink javaSpecialError		Error
307071d4279SBram Moolenaar  JavaHiLink javaSpecialCharError	Error
308071d4279SBram Moolenaar  JavaHiLink javaString			String
309071d4279SBram Moolenaar  JavaHiLink javaCharacter		Character
310071d4279SBram Moolenaar  JavaHiLink javaSpecialChar		SpecialChar
311071d4279SBram Moolenaar  JavaHiLink javaNumber			Number
312071d4279SBram Moolenaar  JavaHiLink javaError			Error
313071d4279SBram Moolenaar  JavaHiLink javaStringError		Error
314071d4279SBram Moolenaar  JavaHiLink javaStatement		Statement
315071d4279SBram Moolenaar  JavaHiLink javaOperator		Operator
316071d4279SBram Moolenaar  JavaHiLink javaComment		Comment
317071d4279SBram Moolenaar  JavaHiLink javaDocComment		Comment
318071d4279SBram Moolenaar  JavaHiLink javaLineComment		Comment
319071d4279SBram Moolenaar  JavaHiLink javaConstant		Constant
320071d4279SBram Moolenaar  JavaHiLink javaTypedef		Typedef
321071d4279SBram Moolenaar  JavaHiLink javaTodo			Todo
322a5792f58SBram Moolenaar  JavaHiLink javaAnnotation		PreProc
323071d4279SBram Moolenaar
324071d4279SBram Moolenaar  JavaHiLink javaCommentTitle		SpecialComment
325071d4279SBram Moolenaar  JavaHiLink javaDocTags		Special
326071d4279SBram Moolenaar  JavaHiLink javaDocParam		Function
3278ada17c4SBram Moolenaar  JavaHiLink javaDocSeeTagParam		Function
328071d4279SBram Moolenaar  JavaHiLink javaCommentStar		javaComment
329071d4279SBram Moolenaar
330071d4279SBram Moolenaar  JavaHiLink javaType			Type
331071d4279SBram Moolenaar  JavaHiLink javaExternal		Include
332071d4279SBram Moolenaar
333071d4279SBram Moolenaar  JavaHiLink htmlComment		Special
334071d4279SBram Moolenaar  JavaHiLink htmlCommentPart		Special
335071d4279SBram Moolenaar  JavaHiLink javaSpaceError		Error
336071d4279SBram Moolenaarendif
337071d4279SBram Moolenaar
338071d4279SBram Moolenaardelcommand JavaHiLink
339071d4279SBram Moolenaar
340071d4279SBram Moolenaarlet b:current_syntax = "java"
341071d4279SBram Moolenaar
342071d4279SBram Moolenaarif main_syntax == 'java'
343071d4279SBram Moolenaar  unlet main_syntax
344071d4279SBram Moolenaarendif
345071d4279SBram Moolenaar
346071d4279SBram Moolenaarlet b:spell_options="contained"
347071d4279SBram Moolenaar
348071d4279SBram Moolenaar" vim: ts=8
349