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