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 5*f3c2afb7SBram 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 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' 185c73622aSBram Moolenaar syn region javaFold start="{" end="}" transparent fold 19071d4279SBram Moolenaarendif 20071d4279SBram Moolenaar 210c5fa7d7SBram Moolenaarlet s:cpo_save = &cpo 220c5fa7d7SBram Moolenaarset cpo&vim 230c5fa7d7SBram Moolenaar 24071d4279SBram Moolenaar" don't use standard HiLink, it will not work with included syntax files 25071d4279SBram Moolenaarif version < 508 26071d4279SBram Moolenaar command! -nargs=+ JavaHiLink hi link <args> 27071d4279SBram Moolenaarelse 28071d4279SBram Moolenaar command! -nargs=+ JavaHiLink hi def link <args> 29071d4279SBram Moolenaarendif 30071d4279SBram Moolenaar 31071d4279SBram Moolenaar" some characters that cannot be in a java program (outside a string) 32071d4279SBram Moolenaarsyn match javaError "[\\@`]" 33*f3c2afb7SBram Moolenaarsyn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/" 340c5fa7d7SBram Moolenaar 35071d4279SBram Moolenaarsyn match javaOK "\.\.\." 36071d4279SBram Moolenaar 37071d4279SBram Moolenaar" use separate name so that it can be deleted in javacc.vim 38071d4279SBram Moolenaarsyn match javaError2 "#\|=<" 39071d4279SBram MoolenaarJavaHiLink javaError2 javaError 40071d4279SBram Moolenaar 41071d4279SBram Moolenaar 42071d4279SBram Moolenaar 43071d4279SBram Moolenaar" keyword definitions 44071d4279SBram Moolenaarsyn keyword javaExternal native package 45293ee4d4SBram Moolenaarsyn match javaExternal "\<import\>\(\s\+static\>\)\?" 46071d4279SBram Moolenaarsyn keyword javaError goto const 47071d4279SBram Moolenaarsyn keyword javaConditional if else switch 48071d4279SBram Moolenaarsyn keyword javaRepeat while for do 49071d4279SBram Moolenaarsyn keyword javaBoolean true false 50071d4279SBram Moolenaarsyn keyword javaConstant null 51071d4279SBram Moolenaarsyn keyword javaTypedef this super 52071d4279SBram Moolenaarsyn keyword javaOperator new instanceof 53071d4279SBram Moolenaarsyn keyword javaType boolean char byte short int long float double 54071d4279SBram Moolenaarsyn keyword javaType void 55071d4279SBram Moolenaarsyn keyword javaStatement return 56071d4279SBram Moolenaarsyn keyword javaStorageClass static synchronized transient volatile final strictfp serializable 57071d4279SBram Moolenaarsyn keyword javaExceptions throw try catch finally 58071d4279SBram Moolenaarsyn keyword javaAssert assert 59071d4279SBram Moolenaarsyn keyword javaMethodDecl synchronized throws 60071d4279SBram Moolenaarsyn keyword javaClassDecl extends implements interface 61071d4279SBram Moolenaar" to differentiate the keyword class from MyClass.class we use a match here 62071d4279SBram Moolenaarsyn match javaTypedef "\.\s*\<class\>"ms=s+1 63071d4279SBram Moolenaarsyn keyword javaClassDecl enum 64071d4279SBram Moolenaarsyn match javaClassDecl "^class\>" 65071d4279SBram Moolenaarsyn match javaClassDecl "[^.]\s*\<class\>"ms=s+1 66*f3c2afb7SBram Moolenaarsyn match javaAnnotation "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>\(([^)]*)\)\=" contains=javaString 67a5792f58SBram Moolenaarsyn match javaClassDecl "@interface\>" 68071d4279SBram Moolenaarsyn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite 69071d4279SBram Moolenaarsyn match javaUserLabelRef "\k\+" contained 70a5792f58SBram Moolenaarsyn match javaVarArg "\.\.\." 71071d4279SBram Moolenaarsyn keyword javaScopeDecl public protected private abstract 72071d4279SBram Moolenaar 738ada17c4SBram Moolenaarif exists("java_highlight_java_lang_ids") 748ada17c4SBram Moolenaar let java_highlight_all=1 758ada17c4SBram Moolenaarendif 768ada17c4SBram Moolenaarif exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang") 77071d4279SBram Moolenaar " java.lang.* 78071d4279SBram Moolenaar syn match javaLangClass "\<System\>" 798ada17c4SBram Moolenaar syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException 808ada17c4SBram Moolenaar syn cluster javaTop add=javaR_JavaLang 818ada17c4SBram Moolenaar syn cluster javaClasses add=javaR_JavaLang 828ada17c4SBram Moolenaar JavaHiLink javaR_JavaLang javaR_Java 838ada17c4SBram 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 848ada17c4SBram Moolenaar syn cluster javaTop add=javaC_JavaLang 858ada17c4SBram Moolenaar syn cluster javaClasses add=javaC_JavaLang 868ada17c4SBram Moolenaar JavaHiLink javaC_JavaLang javaC_Java 878ada17c4SBram 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 888ada17c4SBram Moolenaar syn cluster javaTop add=javaE_JavaLang 898ada17c4SBram Moolenaar syn cluster javaClasses add=javaE_JavaLang 908ada17c4SBram Moolenaar JavaHiLink javaE_JavaLang javaE_Java 918ada17c4SBram Moolenaar syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException 928ada17c4SBram Moolenaar syn cluster javaTop add=javaX_JavaLang 938ada17c4SBram Moolenaar syn cluster javaClasses add=javaX_JavaLang 948ada17c4SBram Moolenaar JavaHiLink javaX_JavaLang javaX_Java 958ada17c4SBram Moolenaar 968ada17c4SBram Moolenaar JavaHiLink javaR_Java javaR_ 978ada17c4SBram Moolenaar JavaHiLink javaC_Java javaC_ 988ada17c4SBram Moolenaar JavaHiLink javaE_Java javaE_ 998ada17c4SBram Moolenaar JavaHiLink javaX_Java javaX_ 1008ada17c4SBram Moolenaar JavaHiLink javaX_ javaExceptions 1018ada17c4SBram Moolenaar JavaHiLink javaR_ javaExceptions 1028ada17c4SBram Moolenaar JavaHiLink javaE_ javaExceptions 1038ada17c4SBram Moolenaar JavaHiLink javaC_ javaConstant 1048ada17c4SBram Moolenaar 105071d4279SBram Moolenaar syn keyword javaLangObject clone equals finalize getClass hashCode 106071d4279SBram Moolenaar syn keyword javaLangObject notify notifyAll toString wait 107071d4279SBram Moolenaar JavaHiLink javaLangObject javaConstant 1088ada17c4SBram Moolenaar syn cluster javaTop add=javaLangObject 109071d4279SBram Moolenaarendif 110071d4279SBram Moolenaar 111071d4279SBram Moolenaarif filereadable(expand("<sfile>:p:h")."/javaid.vim") 112071d4279SBram Moolenaar source <sfile>:p:h/javaid.vim 113071d4279SBram Moolenaarendif 114071d4279SBram Moolenaar 115071d4279SBram Moolenaarif exists("java_space_errors") 116071d4279SBram Moolenaar if !exists("java_no_trail_space_error") 117071d4279SBram Moolenaar syn match javaSpaceError "\s\+$" 118071d4279SBram Moolenaar endif 119071d4279SBram Moolenaar if !exists("java_no_tab_space_error") 120071d4279SBram Moolenaar syn match javaSpaceError " \+\t"me=e-1 121071d4279SBram Moolenaar endif 122071d4279SBram Moolenaarendif 123071d4279SBram Moolenaar 124*f3c2afb7SBram Moolenaarsyn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString 125071d4279SBram Moolenaarsyn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel 126071d4279SBram Moolenaarsyn keyword javaLabel default 127071d4279SBram Moolenaar 128b6b046b2SBram Moolenaar" highlighting C++ keywords as errors removed, too many people find it 129b6b046b2SBram Moolenaar" annoying. Was: if !exists("java_allow_cpp_keywords") 130071d4279SBram Moolenaar 131071d4279SBram Moolenaar" The following cluster contains all java groups except the contained ones 132a5792f58SBram 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 133071d4279SBram Moolenaar 134071d4279SBram Moolenaar 135071d4279SBram Moolenaar" Comments 136071d4279SBram Moolenaarsyn keyword javaTodo contained TODO FIXME XXX 137071d4279SBram Moolenaarif exists("java_comment_strings") 138071d4279SBram Moolenaar syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell 139071d4279SBram Moolenaar syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell 140071d4279SBram Moolenaar syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar 141071d4279SBram Moolenaar syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar 142071d4279SBram Moolenaar syn match javaCommentCharacter contained "'[^\\]'" 143071d4279SBram Moolenaar syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber 144071d4279SBram Moolenaar syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber 145071d4279SBram Moolenaarendif 146071d4279SBram Moolenaarsyn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell 147071d4279SBram Moolenaarsyn match javaCommentStar contained "^\s*\*[^/]"me=e-1 148071d4279SBram Moolenaarsyn match javaCommentStar contained "^\s*\*$" 149071d4279SBram Moolenaarsyn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell 150071d4279SBram MoolenaarJavaHiLink javaCommentString javaString 151071d4279SBram MoolenaarJavaHiLink javaComment2String javaString 152071d4279SBram MoolenaarJavaHiLink javaCommentCharacter javaCharacter 153071d4279SBram Moolenaar 154071d4279SBram Moolenaarsyn cluster javaTop add=javaComment,javaLineComment 155071d4279SBram Moolenaar 156071d4279SBram Moolenaarif !exists("java_ignore_javadoc") && main_syntax != 'jsp' 157071d4279SBram Moolenaar syntax case ignore 158071d4279SBram Moolenaar " syntax coloring for javadoc comments (HTML) 159071d4279SBram Moolenaar syntax include @javaHtml <sfile>:p:h/html.vim 160071d4279SBram Moolenaar unlet b:current_syntax 1615c73622aSBram Moolenaar " HTML enables spell checking for all text that is not in a syntax item. This 1625c73622aSBram Moolenaar " is wrong for Java (all identifiers would be spell-checked), so it's undone 1635c73622aSBram Moolenaar " here. 1645c73622aSBram Moolenaar syntax spell default 1655c73622aSBram Moolenaar 1668ada17c4SBram Moolenaar syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaTodo,@Spell 1678ada17c4SBram 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 168071d4279SBram Moolenaar 1690c5fa7d7SBram Moolenaar syn region javaDocTags contained start="{@\(code\|link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" 1708ada17c4SBram Moolenaar syn match javaDocTags contained "@\(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam 171071d4279SBram Moolenaar syn match javaDocParam contained "\s\S\+" 172071d4279SBram Moolenaar syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>" 1738ada17c4SBram Moolenaar syn region javaDocSeeTag contained matchgroup=javaDocTags start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam 1748ada17c4SBram Moolenaar syn match javaDocSeeTagParam contained @"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\(\k\|\.\)*\(#\k\+\((\_[^)]\+)\)\=\)\=@ extend 175071d4279SBram Moolenaar syntax case match 176071d4279SBram Moolenaarendif 177071d4279SBram Moolenaar 178071d4279SBram Moolenaar" match the special comment /**/ 179071d4279SBram Moolenaarsyn match javaComment "/\*\*/" 180071d4279SBram Moolenaar 181071d4279SBram Moolenaar" Strings and constants 182071d4279SBram Moolenaarsyn match javaSpecialError contained "\\." 183071d4279SBram Moolenaarsyn match javaSpecialCharError contained "[^']" 18400a927d6SBram Moolenaarsyn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)" 185071d4279SBram Moolenaarsyn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell 186071d4279SBram Moolenaar" next line disabled, it can cause a crash for a long line 187071d4279SBram Moolenaar"syn match javaStringError +"\([^"\\]\|\\.\)*$+ 188071d4279SBram Moolenaarsyn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError 189071d4279SBram Moolenaarsyn match javaCharacter "'\\''" contains=javaSpecialChar 190071d4279SBram Moolenaarsyn match javaCharacter "'[^\\]'" 191*f3c2afb7SBram Moolenaarsyn match javaNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>" 192*f3c2afb7SBram Moolenaarsyn match javaNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\=" 193*f3c2afb7SBram Moolenaarsyn match javaNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>" 194*f3c2afb7SBram Moolenaarsyn match javaNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>" 195071d4279SBram Moolenaar 196071d4279SBram Moolenaar" unicode characters 19700a927d6SBram Moolenaarsyn match javaSpecial "\\u\d\{4\}" 198071d4279SBram Moolenaar 199071d4279SBram Moolenaarsyn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError 200071d4279SBram Moolenaar 201071d4279SBram Moolenaarif exists("java_highlight_functions") 202071d4279SBram Moolenaar if java_highlight_functions == "indent" 203*f3c2afb7SBram Moolenaar syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 204*f3c2afb7SBram Moolenaar syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 205*f3c2afb7SBram Moolenaar syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 206*f3c2afb7SBram Moolenaar syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]<>]*([^-+*/]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses,javaAnnotation 207071d4279SBram Moolenaar else 208071d4279SBram Moolenaar " This line catches method declarations at any indentation>0, but it assumes 209071d4279SBram Moolenaar " two things: 210071d4279SBram Moolenaar " 1. class names are always capitalized (ie: Button) 211071d4279SBram Moolenaar " 2. method names are never capitalized (except constructors, of course) 212*f3c2afb7SBram 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 213*f3c2afb7SBram 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 214071d4279SBram Moolenaar endif 215*f3c2afb7SBram Moolenaar syn match javaLambdaDef "[a-zA-Z_][a-zA-Z0-9_]*\s*->" 216071d4279SBram Moolenaar syn match javaBraces "[{}]" 217*f3c2afb7SBram Moolenaar syn cluster javaTop add=javaFuncDef,javaBraces,javaLambdaDef 218071d4279SBram Moolenaarendif 219071d4279SBram Moolenaar 220071d4279SBram Moolenaarif exists("java_highlight_debug") 221071d4279SBram Moolenaar 222071d4279SBram Moolenaar " Strings and constants 223071d4279SBram Moolenaar syn match javaDebugSpecial contained "\\\d\d\d\|\\." 224071d4279SBram Moolenaar syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial 225071d4279SBram Moolenaar syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+ 226071d4279SBram Moolenaar syn match javaDebugCharacter contained "'[^\\]'" 227071d4279SBram Moolenaar syn match javaDebugSpecialCharacter contained "'\\.'" 228071d4279SBram Moolenaar syn match javaDebugSpecialCharacter contained "'\\''" 229071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" 230071d4279SBram Moolenaar syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" 231071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" 232071d4279SBram Moolenaar syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" 233071d4279SBram Moolenaar syn keyword javaDebugBoolean contained true false 234071d4279SBram Moolenaar syn keyword javaDebugType contained null this super 235071d4279SBram Moolenaar syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen 236071d4279SBram Moolenaar 237071d4279SBram Moolenaar " to make this work you must define the highlighting for these groups 238071d4279SBram Moolenaar syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 239293ee4d4SBram Moolenaar syn match javaDebug "\<p\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 240071d4279SBram Moolenaar syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 241071d4279SBram Moolenaar syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen 242071d4279SBram Moolenaar 243071d4279SBram Moolenaar syn cluster javaTop add=javaDebug 244071d4279SBram Moolenaar 245071d4279SBram Moolenaar if version >= 508 || !exists("did_c_syn_inits") 246071d4279SBram Moolenaar JavaHiLink javaDebug Debug 247071d4279SBram Moolenaar JavaHiLink javaDebugString DebugString 248071d4279SBram Moolenaar JavaHiLink javaDebugStringError javaError 249071d4279SBram Moolenaar JavaHiLink javaDebugType DebugType 250071d4279SBram Moolenaar JavaHiLink javaDebugBoolean DebugBoolean 251071d4279SBram Moolenaar JavaHiLink javaDebugNumber Debug 252071d4279SBram Moolenaar JavaHiLink javaDebugSpecial DebugSpecial 253071d4279SBram Moolenaar JavaHiLink javaDebugSpecialCharacter DebugSpecial 254071d4279SBram Moolenaar JavaHiLink javaDebugCharacter DebugString 255071d4279SBram Moolenaar JavaHiLink javaDebugParen Debug 256071d4279SBram Moolenaar 257071d4279SBram Moolenaar JavaHiLink DebugString String 258071d4279SBram Moolenaar JavaHiLink DebugSpecial Special 259071d4279SBram Moolenaar JavaHiLink DebugBoolean Boolean 260071d4279SBram Moolenaar JavaHiLink DebugType Type 261071d4279SBram Moolenaar endif 262071d4279SBram Moolenaarendif 263071d4279SBram Moolenaar 264071d4279SBram Moolenaarif exists("java_mark_braces_in_parens_as_errors") 265071d4279SBram Moolenaar syn match javaInParen contained "[{}]" 266071d4279SBram Moolenaar JavaHiLink javaInParen javaError 267071d4279SBram Moolenaar syn cluster javaTop add=javaInParen 268071d4279SBram Moolenaarendif 269071d4279SBram Moolenaar 270071d4279SBram Moolenaar" catch errors caused by wrong parenthesis 271071d4279SBram Moolenaarsyn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1 272071d4279SBram Moolenaarsyn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained 273071d4279SBram Moolenaarsyn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained 274071d4279SBram Moolenaarsyn match javaParenError ")" 275293ee4d4SBram Moolenaar" catch errors caused by wrong square parenthesis 276293ee4d4SBram Moolenaarsyn region javaParenT transparent matchgroup=javaParen start="\[" end="\]" contains=@javaTop,javaParenT1 277293ee4d4SBram Moolenaarsyn region javaParenT1 transparent matchgroup=javaParen1 start="\[" end="\]" contains=@javaTop,javaParenT2 contained 278293ee4d4SBram Moolenaarsyn region javaParenT2 transparent matchgroup=javaParen2 start="\[" end="\]" contains=@javaTop,javaParenT contained 279293ee4d4SBram Moolenaarsyn match javaParenError "\]" 280293ee4d4SBram Moolenaar 281071d4279SBram MoolenaarJavaHiLink javaParenError javaError 282071d4279SBram Moolenaar 283*f3c2afb7SBram Moolenaarif exists("java_highlight_functions") 284*f3c2afb7SBram Moolenaar syn match javaLambdaDef "([a-zA-Z0-9_<>\[\], \t]*)\s*->" 285*f3c2afb7SBram Moolenaar " needs to be defined after the parenthesis error catcher to work 286*f3c2afb7SBram Moolenaarendif 287*f3c2afb7SBram Moolenaar 288071d4279SBram Moolenaarif !exists("java_minlines") 289071d4279SBram Moolenaar let java_minlines = 10 290071d4279SBram Moolenaarendif 291071d4279SBram Moolenaarexec "syn sync ccomment javaComment minlines=" . java_minlines 292071d4279SBram Moolenaar 293071d4279SBram Moolenaar" The default highlighting. 294071d4279SBram Moolenaarif version >= 508 || !exists("did_java_syn_inits") 295071d4279SBram Moolenaar if version < 508 296071d4279SBram Moolenaar let did_java_syn_inits = 1 297071d4279SBram Moolenaar endif 298*f3c2afb7SBram Moolenaar JavaHiLink javaLambdaDef Function 299071d4279SBram Moolenaar JavaHiLink javaFuncDef Function 300a5792f58SBram Moolenaar JavaHiLink javaVarArg Function 301071d4279SBram Moolenaar JavaHiLink javaBraces Function 302071d4279SBram Moolenaar JavaHiLink javaBranch Conditional 303071d4279SBram Moolenaar JavaHiLink javaUserLabelRef javaUserLabel 304071d4279SBram Moolenaar JavaHiLink javaLabel Label 305071d4279SBram Moolenaar JavaHiLink javaUserLabel Label 306071d4279SBram Moolenaar JavaHiLink javaConditional Conditional 307071d4279SBram Moolenaar JavaHiLink javaRepeat Repeat 308071d4279SBram Moolenaar JavaHiLink javaExceptions Exception 309071d4279SBram Moolenaar JavaHiLink javaAssert Statement 310071d4279SBram Moolenaar JavaHiLink javaStorageClass StorageClass 311071d4279SBram Moolenaar JavaHiLink javaMethodDecl javaStorageClass 312071d4279SBram Moolenaar JavaHiLink javaClassDecl javaStorageClass 313071d4279SBram Moolenaar JavaHiLink javaScopeDecl javaStorageClass 314071d4279SBram Moolenaar JavaHiLink javaBoolean Boolean 315071d4279SBram Moolenaar JavaHiLink javaSpecial Special 316071d4279SBram Moolenaar JavaHiLink javaSpecialError Error 317071d4279SBram Moolenaar JavaHiLink javaSpecialCharError Error 318071d4279SBram Moolenaar JavaHiLink javaString String 319071d4279SBram Moolenaar JavaHiLink javaCharacter Character 320071d4279SBram Moolenaar JavaHiLink javaSpecialChar SpecialChar 321071d4279SBram Moolenaar JavaHiLink javaNumber Number 322071d4279SBram Moolenaar JavaHiLink javaError Error 323071d4279SBram Moolenaar JavaHiLink javaStringError Error 324071d4279SBram Moolenaar JavaHiLink javaStatement Statement 325071d4279SBram Moolenaar JavaHiLink javaOperator Operator 326071d4279SBram Moolenaar JavaHiLink javaComment Comment 327071d4279SBram Moolenaar JavaHiLink javaDocComment Comment 328071d4279SBram Moolenaar JavaHiLink javaLineComment Comment 329071d4279SBram Moolenaar JavaHiLink javaConstant Constant 330071d4279SBram Moolenaar JavaHiLink javaTypedef Typedef 331071d4279SBram Moolenaar JavaHiLink javaTodo Todo 332a5792f58SBram Moolenaar JavaHiLink javaAnnotation PreProc 333071d4279SBram Moolenaar 334071d4279SBram Moolenaar JavaHiLink javaCommentTitle SpecialComment 335071d4279SBram Moolenaar JavaHiLink javaDocTags Special 336071d4279SBram Moolenaar JavaHiLink javaDocParam Function 3378ada17c4SBram Moolenaar JavaHiLink javaDocSeeTagParam Function 338071d4279SBram Moolenaar JavaHiLink javaCommentStar javaComment 339071d4279SBram Moolenaar 340071d4279SBram Moolenaar JavaHiLink javaType Type 341071d4279SBram Moolenaar JavaHiLink javaExternal Include 342071d4279SBram Moolenaar 343071d4279SBram Moolenaar JavaHiLink htmlComment Special 344071d4279SBram Moolenaar JavaHiLink htmlCommentPart Special 345071d4279SBram Moolenaar JavaHiLink javaSpaceError Error 346071d4279SBram Moolenaarendif 347071d4279SBram Moolenaar 348071d4279SBram Moolenaardelcommand JavaHiLink 349071d4279SBram Moolenaar 350071d4279SBram Moolenaarlet b:current_syntax = "java" 351071d4279SBram Moolenaar 352071d4279SBram Moolenaarif main_syntax == 'java' 353071d4279SBram Moolenaar unlet main_syntax 354071d4279SBram Moolenaarendif 355071d4279SBram Moolenaar 356071d4279SBram Moolenaarlet b:spell_options="contained" 3570c5fa7d7SBram Moolenaarlet &cpo = s:cpo_save 3580c5fa7d7SBram Moolenaarunlet s:cpo_save 359071d4279SBram Moolenaar 360071d4279SBram Moolenaar" vim: ts=8 361