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