fan.vim 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. " Vim syntax file
  2. " Language: Fantom
  3. " Maintainer: Kamil Toman <kamil.toman@gmail.com>
  4. " Last Change: 2010 May 27
  5. " Based on Java syntax file by Claudio Fleiner <claudio@fleiner.com>
  6. " Quit when a syntax file was already loaded
  7. if exists("b:current_syntax")
  8. finish
  9. endif
  10. " keyword definitions
  11. syn keyword fanExternal using native
  12. syn keyword fanError goto void serializable volatile
  13. syn keyword fanConditional if else switch
  14. syn keyword fanRepeat do while for foreach each
  15. syn keyword fanBoolean true false
  16. syn keyword fanConstant null
  17. syn keyword fanTypedef this super
  18. syn keyword fanOperator new is isnot as
  19. syn keyword fanLongOperator plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare
  20. syn keyword fanType Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj
  21. syn keyword fanStatement return
  22. syn keyword fanStorageClass static const final
  23. syn keyword fanSlot virtual override once
  24. syn keyword fanField readonly
  25. syn keyword fanExceptions throw try catch finally
  26. syn keyword fanAssert assert
  27. syn keyword fanTypedef class enum mixin
  28. syn match fanFacet "@[_a-zA-Z][_a-zA-Z0-9_]*\>"
  29. syn keyword fanBranch break continue
  30. syn keyword fanScopeDecl public internal protected private abstract
  31. if exists("fan_space_errors")
  32. if !exists("fan_no_trail_space_error")
  33. syn match fanSpaceError "\s\+$"
  34. endif
  35. if !exists("fan_no_tab_space_error")
  36. syn match fanSpaceError " \+\t"me=e-1
  37. endif
  38. endif
  39. syn region fanLabelRegion transparent matchgroup=fanLabel start="\<case\>" matchgroup=NONE end=":" contains=fanNumber,fanCharacter
  40. syn keyword fanLabel default
  41. syn keyword fanLabel case
  42. " The following cluster contains all fan groups except the contained ones
  43. syn cluster fanTop add=fanExternal,fanError,fanConditional,fanRepeat,fanBoolean,fanConstant,fanTypedef,fanOperator,fanLongOperator,fanType,fanType,fanStatement,fanStorageClass,fanSlot,fanField,fanExceptions,fanAssert,fanClassDecl,fanTypedef,fanFacet,fanBranch,fanScopeDecl,fanLabelRegion,fanLabel
  44. " Comments
  45. syn keyword fanTodo contained TODO FIXME XXX
  46. syn region fanComment start="/\*" end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell
  47. syn match fanCommentStar contained "^\s*\*[^/]"me=e-1
  48. syn match fanCommentStar contained "^\s*\*$"
  49. syn match fanLineComment "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell
  50. syn match fanDocComment "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell
  51. hi def link fanCommentString fanString
  52. hi def link fanComment2String fanString
  53. hi def link fanCommentCharacter fanCharacter
  54. syn cluster fanTop add=fanComment,fanLineComment,fanDocComment
  55. " match the special comment /**/
  56. syn match fanComment "/\*\*/"
  57. " Strings and constants
  58. syn match fanSpecialError contained "\\."
  59. syn match fanSpecialCharError contained "[^']"
  60. syn match fanSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
  61. syn match fanStringSubst contained "\$[A-Za-z][A-Za-z_.]*"
  62. syn match fanStringSubst contained "\${[^}]*}"
  63. syn region fanString start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
  64. syn region fanTripleString start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
  65. syn region fanDSL start=+<|+ end=+|>+
  66. syn match fanUri "`[^`]*`"
  67. syn match fanCharacter "'[^']*'" contains=fanSpecialChar,fanSpecialCharError
  68. syn match fanCharacter "'\\''" contains=fanSpecialChar
  69. syn match fanCharacter "'[^\\]'"
  70. syn match fanNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
  71. syn match fanNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
  72. syn match fanNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
  73. syn match fanNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
  74. syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError
  75. " The default highlighting.
  76. hi def link fanBranch Conditional
  77. hi def link fanLabel Label
  78. hi def link fanUserLabel Label
  79. hi def link fanConditional Conditional
  80. hi def link fanRepeat Repeat
  81. hi def link fanExceptions Exception
  82. hi def link fanAssert Statement
  83. hi def link fanStorageClass StorageClass
  84. hi def link fanSlot StorageClass
  85. hi def link fanField StorageClass
  86. hi def link fanScopeDecl StorageClass
  87. hi def link fanBoolean Boolean
  88. hi def link fanSpecial Special
  89. hi def link fanSpecialError Error
  90. hi def link fanSpecialCharError Error
  91. hi def link fanTripleString String
  92. hi def link fanString String
  93. hi def link fanDSL String
  94. hi def link fanCharacter String
  95. hi def link fanStringSubst Identifier
  96. hi def link fanUri SpecialChar
  97. hi def link fanSpecialChar SpecialChar
  98. hi def link fanNumber Number
  99. hi def link fanError Error
  100. hi def link fanStringError Error
  101. hi def link fanStatement Statement
  102. hi def link fanOperator Operator
  103. hi def link fanLongOperator Operator
  104. hi def link fanComment Comment
  105. hi def link fanDocComment Comment
  106. hi def link fanLineComment Comment
  107. hi def link fanConstant Constant
  108. hi def link fanTypedef Typedef
  109. hi def link fanTodo Todo
  110. hi def link fanFacet PreProc
  111. hi def link fanCommentTitle SpecialComment
  112. hi def link fanCommentStar SpecialComment
  113. hi def link fanType Identifier
  114. hi def link fanExternal Include
  115. hi def link fanSpaceError Error
  116. let b:current_syntax = "fan"
  117. " vim: ts=8