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