home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / runtime / syntax / java.vim < prev    next >
Encoding:
Text File  |  2012-05-31  |  17.0 KB  |  346 lines

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