summaryrefslogtreecommitdiff
path: root/runtime/syntax/java.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/java.vim')
-rw-r--r--runtime/syntax/java.vim334
1 files changed, 334 insertions, 0 deletions
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
new file mode 100644
index 000000000..b47c17e69
--- /dev/null
+++ b/runtime/syntax/java.vim
@@ -0,0 +1,334 @@
+" Vim syntax file
+" Language: Java
+" Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: http://www.fleiner.com/vim/syntax/java.vim
+" Last Change: 2004 Apr 23
+
+" Please check :help java.vim for comments on some of the options available.
+
+" Quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if version < 600
+ syntax clear
+ elseif exists("b:current_syntax")
+ finish
+ endif
+ " we define it here so that included files can test for it
+ let main_syntax='java'
+endif
+
+" don't use standard HiLink, it will not work with included syntax files
+if version < 508
+ command! -nargs=+ JavaHiLink hi link <args>
+else
+ command! -nargs=+ JavaHiLink hi def link <args>
+endif
+
+" some characters that cannot be in a java program (outside a string)
+syn match javaError "[\\@`]"
+syn match javaError "<<<\|\.\.\|=>\|<>\|||=\|&&=\|[^-]->\|\*\/"
+syn match javaOK "\.\.\."
+
+" use separate name so that it can be deleted in javacc.vim
+syn match javaError2 "#\|=<"
+JavaHiLink javaError2 javaError
+
+
+
+" keyword definitions
+syn keyword javaExternal native package
+syn match javaExternal "\<import\(\s\+static\>\)\?"
+syn keyword javaError goto const
+syn keyword javaConditional if else switch
+syn keyword javaRepeat while for do
+syn keyword javaBoolean true false
+syn keyword javaConstant null
+syn keyword javaTypedef this super
+syn keyword javaOperator new instanceof
+syn keyword javaType boolean char byte short int long float double
+syn keyword javaType void
+syn keyword javaStatement return
+syn keyword javaStorageClass static synchronized transient volatile final strictfp serializable
+syn keyword javaExceptions throw try catch finally
+syn keyword javaAssert assert
+syn keyword javaMethodDecl synchronized throws
+syn keyword javaClassDecl extends implements interface
+" to differentiate the keyword class from MyClass.class we use a match here
+syn match javaTypedef "\.\s*\<class\>"ms=s+1
+syn keyword javaClassDecl enum
+syn match javaClassDecl "^class\>"
+syn match javaClassDecl "[^.]\s*\<class\>"ms=s+1
+syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite
+syn match javaUserLabelRef "\k\+" contained
+syn keyword javaScopeDecl public protected private abstract
+
+if exists("java_highlight_java_lang_ids") || exists("java_highlight_java_lang") || exists("java_highlight_all")
+ " java.lang.*
+ syn match javaLangClass "\<System\>"
+ syn keyword javaLangClass Cloneable Comparable Runnable Boolean Byte Class
+ syn keyword javaLangClass Character CharSequence ClassLoader Compiler Double Float
+ syn keyword javaLangClass Integer InheritableThreadLocal Long Math Number Object Package Process
+ syn keyword javaLangClass Runtime RuntimePermission InheritableThreadLocal
+ syn keyword javaLangClass SecurityManager Short String StrictMath StackTraceElement
+ syn keyword javaLangClass StringBuffer Thread ThreadGroup
+ syn keyword javaLangClass ThreadLocal Throwable Void ArithmeticException
+ syn keyword javaLangClass ArrayIndexOutOfBoundsException AssertionError
+ syn keyword javaLangClass ArrayStoreException ClassCastException
+ syn keyword javaLangClass ClassNotFoundException
+ syn keyword javaLangClass CloneNotSupportedException Exception
+ syn keyword javaLangClass IllegalAccessException
+ syn keyword javaLangClass IllegalArgumentException
+ syn keyword javaLangClass IllegalMonitorStateException
+ syn keyword javaLangClass IllegalStateException
+ syn keyword javaLangClass IllegalThreadStateException
+ syn keyword javaLangClass IndexOutOfBoundsException
+ syn keyword javaLangClass InstantiationException InterruptedException
+ syn keyword javaLangClass NegativeArraySizeException NoSuchFieldException
+ syn keyword javaLangClass NoSuchMethodException NullPointerException
+ syn keyword javaLangClass NumberFormatException RuntimeException
+ syn keyword javaLangClass SecurityException StringIndexOutOfBoundsException
+ syn keyword javaLangClass UnsupportedOperationException
+ syn keyword javaLangClass AbstractMethodError ClassCircularityError
+ syn keyword javaLangClass ClassFormatError Error ExceptionInInitializerError
+ syn keyword javaLangClass IllegalAccessError InstantiationError
+ syn keyword javaLangClass IncompatibleClassChangeError InternalError
+ syn keyword javaLangClass LinkageError NoClassDefFoundError
+ syn keyword javaLangClass NoSuchFieldError NoSuchMethodError
+ syn keyword javaLangClass OutOfMemoryError StackOverflowError
+ syn keyword javaLangClass ThreadDeath UnknownError UnsatisfiedLinkError
+ syn keyword javaLangClass UnsupportedClassVersionError VerifyError
+ syn keyword javaLangClass VirtualMachineError
+ syn keyword javaLangObject clone equals finalize getClass hashCode
+ syn keyword javaLangObject notify notifyAll toString wait
+ JavaHiLink javaLangClass javaConstant
+ JavaHiLink javaLangObject javaConstant
+ syn cluster javaTop add=javaLangObject,javaLangClass
+ syn cluster javaClasses add=javaLangClass
+endif
+
+if filereadable(expand("<sfile>:p:h")."/javaid.vim")
+ source <sfile>:p:h/javaid.vim
+endif
+
+if exists("java_space_errors")
+ if !exists("java_no_trail_space_error")
+ syn match javaSpaceError "\s\+$"
+ endif
+ if !exists("java_no_tab_space_error")
+ syn match javaSpaceError " \+\t"me=e-1
+ endif
+endif
+
+syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter
+syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
+syn keyword javaLabel default
+
+if !exists("java_allow_cpp_keywords")
+ syn keyword javaError auto delete extern friend inline redeclared
+ syn keyword javaError register signed sizeof struct template typedef union
+ syn keyword javaError unsigned operator
+endif
+
+" The following cluster contains all java groups except the contained ones
+syn 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
+
+
+" Comments
+syn keyword javaTodo contained TODO FIXME XXX
+if exists("java_comment_strings")
+ syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell
+ syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell
+ syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar
+ syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar
+ syn match javaCommentCharacter contained "'[^\\]'"
+ syn cluster javaCommentSpecial add=javaCommentString,javaCommentCharacter,javaNumber
+ syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber
+endif
+syn region javaComment start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell
+syn match javaCommentStar contained "^\s*\*[^/]"me=e-1
+syn match javaCommentStar contained "^\s*\*$"
+syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,@Spell
+JavaHiLink javaCommentString javaString
+JavaHiLink javaComment2String javaString
+JavaHiLink javaCommentCharacter javaCharacter
+
+syn cluster javaTop add=javaComment,javaLineComment
+
+if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
+ syntax case ignore
+ " syntax coloring for javadoc comments (HTML)
+ syntax include @javaHtml <sfile>:p:h/html.vim
+ unlet b:current_syntax
+ syn region javaDocComment start="/\*\*" end="\*/" keepend contains=javaCommentTitle,@javaHtml,javaDocTags,javaTodo,@Spell
+ 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
+
+ syn region javaDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}"
+ syn match javaDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
+ syn match javaDocParam contained "\s\S\+"
+ syn match javaDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
+ syntax case match
+endif
+
+" match the special comment /**/
+syn match javaComment "/\*\*/"
+
+" Strings and constants
+syn match javaSpecialError contained "\\."
+syn match javaSpecialCharError contained "[^']"
+syn match javaSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
+syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell
+" next line disabled, it can cause a crash for a long line
+"syn match javaStringError +"\([^"\\]\|\\.\)*$+
+syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
+syn match javaCharacter "'\\''" contains=javaSpecialChar
+syn match javaCharacter "'[^\\]'"
+syn match javaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match javaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match javaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match javaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+" unicode characters
+syn match javaSpecial "\\u\d\{4\}"
+
+syn cluster javaTop add=javaString,javaCharacter,javaNumber,javaSpecial,javaStringError
+
+if exists("java_highlight_functions")
+ if java_highlight_functions == "indent"
+ syn match javaFuncDef "^\(\t\| \{8\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
+ syn region javaFuncDef start=+^\(\t\| \{8\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
+ syn match javaFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)" contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
+ syn region javaFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+ end=+)+ contains=javaScopeDecl,javaType,javaStorageClass,@javaClasses
+ else
+ " This line catches method declarations at any indentation>0, but it assumes
+ " two things:
+ " 1. class names are always capitalized (ie: Button)
+ " 2. method names are never capitalized (except constructors, of course)
+ 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
+ endif
+ syn match javaBraces "[{}]"
+ syn cluster javaTop add=javaFuncDef,javaBraces
+endif
+
+if exists("java_highlight_debug")
+
+ " Strings and constants
+ syn match javaDebugSpecial contained "\\\d\d\d\|\\."
+ syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial
+ syn match javaDebugStringError +"\([^"\\]\|\\.\)*$+
+ syn match javaDebugCharacter contained "'[^\\]'"
+ syn match javaDebugSpecialCharacter contained "'\\.'"
+ syn match javaDebugSpecialCharacter contained "'\\''"
+ syn match javaDebugNumber contained "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+ syn match javaDebugNumber contained "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+ syn match javaDebugNumber contained "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+ syn match javaDebugNumber contained "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+ syn keyword javaDebugBoolean contained true false
+ syn keyword javaDebugType contained null this super
+ syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen
+
+ " to make this work you must define the highlighting for these groups
+ syn match javaDebug "\<System\.\(out\|err\)\.print\(ln\)*\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
+ syn match javaDebug "[A-Za-z][a-zA-Z0-9_]*\.printStackTrace\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
+ syn match javaDebug "\<trace[SL]\=\s*("me=e-1 contains=javaDebug.* nextgroup=javaDebugParen
+
+ syn cluster javaTop add=javaDebug
+
+ if version >= 508 || !exists("did_c_syn_inits")
+ JavaHiLink javaDebug Debug
+ JavaHiLink javaDebugString DebugString
+ JavaHiLink javaDebugStringError javaError
+ JavaHiLink javaDebugType DebugType
+ JavaHiLink javaDebugBoolean DebugBoolean
+ JavaHiLink javaDebugNumber Debug
+ JavaHiLink javaDebugSpecial DebugSpecial
+ JavaHiLink javaDebugSpecialCharacter DebugSpecial
+ JavaHiLink javaDebugCharacter DebugString
+ JavaHiLink javaDebugParen Debug
+
+ JavaHiLink DebugString String
+ JavaHiLink DebugSpecial Special
+ JavaHiLink DebugBoolean Boolean
+ JavaHiLink DebugType Type
+ endif
+endif
+
+if exists("java_mark_braces_in_parens_as_errors")
+ syn match javaInParen contained "[{}]"
+ JavaHiLink javaInParen javaError
+ syn cluster javaTop add=javaInParen
+endif
+
+" catch errors caused by wrong parenthesis
+syn region javaParenT transparent matchgroup=javaParen start="(" end=")" contains=@javaTop,javaParenT1
+syn region javaParenT1 transparent matchgroup=javaParen1 start="(" end=")" contains=@javaTop,javaParenT2 contained
+syn region javaParenT2 transparent matchgroup=javaParen2 start="(" end=")" contains=@javaTop,javaParenT contained
+syn match javaParenError ")"
+JavaHiLink javaParenError javaError
+
+if !exists("java_minlines")
+ let java_minlines = 10
+endif
+exec "syn sync ccomment javaComment minlines=" . java_minlines
+
+" The default highlighting.
+if version >= 508 || !exists("did_java_syn_inits")
+ if version < 508
+ let did_java_syn_inits = 1
+ endif
+ JavaHiLink javaFuncDef Function
+ JavaHiLink javaBraces Function
+ JavaHiLink javaBranch Conditional
+ JavaHiLink javaUserLabelRef javaUserLabel
+ JavaHiLink javaLabel Label
+ JavaHiLink javaUserLabel Label
+ JavaHiLink javaConditional Conditional
+ JavaHiLink javaRepeat Repeat
+ JavaHiLink javaExceptions Exception
+ JavaHiLink javaAssert Statement
+ JavaHiLink javaStorageClass StorageClass
+ JavaHiLink javaMethodDecl javaStorageClass
+ JavaHiLink javaClassDecl javaStorageClass
+ JavaHiLink javaScopeDecl javaStorageClass
+ JavaHiLink javaBoolean Boolean
+ JavaHiLink javaSpecial Special
+ JavaHiLink javaSpecialError Error
+ JavaHiLink javaSpecialCharError Error
+ JavaHiLink javaString String
+ JavaHiLink javaCharacter Character
+ JavaHiLink javaSpecialChar SpecialChar
+ JavaHiLink javaNumber Number
+ JavaHiLink javaError Error
+ JavaHiLink javaStringError Error
+ JavaHiLink javaStatement Statement
+ JavaHiLink javaOperator Operator
+ JavaHiLink javaComment Comment
+ JavaHiLink javaDocComment Comment
+ JavaHiLink javaLineComment Comment
+ JavaHiLink javaConstant Constant
+ JavaHiLink javaTypedef Typedef
+ JavaHiLink javaTodo Todo
+
+ JavaHiLink javaCommentTitle SpecialComment
+ JavaHiLink javaDocTags Special
+ JavaHiLink javaDocParam Function
+ JavaHiLink javaCommentStar javaComment
+
+ JavaHiLink javaType Type
+ JavaHiLink javaExternal Include
+
+ JavaHiLink htmlComment Special
+ JavaHiLink htmlCommentPart Special
+ JavaHiLink javaSpaceError Error
+endif
+
+delcommand JavaHiLink
+
+let b:current_syntax = "java"
+
+if main_syntax == 'java'
+ unlet main_syntax
+endif
+
+let b:spell_options="contained"
+
+" vim: ts=8