xref: /vim-8.2.3635/runtime/syntax/java.vim (revision 071d4279)
1*071d4279SBram Moolenaar" Vim syntax file
2*071d4279SBram Moolenaar" Language:     Java
3*071d4279SBram Moolenaar" Maintainer:   Claudio Fleiner <[email protected]>
4*071d4279SBram Moolenaar" URL:		http://www.fleiner.com/vim/syntax/java.vim
5*071d4279SBram Moolenaar" Last Change:  2004 Apr 23
6*071d4279SBram Moolenaar
7*071d4279SBram Moolenaar" Please check :help java.vim for comments on some of the options available.
8*071d4279SBram Moolenaar
9*071d4279SBram Moolenaar" Quit when a syntax file was already loaded
10*071d4279SBram Moolenaarif !exists("main_syntax")
11*071d4279SBram Moolenaar  if version < 600
12*071d4279SBram Moolenaar    syntax clear
13*071d4279SBram Moolenaar  elseif exists("b:current_syntax")
14*071d4279SBram Moolenaar    finish
15*071d4279SBram Moolenaar  endif
16*071d4279SBram Moolenaar  " we define it here so that included files can test for it
17*071d4279SBram Moolenaar  let main_syntax='java'
18*071d4279SBram Moolenaarendif
19*071d4279SBram Moolenaar
20*071d4279SBram Moolenaar" don't use standard HiLink, it will not work with included syntax files
21*071d4279SBram Moolenaarif version < 508
22*071d4279SBram Moolenaar  command! -nargs=+ JavaHiLink hi link <args>
23*071d4279SBram Moolenaarelse
24*071d4279SBram Moolenaar  command! -nargs=+ JavaHiLink hi def link <args>
25*071d4279SBram Moolenaarendif
26*071d4279SBram Moolenaar
27*071d4279SBram Moolenaar" some characters that cannot be in a java program (outside a string)
28*071d4279SBram Moolenaarsyn match javaError "[\\@`]"
29*071d4279SBram Moolenaarsyn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
30*071d4279SBram Moolenaarsyn match javaOK "\.\.\."
31*071d4279SBram Moolenaar
32*071d4279SBram Moolenaar" use separate name so that it can be deleted in javacc.vim
33*071d4279SBram Moolenaarsyn match   javaError2 "#\|=<"
34*071d4279SBram MoolenaarJavaHiLink javaError2 javaError
35*071d4279SBram Moolenaar
36*071d4279SBram Moolenaar
37*071d4279SBram Moolenaar
38*071d4279SBram Moolenaar" keyword definitions
39*071d4279SBram Moolenaarsyn keyword javaExternal	native package
40*071d4279SBram Moolenaarsyn match javaExternal		"\<import\(\s\+static\>\)\?"
41*071d4279SBram Moolenaarsyn keyword javaError		goto const
42*071d4279SBram Moolenaarsyn keyword javaConditional	if else switch
43*071d4279SBram Moolenaarsyn keyword javaRepeat		while for do
44*071d4279SBram Moolenaarsyn keyword javaBoolean		true false
45*071d4279SBram Moolenaarsyn keyword javaConstant	null
46*071d4279SBram Moolenaarsyn keyword javaTypedef		this super
47*071d4279SBram Moolenaarsyn keyword javaOperator	new instanceof
48*071d4279SBram Moolenaarsyn keyword javaType		boolean char byte short int long float double
49*071d4279SBram Moolenaarsyn keyword javaType		void
50*071d4279SBram Moolenaarsyn keyword javaStatement	return
51*071d4279SBram Moolenaarsyn keyword javaStorageClass	static synchronized transient volatile final strictfp serializable
52*071d4279SBram Moolenaarsyn keyword javaExceptions	throw try catch finally
53*071d4279SBram Moolenaarsyn keyword javaAssert		assert
54*071d4279SBram Moolenaarsyn keyword javaMethodDecl	synchronized throws
55*071d4279SBram Moolenaarsyn keyword javaClassDecl	extends implements interface
56*071d4279SBram Moolenaar" to differentiate the keyword class from MyClass.class we use a match here
57*071d4279SBram Moolenaarsyn match   javaTypedef		"\.\s*\<class\>"ms=s+1
58*071d4279SBram Moolenaarsyn keyword javaClassDecl	enum
59*071d4279SBram Moolenaarsyn match   javaClassDecl	"^class\>"
60*071d4279SBram Moolenaarsyn match   javaClassDecl	"[^.]\s*\<class\>"ms=s+1
61*071d4279SBram Moolenaarsyn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhite
62*071d4279SBram Moolenaarsyn match   javaUserLabelRef	"\k\+" contained
63*071d4279SBram Moolenaarsyn keyword javaScopeDecl	public protected private abstract
64*071d4279SBram Moolenaar
65*071d4279SBram Moolenaarif exists("java_highlight_java_lang_ids") || exists("java_highlight_java_lang") || exists("java_highlight_all")
66*071d4279SBram Moolenaar  " java.lang.*
67*071d4279SBram Moolenaar  syn match javaLangClass "\<System\>"
68*071d4279SBram Moolenaar  syn keyword javaLangClass  Cloneable Comparable Runnable Boolean Byte Class
69*071d4279SBram Moolenaar  syn keyword javaLangClass  Character CharSequence ClassLoader Compiler Double Float
70*071d4279SBram Moolenaar  syn keyword javaLangClass  Integer InheritableThreadLocal Long Math Number Object Package Process
71*071d4279SBram Moolenaar  syn keyword javaLangClass  Runtime RuntimePermission InheritableThreadLocal
72*071d4279SBram Moolenaar  syn keyword javaLangClass  SecurityManager Short String StrictMath StackTraceElement
73*071d4279SBram Moolenaar  syn keyword javaLangClass  StringBuffer Thread ThreadGroup
74*071d4279SBram Moolenaar  syn keyword javaLangClass  ThreadLocal Throwable Void ArithmeticException
75*071d4279SBram Moolenaar  syn keyword javaLangClass  ArrayIndexOutOfBoundsException AssertionError
76*071d4279SBram Moolenaar  syn keyword javaLangClass  ArrayStoreException ClassCastException
77*071d4279SBram Moolenaar  syn keyword javaLangClass  ClassNotFoundException
78*071d4279SBram Moolenaar  syn keyword javaLangClass  CloneNotSupportedException Exception
79*071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalAccessException
80*071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalArgumentException
81*071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalMonitorStateException
82*071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalStateException
83*071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalThreadStateException
84*071d4279SBram Moolenaar  syn keyword javaLangClass  IndexOutOfBoundsException
85*071d4279SBram Moolenaar  syn keyword javaLangClass  InstantiationException InterruptedException
86*071d4279SBram Moolenaar  syn keyword javaLangClass  NegativeArraySizeException NoSuchFieldException
87*071d4279SBram Moolenaar  syn keyword javaLangClass  NoSuchMethodException NullPointerException
88*071d4279SBram Moolenaar  syn keyword javaLangClass  NumberFormatException RuntimeException
89*071d4279SBram Moolenaar  syn keyword javaLangClass  SecurityException StringIndexOutOfBoundsException
90*071d4279SBram Moolenaar  syn keyword javaLangClass  UnsupportedOperationException
91*071d4279SBram Moolenaar  syn keyword javaLangClass  AbstractMethodError ClassCircularityError
92*071d4279SBram Moolenaar  syn keyword javaLangClass  ClassFormatError Error ExceptionInInitializerError
93*071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalAccessError InstantiationError
94*071d4279SBram Moolenaar  syn keyword javaLangClass  IncompatibleClassChangeError InternalError
95*071d4279SBram Moolenaar  syn keyword javaLangClass  LinkageError NoClassDefFoundError
96*071d4279SBram Moolenaar  syn keyword javaLangClass  NoSuchFieldError NoSuchMethodError
97*071d4279SBram Moolenaar  syn keyword javaLangClass  OutOfMemoryError StackOverflowError
98*071d4279SBram Moolenaar  syn keyword javaLangClass  ThreadDeath UnknownError UnsatisfiedLinkError
99*071d4279SBram Moolenaar  syn keyword javaLangClass  UnsupportedClassVersionError VerifyError
100*071d4279SBram Moolenaar  syn keyword javaLangClass  VirtualMachineError
101*071d4279SBram Moolenaar  syn keyword javaLangObject clone equals finalize getClass hashCode
102*071d4279SBram Moolenaar  syn keyword javaLangObject notify notifyAll toString wait
103*071d4279SBram Moolenaar  JavaHiLink javaLangClass		     javaConstant
104*071d4279SBram Moolenaar  JavaHiLink javaLangObject		     javaConstant
105*071d4279SBram Moolenaar  syn cluster javaTop add=javaLangObject,javaLangClass
106*071d4279SBram Moolenaar  syn cluster javaClasses add=javaLangClass
107*071d4279SBram Moolenaarendif
108*071d4279SBram Moolenaar
109*071d4279SBram Moolenaarif filereadable(expand("<sfile>:p:h")."/javaid.vim")
110*071d4279SBram Moolenaar  source <sfile>:p:h/javaid.vim
111*071d4279SBram Moolenaarendif
112*071d4279SBram Moolenaar
113*071d4279SBram Moolenaarif exists("java_space_errors")
114*071d4279SBram Moolenaar  if !exists("java_no_trail_space_error")
115*071d4279SBram Moolenaar    syn match   javaSpaceError  "\s\+$"
116*071d4279SBram Moolenaar  endif
117*071d4279SBram Moolenaar  if !exists("java_no_tab_space_error")
118*071d4279SBram Moolenaar    syn match   javaSpaceError  " \+\t"me=e-1
119*071d4279SBram Moolenaar  endif
120*071d4279SBram Moolenaarendif
121*071d4279SBram Moolenaar
122*071d4279SBram Moolenaarsyn region  javaLabelRegion     transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
123*071d4279SBram Moolenaarsyn match   javaUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
124*071d4279SBram Moolenaarsyn keyword javaLabel		default
125*071d4279SBram Moolenaar
126*071d4279SBram Moolenaarif !exists("java_allow_cpp_keywords")
127*071d4279SBram Moolenaar  syn keyword javaError auto delete extern friend inline redeclared
128*071d4279SBram Moolenaar  syn keyword javaError register signed sizeof struct template typedef union
129*071d4279SBram Moolenaar  syn keyword javaError unsigned operator
130*071d4279SBram Moolenaarendif
131*071d4279SBram Moolenaar
132*071d4279SBram Moolenaar" The following cluster contains all java groups except the contained ones
133*071d4279SBram 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
134*071d4279SBram Moolenaar
135*071d4279SBram Moolenaar
136*071d4279SBram Moolenaar" Comments
137*071d4279SBram Moolenaarsyn keyword javaTodo		 contained TODO FIXME XXX
138*071d4279SBram Moolenaarif exists("java_comment_strings")
139*071d4279SBram Moolenaar  syn region  javaCommentString    contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
140*071d4279SBram Moolenaar  syn region  javaComment2String   contained start=+"+  end=+$\|"+  contains=javaSpecial,javaSpecialChar,@Spell
141*071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
142*071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'\\''" contains=javaSpecialChar
143*071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'[^\\]'"
144*071d4279SBram Moolenaar  syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
145*071d4279SBram Moolenaar  syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
146*071d4279SBram Moolenaarendif
147*071d4279SBram Moolenaarsyn region  javaComment		 start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
148*071d4279SBram Moolenaarsyn match   javaCommentStar      contained "^\s*\*[^/]"me=e-1
149*071d4279SBram Moolenaarsyn match   javaCommentStar      contained "^\s*\*$"
150*071d4279SBram Moolenaarsyn match   javaLineComment      "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
151*071d4279SBram MoolenaarJavaHiLink javaCommentString javaString
152*071d4279SBram MoolenaarJavaHiLink javaComment2String javaString
153*071d4279SBram MoolenaarJavaHiLink javaCommentCharacter javaCharacter
154*071d4279SBram Moolenaar
155*071d4279SBram Moolenaarsyn cluster javaTop add=javaComment,javaLineComment
156*071d4279SBram Moolenaar
157*071d4279SBram Moolenaarif !exists("java_ignore_javadoc") && main_syntax != 'jsp'
158*071d4279SBram Moolenaar  syntax case ignore
159*071d4279SBram Moolenaar  " syntax coloring for javadoc comments (HTML)
160*071d4279SBram Moolenaar  syntax include @javaHtml <sfile>:p:h/html.vim
161*071d4279SBram Moolenaar  unlet b:current_syntax
162*071d4279SBram Moolenaar  syn region  javaDocComment    start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaTodo,@Spell
163*071d4279SBram 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
164*071d4279SBram Moolenaar
165*071d4279SBram Moolenaar  syn region javaDocTags  contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
166*071d4279SBram Moolenaar  syn match  javaDocTags  contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
167*071d4279SBram Moolenaar  syn match  javaDocParam contained "\s\S\+"
168*071d4279SBram Moolenaar  syn match  javaDocTags  contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
169*071d4279SBram Moolenaar  syntax case match
170*071d4279SBram Moolenaarendif
171*071d4279SBram Moolenaar
172*071d4279SBram Moolenaar" match the special comment /**/
173*071d4279SBram Moolenaarsyn match   javaComment		 "/\*\*/"
174*071d4279SBram Moolenaar
175*071d4279SBram Moolenaar" Strings and constants
176*071d4279SBram Moolenaarsyn match   javaSpecialError     contained "\\."
177*071d4279SBram Moolenaarsyn match   javaSpecialCharError contained "[^']"
178*071d4279SBram Moolenaarsyn match   javaSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
179*071d4279SBram Moolenaarsyn region  javaString		start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
180*071d4279SBram Moolenaar" next line disabled, it can cause a crash for a long line
181*071d4279SBram Moolenaar"syn match   javaStringError	  +"\([^"\\]\|\\.\)*$+
182*071d4279SBram Moolenaarsyn match   javaCharacter	 "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
183*071d4279SBram Moolenaarsyn match   javaCharacter	 "'\\''" contains=javaSpecialChar
184*071d4279SBram Moolenaarsyn match   javaCharacter	 "'[^\\]'"
185*071d4279SBram Moolenaarsyn match   javaNumber		 "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
186*071d4279SBram Moolenaarsyn match   javaNumber		 "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
187*071d4279SBram Moolenaarsyn match   javaNumber		 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
188*071d4279SBram Moolenaarsyn match   javaNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
189*071d4279SBram Moolenaar
190*071d4279SBram Moolenaar" unicode characters
191*071d4279SBram Moolenaarsyn match   javaSpecial "\\u\d\{4\}"
192*071d4279SBram Moolenaar
193*071d4279SBram Moolenaarsyn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
194*071d4279SBram Moolenaar
195*071d4279SBram Moolenaarif exists("java_highlight_functions")
196*071d4279SBram Moolenaar  if java_highlight_functions == "indent"
197*071d4279SBram Moolenaar    syn match  javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
198*071d4279SBram Moolenaar    syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
199*071d4279SBram Moolenaar    syn match  javaFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
200*071d4279SBram Moolenaar    syn region javaFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
201*071d4279SBram Moolenaar  else
202*071d4279SBram Moolenaar    " This line catches method declarations at any indentation>0, but it assumes
203*071d4279SBram Moolenaar    " two things:
204*071d4279SBram Moolenaar    "   1. class names are always capitalized (ie: Button)
205*071d4279SBram Moolenaar    "   2. method names are never capitalized (except constructors, of course)
206*071d4279SBram 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
207*071d4279SBram Moolenaar  endif
208*071d4279SBram Moolenaar  syn match  javaBraces  "[{}]"
209*071d4279SBram Moolenaar  syn cluster javaTop add=javaFuncDef,javaBraces
210*071d4279SBram Moolenaarendif
211*071d4279SBram Moolenaar
212*071d4279SBram Moolenaarif exists("java_highlight_debug")
213*071d4279SBram Moolenaar
214*071d4279SBram Moolenaar  " Strings and constants
215*071d4279SBram Moolenaar  syn match   javaDebugSpecial		contained "\\\d\d\d\|\\."
216*071d4279SBram Moolenaar  syn region  javaDebugString		contained start=+"+  end=+"+  contains=javaDebugSpecial
217*071d4279SBram Moolenaar  syn match   javaDebugStringError      +"\([^"\\]\|\\.\)*$+
218*071d4279SBram Moolenaar  syn match   javaDebugCharacter	contained "'[^\\]'"
219*071d4279SBram Moolenaar  syn match   javaDebugSpecialCharacter contained "'\\.'"
220*071d4279SBram Moolenaar  syn match   javaDebugSpecialCharacter contained "'\\''"
221*071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
222*071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
223*071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
224*071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
225*071d4279SBram Moolenaar  syn keyword javaDebugBoolean		contained true false
226*071d4279SBram Moolenaar  syn keyword javaDebugType		contained null this super
227*071d4279SBram Moolenaar  syn region javaDebugParen  start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
228*071d4279SBram Moolenaar
229*071d4279SBram Moolenaar  " to make this work you must define the highlighting for these groups
230*071d4279SBram Moolenaar  syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
231*071d4279SBram Moolenaar  syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
232*071d4279SBram Moolenaar  syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
233*071d4279SBram Moolenaar
234*071d4279SBram Moolenaar  syn cluster javaTop add=javaDebug
235*071d4279SBram Moolenaar
236*071d4279SBram Moolenaar  if version >= 508 || !exists("did_c_syn_inits")
237*071d4279SBram Moolenaar    JavaHiLink javaDebug		 Debug
238*071d4279SBram Moolenaar    JavaHiLink javaDebugString		 DebugString
239*071d4279SBram Moolenaar    JavaHiLink javaDebugStringError	 javaError
240*071d4279SBram Moolenaar    JavaHiLink javaDebugType		 DebugType
241*071d4279SBram Moolenaar    JavaHiLink javaDebugBoolean		 DebugBoolean
242*071d4279SBram Moolenaar    JavaHiLink javaDebugNumber		 Debug
243*071d4279SBram Moolenaar    JavaHiLink javaDebugSpecial		 DebugSpecial
244*071d4279SBram Moolenaar    JavaHiLink javaDebugSpecialCharacter DebugSpecial
245*071d4279SBram Moolenaar    JavaHiLink javaDebugCharacter	 DebugString
246*071d4279SBram Moolenaar    JavaHiLink javaDebugParen		 Debug
247*071d4279SBram Moolenaar
248*071d4279SBram Moolenaar    JavaHiLink DebugString		 String
249*071d4279SBram Moolenaar    JavaHiLink DebugSpecial		 Special
250*071d4279SBram Moolenaar    JavaHiLink DebugBoolean		 Boolean
251*071d4279SBram Moolenaar    JavaHiLink DebugType		 Type
252*071d4279SBram Moolenaar  endif
253*071d4279SBram Moolenaarendif
254*071d4279SBram Moolenaar
255*071d4279SBram Moolenaarif exists("java_mark_braces_in_parens_as_errors")
256*071d4279SBram Moolenaar  syn match javaInParen		 contained "[{}]"
257*071d4279SBram Moolenaar  JavaHiLink javaInParen	javaError
258*071d4279SBram Moolenaar  syn cluster javaTop add=javaInParen
259*071d4279SBram Moolenaarendif
260*071d4279SBram Moolenaar
261*071d4279SBram Moolenaar" catch errors caused by wrong parenthesis
262*071d4279SBram Moolenaarsyn region  javaParenT  transparent matchgroup=javaParen  start="("  end=")" contains=@javaTop,javaParenT1
263*071d4279SBram Moolenaarsyn region  javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
264*071d4279SBram Moolenaarsyn region  javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT  contained
265*071d4279SBram Moolenaarsyn match   javaParenError       ")"
266*071d4279SBram MoolenaarJavaHiLink javaParenError       javaError
267*071d4279SBram Moolenaar
268*071d4279SBram Moolenaarif !exists("java_minlines")
269*071d4279SBram Moolenaar  let java_minlines = 10
270*071d4279SBram Moolenaarendif
271*071d4279SBram Moolenaarexec "syn sync ccomment javaComment minlines=" . java_minlines
272*071d4279SBram Moolenaar
273*071d4279SBram Moolenaar" The default highlighting.
274*071d4279SBram Moolenaarif version >= 508 || !exists("did_java_syn_inits")
275*071d4279SBram Moolenaar  if version < 508
276*071d4279SBram Moolenaar    let did_java_syn_inits = 1
277*071d4279SBram Moolenaar  endif
278*071d4279SBram Moolenaar  JavaHiLink javaFuncDef		Function
279*071d4279SBram Moolenaar  JavaHiLink javaBraces			Function
280*071d4279SBram Moolenaar  JavaHiLink javaBranch			Conditional
281*071d4279SBram Moolenaar  JavaHiLink javaUserLabelRef		javaUserLabel
282*071d4279SBram Moolenaar  JavaHiLink javaLabel			Label
283*071d4279SBram Moolenaar  JavaHiLink javaUserLabel		Label
284*071d4279SBram Moolenaar  JavaHiLink javaConditional		Conditional
285*071d4279SBram Moolenaar  JavaHiLink javaRepeat			Repeat
286*071d4279SBram Moolenaar  JavaHiLink javaExceptions		Exception
287*071d4279SBram Moolenaar  JavaHiLink javaAssert			Statement
288*071d4279SBram Moolenaar  JavaHiLink javaStorageClass		StorageClass
289*071d4279SBram Moolenaar  JavaHiLink javaMethodDecl		javaStorageClass
290*071d4279SBram Moolenaar  JavaHiLink javaClassDecl		javaStorageClass
291*071d4279SBram Moolenaar  JavaHiLink javaScopeDecl		javaStorageClass
292*071d4279SBram Moolenaar  JavaHiLink javaBoolean		Boolean
293*071d4279SBram Moolenaar  JavaHiLink javaSpecial		Special
294*071d4279SBram Moolenaar  JavaHiLink javaSpecialError		Error
295*071d4279SBram Moolenaar  JavaHiLink javaSpecialCharError	Error
296*071d4279SBram Moolenaar  JavaHiLink javaString			String
297*071d4279SBram Moolenaar  JavaHiLink javaCharacter		Character
298*071d4279SBram Moolenaar  JavaHiLink javaSpecialChar		SpecialChar
299*071d4279SBram Moolenaar  JavaHiLink javaNumber			Number
300*071d4279SBram Moolenaar  JavaHiLink javaError			Error
301*071d4279SBram Moolenaar  JavaHiLink javaStringError		Error
302*071d4279SBram Moolenaar  JavaHiLink javaStatement		Statement
303*071d4279SBram Moolenaar  JavaHiLink javaOperator		Operator
304*071d4279SBram Moolenaar  JavaHiLink javaComment		Comment
305*071d4279SBram Moolenaar  JavaHiLink javaDocComment		Comment
306*071d4279SBram Moolenaar  JavaHiLink javaLineComment		Comment
307*071d4279SBram Moolenaar  JavaHiLink javaConstant		Constant
308*071d4279SBram Moolenaar  JavaHiLink javaTypedef		Typedef
309*071d4279SBram Moolenaar  JavaHiLink javaTodo			Todo
310*071d4279SBram Moolenaar
311*071d4279SBram Moolenaar  JavaHiLink javaCommentTitle		SpecialComment
312*071d4279SBram Moolenaar  JavaHiLink javaDocTags		Special
313*071d4279SBram Moolenaar  JavaHiLink javaDocParam		Function
314*071d4279SBram Moolenaar  JavaHiLink javaCommentStar		javaComment
315*071d4279SBram Moolenaar
316*071d4279SBram Moolenaar  JavaHiLink javaType			Type
317*071d4279SBram Moolenaar  JavaHiLink javaExternal		Include
318*071d4279SBram Moolenaar
319*071d4279SBram Moolenaar  JavaHiLink htmlComment		Special
320*071d4279SBram Moolenaar  JavaHiLink htmlCommentPart		Special
321*071d4279SBram Moolenaar  JavaHiLink javaSpaceError		Error
322*071d4279SBram Moolenaarendif
323*071d4279SBram Moolenaar
324*071d4279SBram Moolenaardelcommand JavaHiLink
325*071d4279SBram Moolenaar
326*071d4279SBram Moolenaarlet b:current_syntax = "java"
327*071d4279SBram Moolenaar
328*071d4279SBram Moolenaarif main_syntax == 'java'
329*071d4279SBram Moolenaar  unlet main_syntax
330*071d4279SBram Moolenaarendif
331*071d4279SBram Moolenaar
332*071d4279SBram Moolenaarlet b:spell_options="contained"
333*071d4279SBram Moolenaar
334*071d4279SBram Moolenaar" vim: ts=8
335