10c5fa7d7SBram Moolenaar" Vim syntax file 20c5fa7d7SBram Moolenaar" Language: Java 3071d4279SBram Moolenaar" Maintainer: Claudio Fleiner <[email protected]> 4071d4279SBram Moolenaar" URL: http://www.fleiner.com/vim/syntax/java.vim 5f3c2afb7SBram Moolenaar" Last Change: 2015 March 01 6071d4279SBram Moolenaar 7071d4279SBram Moolenaar" Please check :help java.vim for comments on some of the options available. 8071d4279SBram Moolenaar 9*89bcfda6SBram Moolenaar" quit when a syntax file was already loaded 10071d4279SBram Moolenaarif !exists("main_syntax") 11*89bcfda6SBram Moolenaar if exists("b:current_syntax") 12071d4279SBram Moolenaar finish 13071d4279SBram Moolenaar endif 14071d4279SBram Moolenaar " we define it here so that included files can test for it 15071d4279SBram Moolenaar let main_syntax='java' 165c73622aSBram Moolenaar syn region javaFold start="{" end="}" transparent fold 17071d4279SBram Moolenaarendif 18071d4279SBram Moolenaar 190c5fa7d7SBram Moolenaarlet s:cpo_save = &cpo 200c5fa7d7SBram Moolenaarset cpo&vim 210c5fa7d7SBram Moolenaar 22071d4279SBram Moolenaar" don't use standard HiLink, it will not work with included syntax files 23071d4279SBram Moolenaarcommand! -nargs=+ JavaHiLink hi def link <args> 24071d4279SBram Moolenaar 25071d4279SBram Moolenaar" some characters that cannot be in a java program (outside a string) 26071d4279SBram Moolenaarsyn match javaError "[\\@`]" 27f3c2afb7SBram Moolenaarsyn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/" 280c5fa7d7SBram Moolenaar 29071d4279SBram Moolenaarsyn match javaOK "\.\.\." 30071d4279SBram Moolenaar 31071d4279SBram Moolenaar" use separate name so that it can be deleted in javacc.vim 32071d4279SBram Moolenaarsyn match javaError2 "#\|=<" 33071d4279SBram MoolenaarJavaHiLink javaError2 javaError 34071d4279SBram Moolenaar 35071d4279SBram Moolenaar 36071d4279SBram Moolenaar 37071d4279SBram Moolenaar" keyword definitions 38071d4279SBram Moolenaarsyn keyword javaExternal native package 39293ee4d4SBram Moolenaarsyn match javaExternal "\<import\>\(\s\+static\>\)\?" 40071d4279SBram Moolenaarsyn keyword javaError goto const 41071d4279SBram Moolenaarsyn keyword javaConditional if else switch 42071d4279SBram Moolenaarsyn keyword javaRepeat while for do 43071d4279SBram Moolenaarsyn keyword javaBoolean true false 44071d4279SBram Moolenaarsyn keyword javaConstant null 45071d4279SBram Moolenaarsyn keyword javaTypedef this super 46071d4279SBram Moolenaarsyn keyword javaOperator new instanceof 47071d4279SBram Moolenaarsyn keyword javaType boolean char byte short int long float double 48071d4279SBram Moolenaarsyn keyword javaType void 49071d4279SBram Moolenaarsyn keyword javaStatement return 50071d4279SBram Moolenaarsyn keyword javaStorageClass static synchronized transient volatile final strictfp serializable 51071d4279SBram Moolenaarsyn keyword javaExceptions throw try catch finally 52071d4279SBram Moolenaarsyn keyword javaAssert assert 53071d4279SBram Moolenaarsyn keyword javaMethodDecl synchronized throws 54071d4279SBram Moolenaarsyn keyword javaClassDecl extends implements interface 55071d4279SBram Moolenaar" to differentiate the keyword class from MyClass.class we use a match here 56071d4279SBram Moolenaarsyn match javaTypedef "\.\s*\<class\>"ms=s+1 57071d4279SBram Moolenaarsyn keyword javaClassDecl enum 58071d4279SBram Moolenaarsyn match javaClassDecl "^class\>" 59071d4279SBram Moolenaarsyn match javaClassDecl "[^.]\s*\<class\>"ms=s+1 60f3c2afb7SBram Moolenaarsyn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>\(([^)]*)\)\=" contains=javaString 61a5792f58SBram Moolenaarsyn match javaClassDecl "@interface\>" 62071d4279SBram Moolenaarsyn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite 63071d4279SBram Moolenaarsyn match javaUserLabelRef "\k\+" contained 64a5792f58SBram Moolenaarsyn match javaVarArg "\.\.\." 65071d4279SBram Moolenaarsyn keyword javaScopeDecl public protected private abstract 66071d4279SBram Moolenaar 678ada17c4SBram Moolenaarif exists("java_highlight_java_lang_ids") 688ada17c4SBram Moolenaar let java_highlight_all=1 698ada17c4SBram Moolenaarendif 708ada17c4SBram Moolenaarif exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang") 71071d4279SBram Moolenaar " java.lang.* 72071d4279SBram Moolenaar syn match javaLangClass "\<System\>" 738ada17c4SBram Moolenaar syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException 748ada17c4SBram Moolenaar syn cluster javaTop add=javaR_JavaLang 758ada17c4SBram Moolenaar syn cluster javaClasses add=javaR_JavaLang 768ada17c4SBram Moolenaar JavaHiLink javaR_JavaLang javaR_Java 778ada17c4SBram 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 788ada17c4SBram Moolenaar syn cluster javaTop add=javaC_JavaLang 798ada17c4SBram Moolenaar syn cluster javaClasses add=javaC_JavaLang 808ada17c4SBram Moolenaar JavaHiLink javaC_JavaLang javaC_Java 818ada17c4SBram 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 828ada17c4SBram Moolenaar syn cluster javaTop add=javaE_JavaLang 838ada17c4SBram Moolenaar syn cluster javaClasses add=javaE_JavaLang 848ada17c4SBram Moolenaar JavaHiLink javaE_JavaLang javaE_Java 858ada17c4SBram Moolenaar syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException 868ada17c4SBram Moolenaar syn cluster javaTop add=javaX_JavaLang 878ada17c4SBram Moolenaar syn cluster javaClasses add=javaX_JavaLang 888ada17c4SBram Moolenaar JavaHiLink javaX_JavaLang javaX_Java 898ada17c4SBram Moolenaar 908ada17c4SBram Moolenaar JavaHiLink javaR_Java javaR_ 918ada17c4SBram Moolenaar JavaHiLink javaC_Java javaC_ 928ada17c4SBram Moolenaar JavaHiLink javaE_Java javaE_ 938ada17c4SBram Moolenaar JavaHiLink javaX_Java javaX_ 948ada17c4SBram Moolenaar JavaHiLink javaX_ javaExceptions 958ada17c4SBram Moolenaar JavaHiLink javaR_ javaExceptions 968ada17c4SBram Moolenaar JavaHiLink javaE_ javaExceptions 978ada17c4SBram Moolenaar JavaHiLink javaC_ javaConstant 988ada17c4SBram Moolenaar 99071d4279SBram Moolenaar syn keyword javaLangObject clone equals finalize getClass hashCode 100071d4279SBram Moolenaar syn keyword javaLangObject notify notifyAll toString wait 101071d4279SBram Moolenaar JavaHiLink javaLangObject javaConstant 1028ada17c4SBram Moolenaar syn cluster javaTop add=javaLangObject 103071d4279SBram Moolenaarendif 104071d4279SBram Moolenaar 105071d4279SBram Moolenaarif filereadable(expand("<sfile>:p:h")."/javaid.vim") 106071d4279SBram Moolenaar source <sfile>:p:h/javaid.vim 107071d4279SBram Moolenaarendif 108071d4279SBram Moolenaar 109071d4279SBram Moolenaarif exists("java_space_errors") 110071d4279SBram Moolenaar if !exists("java_no_trail_space_error") 111071d4279SBram Moolenaar syn match javaSpaceError "\s\+$" 112071d4279SBram Moolenaar endif 113071d4279SBram Moolenaar if !exists("java_no_tab_space_error") 114071d4279SBram Moolenaar syn match javaSpaceError " \+\t"me=e-1 115071d4279SBram Moolenaar endif 116071d4279SBram Moolenaarendif 117071d4279SBram Moolenaar 118f3c2afb7SBram Moolenaarsyn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString 119071d4279SBram Moolenaarsyn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel 120071d4279SBram Moolenaarsyn keyword javaLabel default 121071d4279SBram Moolenaar 122b6b046b2SBram Moolenaar" highlighting C++ keywords as errors removed, too many people find it 123b6b046b2SBram Moolenaar" annoying. Was: if !exists("java_allow_cpp_keywords") 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar" The following cluster contains all java groups except the contained ones 126a5792f58SBram 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 127071d4279SBram Moolenaar 128071d4279SBram Moolenaar 129071d4279SBram Moolenaar" Comments 130071d4279SBram Moolenaarsyn keyword javaTodo contained TODO FIXME XXX 131071d4279SBram Moolenaarif exists("java_comment_strings") 132071d4279SBram Moolenaar syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell 133071d4279SBram Moolenaar syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell 134071d4279SBram Moolenaar syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar 135071d4279SBram Moolenaar syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar 136071d4279SBram Moolenaar syn match javaCommentCharacter contained "'[^\\]'" 137071d4279SBram Moolenaar syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber 138071d4279SBram Moolenaar syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber 139071d4279SBram Moolenaarendif 140071d4279SBram Moolenaarsyn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell 141071d4279SBram Moolenaarsyn match javaCommentStar contained "^\s*\*[^/]"me=e-1 142071d4279SBram Moolenaarsyn match javaCommentStar contained "^\s*\*$" 143071d4279SBram Moolenaarsyn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell 144071d4279SBram MoolenaarJavaHiLink javaCommentString javaString 145071d4279SBram MoolenaarJavaHiLink javaComment2String javaString 146071d4279SBram MoolenaarJavaHiLink javaCommentCharacter javaCharacter 147071d4279SBram Moolenaar 148071d4279SBram Moolenaarsyn cluster javaTop add=javaComment,javaLineComment 149071d4279SBram Moolenaar 150071d4279SBram Moolenaarif !exists("java_ignore_javadoc") && main_syntax != 'jsp' 151071d4279SBram Moolenaar syntax case ignore 152071d4279SBram Moolenaar " syntax coloring for javadoc comments (HTML) 153071d4279SBram Moolenaar syntax include @javaHtml <sfile>:p:h/html.vim 154071d4279SBram Moolenaar unlet b:current_syntax 1555c73622aSBram Moolenaar " HTML enables spell checking for all text that is not in a syntax item. This 1565c73622aSBram Moolenaar " is wrong for Java (all identifiers would be spell-checked), so it's undone 1575c73622aSBram Moolenaar " here. 1585c73622aSBram Moolenaar syntax spell default 1595c73622aSBram Moolenaar 1608ada17c4SBram Moolenaar syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell 1618ada17c4SBram 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 162071d4279SBram Moolenaar 1630c5fa7d7SBram Moolenaar syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" 1648ada17c4SBram Moolenaar syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam 165071d4279SBram Moolenaar syn match javaDocParam contained "\s\S\+" 166071d4279SBram Moolenaar syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" 1678ada17c4SBram Moolenaar syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam 1688ada17c4SBram Moolenaar syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend 169071d4279SBram Moolenaar syntax case match 170071d4279SBram Moolenaarendif 171071d4279SBram Moolenaar 172071d4279SBram Moolenaar" match the special comment /**/ 173071d4279SBram Moolenaarsyn match javaComment "/\*\*/" 174071d4279SBram Moolenaar 175071d4279SBram Moolenaar" Strings and constants 176071d4279SBram Moolenaarsyn match javaSpecialError contained "\\." 177071d4279SBram Moolenaarsyn match javaSpecialCharError contained "[^']" 17800a927d6SBram Moolenaarsyn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" 179071d4279SBram Moolenaarsyn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell 180071d4279SBram Moolenaar" next line disabled, it can cause a crash for a long line 181071d4279SBram Moolenaar"syn match javaStringError +"\([^"\\]\|\\.\)*$+ 182071d4279SBram Moolenaarsyn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError 183071d4279SBram Moolenaarsyn match javaCharacter "'\\''" contains=javaSpecialChar 184071d4279SBram Moolenaarsyn match javaCharacter "'[^\\]'" 185f3c2afb7SBram Moolenaarsyn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>" 186f3c2afb7SBram Moolenaarsyn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\=" 187f3c2afb7SBram Moolenaarsyn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>" 188f3c2afb7SBram Moolenaarsyn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>" 189071d4279SBram Moolenaar 190071d4279SBram Moolenaar" unicode characters 19100a927d6SBram Moolenaarsyn match javaSpecial "\\u\d\{4\}" 192071d4279SBram Moolenaar 193071d4279SBram Moolenaarsyn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError 194071d4279SBram Moolenaar 195071d4279SBram Moolenaarif exists("java_highlight_functions") 196071d4279SBram Moolenaar if java_highlight_functions == "indent" 197f3c2afb7SBram Moolenaar syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 198f3c2afb7SBram Moolenaar syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 199f3c2afb7SBram Moolenaar syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 200f3c2afb7SBram Moolenaar syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 201071d4279SBram Moolenaar else 202071d4279SBram Moolenaar " This line catches method declarations at any indentation>0, but it assumes 203071d4279SBram Moolenaar " two things: 204071d4279SBram Moolenaar " 1. class names are always capitalized (ie: Button) 205071d4279SBram Moolenaar " 2. method names are never capitalized (except constructors, of course) 206f3c2afb7SBram 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 207f3c2afb7SBram Moolenaar 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 208071d4279SBram Moolenaar endif 209f3c2afb7SBram Moolenaar syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->" 210071d4279SBram Moolenaar syn match javaBraces "[{}]" 211f3c2afb7SBram Moolenaar syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef 212071d4279SBram Moolenaarendif 213071d4279SBram Moolenaar 214071d4279SBram Moolenaarif exists("java_highlight_debug") 215071d4279SBram Moolenaar 216071d4279SBram Moolenaar " Strings and constants 217071d4279SBram Moolenaar syn match javaDebugSpecial contained "\\\d\d\d\|\\." 218071d4279SBram Moolenaar syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial 219071d4279SBram Moolenaar syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+ 220071d4279SBram Moolenaar syn match javaDebugCharacter contained "'[^\\]'" 221071d4279SBram Moolenaar syn match javaDebugSpecialCharacter contained "'\\.'" 222071d4279SBram Moolenaar syn match javaDebugSpecialCharacter contained "'\\''" 223071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" 224071d4279SBram Moolenaar syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" 225071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" 226071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" 227071d4279SBram Moolenaar syn keyword javaDebugBoolean contained true false 228071d4279SBram Moolenaar syn keyword javaDebugType contained null this super 229071d4279SBram Moolenaar syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen 230071d4279SBram Moolenaar 231071d4279SBram Moolenaar " to make this work you must define the highlighting for these groups 232071d4279SBram Moolenaar syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 233293ee4d4SBram Moolenaar syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 234071d4279SBram Moolenaar syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 235071d4279SBram Moolenaar syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 236071d4279SBram Moolenaar 237071d4279SBram Moolenaar syn cluster javaTop add=javaDebug 238071d4279SBram Moolenaar 239071d4279SBram Moolenaar JavaHiLink javaDebug Debug 240071d4279SBram Moolenaar JavaHiLink javaDebugString DebugString 241071d4279SBram Moolenaar JavaHiLink javaDebugStringError javaError 242071d4279SBram Moolenaar JavaHiLink javaDebugType DebugType 243071d4279SBram Moolenaar JavaHiLink javaDebugBoolean DebugBoolean 244071d4279SBram Moolenaar JavaHiLink javaDebugNumber Debug 245071d4279SBram Moolenaar JavaHiLink javaDebugSpecial DebugSpecial 246071d4279SBram Moolenaar JavaHiLink javaDebugSpecialCharacter DebugSpecial 247071d4279SBram Moolenaar JavaHiLink javaDebugCharacter DebugString 248071d4279SBram Moolenaar JavaHiLink javaDebugParen Debug 249071d4279SBram Moolenaar 250071d4279SBram Moolenaar JavaHiLink DebugString String 251071d4279SBram Moolenaar JavaHiLink DebugSpecial Special 252071d4279SBram Moolenaar JavaHiLink DebugBoolean Boolean 253071d4279SBram Moolenaar JavaHiLink DebugType Type 254071d4279SBram Moolenaarendif 255071d4279SBram Moolenaar 256071d4279SBram Moolenaarif exists("java_mark_braces_in_parens_as_errors") 257071d4279SBram Moolenaar syn match javaInParen contained "[{}]" 258071d4279SBram Moolenaar JavaHiLink javaInParen javaError 259071d4279SBram Moolenaar syn cluster javaTop add=javaInParen 260071d4279SBram Moolenaarendif 261071d4279SBram Moolenaar 262071d4279SBram Moolenaar" catch errors caused by wrong parenthesis 263071d4279SBram Moolenaarsyn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1 264071d4279SBram Moolenaarsyn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained 265071d4279SBram Moolenaarsyn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained 266071d4279SBram Moolenaarsyn match javaParenError ")" 267293ee4d4SBram Moolenaar" catch errors caused by wrong square parenthesis 268293ee4d4SBram Moolenaarsyn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1 269293ee4d4SBram Moolenaarsyn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained 270293ee4d4SBram Moolenaarsyn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained 271293ee4d4SBram Moolenaarsyn match javaParenError "\]" 272293ee4d4SBram Moolenaar 273071d4279SBram MoolenaarJavaHiLink javaParenError javaError 274071d4279SBram Moolenaar 275f3c2afb7SBram Moolenaarif exists("java_highlight_functions") 276f3c2afb7SBram Moolenaar syn match javaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*->" 277f3c2afb7SBram Moolenaar " needs to be defined after the parenthesis error catcher to work 278f3c2afb7SBram Moolenaarendif 279f3c2afb7SBram Moolenaar 280071d4279SBram Moolenaarif !exists("java_minlines") 281071d4279SBram Moolenaar let java_minlines = 10 282071d4279SBram Moolenaarendif 283071d4279SBram Moolenaarexec "syn sync ccomment javaComment minlines=" . java_minlines 284071d4279SBram Moolenaar 285071d4279SBram Moolenaar" The default highlighting. 286f3c2afb7SBram MoolenaarJavaHiLink javaLambdaDef Function 287071d4279SBram MoolenaarJavaHiLink javaFuncDef Function 288a5792f58SBram MoolenaarJavaHiLink javaVarArg Function 289071d4279SBram MoolenaarJavaHiLink javaBraces Function 290071d4279SBram MoolenaarJavaHiLink javaBranch Conditional 291071d4279SBram MoolenaarJavaHiLink javaUserLabelRef javaUserLabel 292071d4279SBram MoolenaarJavaHiLink javaLabel Label 293071d4279SBram MoolenaarJavaHiLink javaUserLabel Label 294071d4279SBram MoolenaarJavaHiLink javaConditional Conditional 295071d4279SBram MoolenaarJavaHiLink javaRepeat Repeat 296071d4279SBram MoolenaarJavaHiLink javaExceptions Exception 297071d4279SBram MoolenaarJavaHiLink javaAssert Statement 298071d4279SBram MoolenaarJavaHiLink javaStorageClass StorageClass 299071d4279SBram MoolenaarJavaHiLink javaMethodDecl javaStorageClass 300071d4279SBram MoolenaarJavaHiLink javaClassDecl javaStorageClass 301071d4279SBram MoolenaarJavaHiLink javaScopeDecl javaStorageClass 302071d4279SBram MoolenaarJavaHiLink javaBoolean Boolean 303071d4279SBram MoolenaarJavaHiLink javaSpecial Special 304071d4279SBram MoolenaarJavaHiLink javaSpecialError Error 305071d4279SBram MoolenaarJavaHiLink javaSpecialCharError Error 306071d4279SBram MoolenaarJavaHiLink javaString String 307071d4279SBram MoolenaarJavaHiLink javaCharacter Character 308071d4279SBram MoolenaarJavaHiLink javaSpecialChar SpecialChar 309071d4279SBram MoolenaarJavaHiLink javaNumber Number 310071d4279SBram MoolenaarJavaHiLink javaError Error 311071d4279SBram MoolenaarJavaHiLink javaStringError Error 312071d4279SBram MoolenaarJavaHiLink javaStatement Statement 313071d4279SBram MoolenaarJavaHiLink javaOperator Operator 314071d4279SBram MoolenaarJavaHiLink javaComment Comment 315071d4279SBram MoolenaarJavaHiLink javaDocComment Comment 316071d4279SBram MoolenaarJavaHiLink javaLineComment Comment 317071d4279SBram MoolenaarJavaHiLink javaConstant Constant 318071d4279SBram MoolenaarJavaHiLink javaTypedef Typedef 319071d4279SBram MoolenaarJavaHiLink javaTodo Todo 320a5792f58SBram MoolenaarJavaHiLink javaAnnotation PreProc 321071d4279SBram Moolenaar 322071d4279SBram MoolenaarJavaHiLink javaCommentTitle SpecialComment 323071d4279SBram MoolenaarJavaHiLink javaDocTags Special 324071d4279SBram MoolenaarJavaHiLink javaDocParam Function 3258ada17c4SBram MoolenaarJavaHiLink javaDocSeeTagParam Function 326071d4279SBram MoolenaarJavaHiLink javaCommentStar javaComment 327071d4279SBram Moolenaar 328071d4279SBram MoolenaarJavaHiLink javaType Type 329071d4279SBram MoolenaarJavaHiLink javaExternal Include 330071d4279SBram Moolenaar 331071d4279SBram MoolenaarJavaHiLink htmlComment Special 332071d4279SBram MoolenaarJavaHiLink htmlCommentPart Special 333071d4279SBram MoolenaarJavaHiLink javaSpaceError Error 334071d4279SBram Moolenaar 335071d4279SBram Moolenaardelcommand JavaHiLink 336071d4279SBram Moolenaar 337071d4279SBram Moolenaarlet b:current_syntax = "java" 338071d4279SBram Moolenaar 339071d4279SBram Moolenaarif main_syntax == 'java' 340071d4279SBram Moolenaar unlet main_syntax 341071d4279SBram Moolenaarendif 342071d4279SBram Moolenaar 343071d4279SBram Moolenaarlet b:spell_options="contained" 3440c5fa7d7SBram Moolenaarlet &cpo = s:cpo_save 3450c5fa7d7SBram Moolenaarunlet s:cpo_save 346071d4279SBram Moolenaar 347071d4279SBram Moolenaar" vim: ts=8 348