xref: /vim-8.2.3635/runtime/syntax/java.vim (revision a5792f58)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:     Java
3071d4279SBram Moolenaar" Maintainer:   Claudio Fleiner <[email protected]>
4071d4279SBram Moolenaar" URL:		http://www.fleiner.com/vim/syntax/java.vim
5*a5792f58SBram Moolenaar" Last Change:  2005 Nov 04
6071d4279SBram Moolenaar
7071d4279SBram Moolenaar" Please check :help java.vim for comments on some of the options available.
8071d4279SBram Moolenaar
9071d4279SBram Moolenaar" Quit when a syntax file was already loaded
10071d4279SBram Moolenaarif !exists("main_syntax")
11071d4279SBram Moolenaar  if version < 600
12071d4279SBram Moolenaar    syntax clear
13071d4279SBram Moolenaar  elseif exists("b:current_syntax")
14071d4279SBram Moolenaar    finish
15071d4279SBram Moolenaar  endif
16071d4279SBram Moolenaar  " we define it here so that included files can test for it
17071d4279SBram Moolenaar  let main_syntax='java'
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
61*a5792f58SBram Moolenaarsyn match   javaAnnotation      "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
62*a5792f58SBram Moolenaarsyn match   javaClassDecl       "@interface\>"
63071d4279SBram Moolenaarsyn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhite
64071d4279SBram Moolenaarsyn match   javaUserLabelRef	"\k\+" contained
65*a5792f58SBram Moolenaarsyn match   javaVarArg          "\.\.\."
66071d4279SBram Moolenaarsyn keyword javaScopeDecl	public protected private abstract
67071d4279SBram Moolenaar
68071d4279SBram Moolenaarif exists("java_highlight_java_lang_ids") || exists("java_highlight_java_lang") || exists("java_highlight_all")
69071d4279SBram Moolenaar  " java.lang.*
70071d4279SBram Moolenaar  syn match javaLangClass "\<System\>"
71071d4279SBram Moolenaar  syn keyword javaLangClass  Cloneable Comparable Runnable Boolean Byte Class
72071d4279SBram Moolenaar  syn keyword javaLangClass  Character CharSequence ClassLoader Compiler Double Float
73071d4279SBram Moolenaar  syn keyword javaLangClass  Integer InheritableThreadLocal Long Math Number Object Package Process
74071d4279SBram Moolenaar  syn keyword javaLangClass  Runtime RuntimePermission InheritableThreadLocal
75071d4279SBram Moolenaar  syn keyword javaLangClass  SecurityManager Short String StrictMath StackTraceElement
76071d4279SBram Moolenaar  syn keyword javaLangClass  StringBuffer Thread ThreadGroup
77071d4279SBram Moolenaar  syn keyword javaLangClass  ThreadLocal Throwable Void ArithmeticException
78071d4279SBram Moolenaar  syn keyword javaLangClass  ArrayIndexOutOfBoundsException AssertionError
79071d4279SBram Moolenaar  syn keyword javaLangClass  ArrayStoreException ClassCastException
80071d4279SBram Moolenaar  syn keyword javaLangClass  ClassNotFoundException
81071d4279SBram Moolenaar  syn keyword javaLangClass  CloneNotSupportedException Exception
82071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalAccessException
83071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalArgumentException
84071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalMonitorStateException
85071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalStateException
86071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalThreadStateException
87071d4279SBram Moolenaar  syn keyword javaLangClass  IndexOutOfBoundsException
88071d4279SBram Moolenaar  syn keyword javaLangClass  InstantiationException InterruptedException
89071d4279SBram Moolenaar  syn keyword javaLangClass  NegativeArraySizeException NoSuchFieldException
90071d4279SBram Moolenaar  syn keyword javaLangClass  NoSuchMethodException NullPointerException
91071d4279SBram Moolenaar  syn keyword javaLangClass  NumberFormatException RuntimeException
92071d4279SBram Moolenaar  syn keyword javaLangClass  SecurityException StringIndexOutOfBoundsException
93071d4279SBram Moolenaar  syn keyword javaLangClass  UnsupportedOperationException
94071d4279SBram Moolenaar  syn keyword javaLangClass  AbstractMethodError ClassCircularityError
95071d4279SBram Moolenaar  syn keyword javaLangClass  ClassFormatError Error ExceptionInInitializerError
96071d4279SBram Moolenaar  syn keyword javaLangClass  IllegalAccessError InstantiationError
97071d4279SBram Moolenaar  syn keyword javaLangClass  IncompatibleClassChangeError InternalError
98071d4279SBram Moolenaar  syn keyword javaLangClass  LinkageError NoClassDefFoundError
99071d4279SBram Moolenaar  syn keyword javaLangClass  NoSuchFieldError NoSuchMethodError
100071d4279SBram Moolenaar  syn keyword javaLangClass  OutOfMemoryError StackOverflowError
101071d4279SBram Moolenaar  syn keyword javaLangClass  ThreadDeath UnknownError UnsatisfiedLinkError
102071d4279SBram Moolenaar  syn keyword javaLangClass  UnsupportedClassVersionError VerifyError
103071d4279SBram Moolenaar  syn keyword javaLangClass  VirtualMachineError
104071d4279SBram Moolenaar  syn keyword javaLangObject clone equals finalize getClass hashCode
105071d4279SBram Moolenaar  syn keyword javaLangObject notify notifyAll toString wait
106071d4279SBram Moolenaar  JavaHiLink javaLangClass		     javaConstant
107071d4279SBram Moolenaar  JavaHiLink javaLangObject		     javaConstant
108071d4279SBram Moolenaar  syn cluster javaTop add=javaLangObject,javaLangClass
109071d4279SBram Moolenaar  syn cluster javaClasses add=javaLangClass
110071d4279SBram Moolenaarendif
111071d4279SBram Moolenaar
112071d4279SBram Moolenaarif filereadable(expand("<sfile>:p:h")."/javaid.vim")
113071d4279SBram Moolenaar  source <sfile>:p:h/javaid.vim
114071d4279SBram Moolenaarendif
115071d4279SBram Moolenaar
116071d4279SBram Moolenaarif exists("java_space_errors")
117071d4279SBram Moolenaar  if !exists("java_no_trail_space_error")
118071d4279SBram Moolenaar    syn match   javaSpaceError  "\s\+$"
119071d4279SBram Moolenaar  endif
120071d4279SBram Moolenaar  if !exists("java_no_tab_space_error")
121071d4279SBram Moolenaar    syn match   javaSpaceError  " \+\t"me=e-1
122071d4279SBram Moolenaar  endif
123071d4279SBram Moolenaarendif
124071d4279SBram Moolenaar
125071d4279SBram Moolenaarsyn region  javaLabelRegion     transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
126071d4279SBram Moolenaarsyn match   javaUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
127071d4279SBram Moolenaarsyn keyword javaLabel		default
128071d4279SBram Moolenaar
129071d4279SBram Moolenaarif !exists("java_allow_cpp_keywords")
130071d4279SBram Moolenaar  syn keyword javaError auto delete extern friend inline redeclared
131071d4279SBram Moolenaar  syn keyword javaError register signed sizeof struct template typedef union
132071d4279SBram Moolenaar  syn keyword javaError unsigned operator
133071d4279SBram Moolenaarendif
134071d4279SBram Moolenaar
135071d4279SBram Moolenaar" The following cluster contains all java groups except the contained ones
136*a5792f58SBram 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
137071d4279SBram Moolenaar
138071d4279SBram Moolenaar
139071d4279SBram Moolenaar" Comments
140071d4279SBram Moolenaarsyn keyword javaTodo		 contained TODO FIXME XXX
141071d4279SBram Moolenaarif exists("java_comment_strings")
142071d4279SBram Moolenaar  syn region  javaCommentString    contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
143071d4279SBram Moolenaar  syn region  javaComment2String   contained start=+"+  end=+$\|"+  contains=javaSpecial,javaSpecialChar,@Spell
144071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
145071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'\\''" contains=javaSpecialChar
146071d4279SBram Moolenaar  syn match   javaCommentCharacter contained "'[^\\]'"
147071d4279SBram Moolenaar  syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
148071d4279SBram Moolenaar  syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
149071d4279SBram Moolenaarendif
150071d4279SBram Moolenaarsyn region  javaComment		 start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
151071d4279SBram Moolenaarsyn match   javaCommentStar      contained "^\s*\*[^/]"me=e-1
152071d4279SBram Moolenaarsyn match   javaCommentStar      contained "^\s*\*$"
153071d4279SBram Moolenaarsyn match   javaLineComment      "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
154071d4279SBram MoolenaarJavaHiLink javaCommentString javaString
155071d4279SBram MoolenaarJavaHiLink javaComment2String javaString
156071d4279SBram MoolenaarJavaHiLink javaCommentCharacter javaCharacter
157071d4279SBram Moolenaar
158071d4279SBram Moolenaarsyn cluster javaTop add=javaComment,javaLineComment
159071d4279SBram Moolenaar
160071d4279SBram Moolenaarif !exists("java_ignore_javadoc") && main_syntax != 'jsp'
161071d4279SBram Moolenaar  syntax case ignore
162071d4279SBram Moolenaar  " syntax coloring for javadoc comments (HTML)
163071d4279SBram Moolenaar  syntax include @javaHtml <sfile>:p:h/html.vim
164071d4279SBram Moolenaar  unlet b:current_syntax
165071d4279SBram Moolenaar  syn region  javaDocComment    start="/\*\*"  end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaTodo,@Spell
166071d4279SBram 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
167071d4279SBram Moolenaar
168071d4279SBram Moolenaar  syn region javaDocTags  contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
169071d4279SBram Moolenaar  syn match  javaDocTags  contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
170071d4279SBram Moolenaar  syn match  javaDocParam contained "\s\S\+"
171071d4279SBram Moolenaar  syn match  javaDocTags  contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
172071d4279SBram Moolenaar  syntax case match
173071d4279SBram Moolenaarendif
174071d4279SBram Moolenaar
175071d4279SBram Moolenaar" match the special comment /**/
176071d4279SBram Moolenaarsyn match   javaComment		 "/\*\*/"
177071d4279SBram Moolenaar
178071d4279SBram Moolenaar" Strings and constants
179071d4279SBram Moolenaarsyn match   javaSpecialError     contained "\\."
180071d4279SBram Moolenaarsyn match   javaSpecialCharError contained "[^']"
181071d4279SBram Moolenaarsyn match   javaSpecialChar      contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
182071d4279SBram Moolenaarsyn region  javaString		start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
183071d4279SBram Moolenaar" next line disabled, it can cause a crash for a long line
184071d4279SBram Moolenaar"syn match   javaStringError	  +"\([^"\\]\|\\.\)*$+
185071d4279SBram Moolenaarsyn match   javaCharacter	 "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
186071d4279SBram Moolenaarsyn match   javaCharacter	 "'\\''" contains=javaSpecialChar
187071d4279SBram Moolenaarsyn match   javaCharacter	 "'[^\\]'"
188071d4279SBram Moolenaarsyn match   javaNumber		 "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
189071d4279SBram Moolenaarsyn match   javaNumber		 "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
190071d4279SBram Moolenaarsyn match   javaNumber		 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
191071d4279SBram Moolenaarsyn match   javaNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
192071d4279SBram Moolenaar
193071d4279SBram Moolenaar" unicode characters
194071d4279SBram Moolenaarsyn match   javaSpecial "\\u\d\{4\}"
195071d4279SBram Moolenaar
196071d4279SBram Moolenaarsyn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
197071d4279SBram Moolenaar
198071d4279SBram Moolenaarif exists("java_highlight_functions")
199071d4279SBram Moolenaar  if java_highlight_functions == "indent"
200071d4279SBram Moolenaar    syn match  javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
201071d4279SBram Moolenaar    syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
202071d4279SBram Moolenaar    syn match  javaFuncDef "^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
203071d4279SBram Moolenaar    syn region javaFuncDef start=+^  [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
204071d4279SBram Moolenaar  else
205071d4279SBram Moolenaar    " This line catches method declarations at any indentation>0, but it assumes
206071d4279SBram Moolenaar    " two things:
207071d4279SBram Moolenaar    "   1. class names are always capitalized (ie: Button)
208071d4279SBram Moolenaar    "   2. method names are never capitalized (except constructors, of course)
209071d4279SBram 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
210071d4279SBram Moolenaar  endif
211071d4279SBram Moolenaar  syn match  javaBraces  "[{}]"
212071d4279SBram Moolenaar  syn cluster javaTop add=javaFuncDef,javaBraces
213071d4279SBram Moolenaarendif
214071d4279SBram Moolenaar
215071d4279SBram Moolenaarif exists("java_highlight_debug")
216071d4279SBram Moolenaar
217071d4279SBram Moolenaar  " Strings and constants
218071d4279SBram Moolenaar  syn match   javaDebugSpecial		contained "\\\d\d\d\|\\."
219071d4279SBram Moolenaar  syn region  javaDebugString		contained start=+"+  end=+"+  contains=javaDebugSpecial
220071d4279SBram Moolenaar  syn match   javaDebugStringError      +"\([^"\\]\|\\.\)*$+
221071d4279SBram Moolenaar  syn match   javaDebugCharacter	contained "'[^\\]'"
222071d4279SBram Moolenaar  syn match   javaDebugSpecialCharacter contained "'\\.'"
223071d4279SBram Moolenaar  syn match   javaDebugSpecialCharacter contained "'\\''"
224071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
225071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
226071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
227071d4279SBram Moolenaar  syn match   javaDebugNumber		contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
228071d4279SBram Moolenaar  syn keyword javaDebugBoolean		contained true false
229071d4279SBram Moolenaar  syn keyword javaDebugType		contained null this super
230071d4279SBram Moolenaar  syn region javaDebugParen  start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
231071d4279SBram Moolenaar
232071d4279SBram Moolenaar  " to make this work you must define the highlighting for these groups
233071d4279SBram Moolenaar  syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
234293ee4d4SBram Moolenaar  syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
235071d4279SBram Moolenaar  syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
236071d4279SBram Moolenaar  syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
237071d4279SBram Moolenaar
238071d4279SBram Moolenaar  syn cluster javaTop add=javaDebug
239071d4279SBram Moolenaar
240071d4279SBram Moolenaar  if version >= 508 || !exists("did_c_syn_inits")
241071d4279SBram Moolenaar    JavaHiLink javaDebug		 Debug
242071d4279SBram Moolenaar    JavaHiLink javaDebugString		 DebugString
243071d4279SBram Moolenaar    JavaHiLink javaDebugStringError	 javaError
244071d4279SBram Moolenaar    JavaHiLink javaDebugType		 DebugType
245071d4279SBram Moolenaar    JavaHiLink javaDebugBoolean		 DebugBoolean
246071d4279SBram Moolenaar    JavaHiLink javaDebugNumber		 Debug
247071d4279SBram Moolenaar    JavaHiLink javaDebugSpecial		 DebugSpecial
248071d4279SBram Moolenaar    JavaHiLink javaDebugSpecialCharacter DebugSpecial
249071d4279SBram Moolenaar    JavaHiLink javaDebugCharacter	 DebugString
250071d4279SBram Moolenaar    JavaHiLink javaDebugParen		 Debug
251071d4279SBram Moolenaar
252071d4279SBram Moolenaar    JavaHiLink DebugString		 String
253071d4279SBram Moolenaar    JavaHiLink DebugSpecial		 Special
254071d4279SBram Moolenaar    JavaHiLink DebugBoolean		 Boolean
255071d4279SBram Moolenaar    JavaHiLink DebugType		 Type
256071d4279SBram Moolenaar  endif
257071d4279SBram Moolenaarendif
258071d4279SBram Moolenaar
259071d4279SBram Moolenaarif exists("java_mark_braces_in_parens_as_errors")
260071d4279SBram Moolenaar  syn match javaInParen		 contained "[{}]"
261071d4279SBram Moolenaar  JavaHiLink javaInParen	javaError
262071d4279SBram Moolenaar  syn cluster javaTop add=javaInParen
263071d4279SBram Moolenaarendif
264071d4279SBram Moolenaar
265071d4279SBram Moolenaar" catch errors caused by wrong parenthesis
266071d4279SBram Moolenaarsyn region  javaParenT  transparent matchgroup=javaParen  start="("  end=")" contains=@javaTop,javaParenT1
267071d4279SBram Moolenaarsyn region  javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
268071d4279SBram Moolenaarsyn region  javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT  contained
269071d4279SBram Moolenaarsyn match   javaParenError       ")"
270293ee4d4SBram Moolenaar" catch errors caused by wrong square parenthesis
271293ee4d4SBram Moolenaarsyn region  javaParenT  transparent matchgroup=javaParen  start="\["  end="\]" contains=@javaTop,javaParenT1
272293ee4d4SBram Moolenaarsyn region  javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained
273293ee4d4SBram Moolenaarsyn region  javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT  contained
274293ee4d4SBram Moolenaarsyn match   javaParenError       "\]"
275293ee4d4SBram Moolenaar
276071d4279SBram MoolenaarJavaHiLink javaParenError       javaError
277071d4279SBram Moolenaar
278071d4279SBram Moolenaarif !exists("java_minlines")
279071d4279SBram Moolenaar  let java_minlines = 10
280071d4279SBram Moolenaarendif
281071d4279SBram Moolenaarexec "syn sync ccomment javaComment minlines=" . java_minlines
282071d4279SBram Moolenaar
283071d4279SBram Moolenaar" The default highlighting.
284071d4279SBram Moolenaarif version >= 508 || !exists("did_java_syn_inits")
285071d4279SBram Moolenaar  if version < 508
286071d4279SBram Moolenaar    let did_java_syn_inits = 1
287071d4279SBram Moolenaar  endif
288071d4279SBram Moolenaar  JavaHiLink javaFuncDef		Function
289*a5792f58SBram Moolenaar  JavaHiLink javaVarArg                 Function
290071d4279SBram Moolenaar  JavaHiLink javaBraces			Function
291071d4279SBram Moolenaar  JavaHiLink javaBranch			Conditional
292071d4279SBram Moolenaar  JavaHiLink javaUserLabelRef		javaUserLabel
293071d4279SBram Moolenaar  JavaHiLink javaLabel			Label
294071d4279SBram Moolenaar  JavaHiLink javaUserLabel		Label
295071d4279SBram Moolenaar  JavaHiLink javaConditional		Conditional
296071d4279SBram Moolenaar  JavaHiLink javaRepeat			Repeat
297071d4279SBram Moolenaar  JavaHiLink javaExceptions		Exception
298071d4279SBram Moolenaar  JavaHiLink javaAssert			Statement
299071d4279SBram Moolenaar  JavaHiLink javaStorageClass		StorageClass
300071d4279SBram Moolenaar  JavaHiLink javaMethodDecl		javaStorageClass
301071d4279SBram Moolenaar  JavaHiLink javaClassDecl		javaStorageClass
302071d4279SBram Moolenaar  JavaHiLink javaScopeDecl		javaStorageClass
303071d4279SBram Moolenaar  JavaHiLink javaBoolean		Boolean
304071d4279SBram Moolenaar  JavaHiLink javaSpecial		Special
305071d4279SBram Moolenaar  JavaHiLink javaSpecialError		Error
306071d4279SBram Moolenaar  JavaHiLink javaSpecialCharError	Error
307071d4279SBram Moolenaar  JavaHiLink javaString			String
308071d4279SBram Moolenaar  JavaHiLink javaCharacter		Character
309071d4279SBram Moolenaar  JavaHiLink javaSpecialChar		SpecialChar
310071d4279SBram Moolenaar  JavaHiLink javaNumber			Number
311071d4279SBram Moolenaar  JavaHiLink javaError			Error
312071d4279SBram Moolenaar  JavaHiLink javaStringError		Error
313071d4279SBram Moolenaar  JavaHiLink javaStatement		Statement
314071d4279SBram Moolenaar  JavaHiLink javaOperator		Operator
315071d4279SBram Moolenaar  JavaHiLink javaComment		Comment
316071d4279SBram Moolenaar  JavaHiLink javaDocComment		Comment
317071d4279SBram Moolenaar  JavaHiLink javaLineComment		Comment
318071d4279SBram Moolenaar  JavaHiLink javaConstant		Constant
319071d4279SBram Moolenaar  JavaHiLink javaTypedef		Typedef
320071d4279SBram Moolenaar  JavaHiLink javaTodo			Todo
321*a5792f58SBram Moolenaar  JavaHiLink javaAnnotation             PreProc
322071d4279SBram Moolenaar
323071d4279SBram Moolenaar  JavaHiLink javaCommentTitle		SpecialComment
324071d4279SBram Moolenaar  JavaHiLink javaDocTags		Special
325071d4279SBram Moolenaar  JavaHiLink javaDocParam		Function
326071d4279SBram Moolenaar  JavaHiLink javaCommentStar		javaComment
327071d4279SBram Moolenaar
328071d4279SBram Moolenaar  JavaHiLink javaType			Type
329071d4279SBram Moolenaar  JavaHiLink javaExternal		Include
330071d4279SBram Moolenaar
331071d4279SBram Moolenaar  JavaHiLink htmlComment		Special
332071d4279SBram Moolenaar  JavaHiLink htmlCommentPart		Special
333071d4279SBram Moolenaar  JavaHiLink javaSpaceError		Error
334071d4279SBram Moolenaarendif
335071d4279SBram Moolenaar
336071d4279SBram Moolenaardelcommand JavaHiLink
337071d4279SBram Moolenaar
338071d4279SBram Moolenaarlet b:current_syntax = "java"
339071d4279SBram Moolenaar
340071d4279SBram Moolenaarif main_syntax == 'java'
341071d4279SBram Moolenaar  unlet main_syntax
342071d4279SBram Moolenaarendif
343071d4279SBram Moolenaar
344071d4279SBram Moolenaarlet b:spell_options="contained"
345071d4279SBram Moolenaar
346071d4279SBram Moolenaar" vim: ts=8
347