| " Vim syntax file |
| " Language: Fantom |
| " Maintainer: Kamil Toman <kamil.toman@gmail.com> |
| " Last Change: 2010 May 27 |
| " Based on Java syntax file by Claudio Fleiner <claudio@fleiner.com> |
| |
| " Quit when a syntax file was already loaded |
| if exists("b:current_syntax") |
| finish |
| endif |
| |
| " keyword definitions |
| syn keyword fanExternal using native |
| syn keyword fanError goto void serializable volatile |
| syn keyword fanConditional if else switch |
| syn keyword fanRepeat do while for foreach each |
| syn keyword fanBoolean true false |
| syn keyword fanConstant null |
| syn keyword fanTypedef this super |
| syn keyword fanOperator new is isnot as |
| syn keyword fanLongOperator plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare |
| syn keyword fanType Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj |
| syn keyword fanStatement return |
| syn keyword fanStorageClass static const final |
| syn keyword fanSlot virtual override once |
| syn keyword fanField readonly |
| syn keyword fanExceptions throw try catch finally |
| syn keyword fanAssert assert |
| syn keyword fanTypedef class enum mixin |
| syn match fanFacet "@[_a-zA-Z][_a-zA-Z0-9_]*\>" |
| syn keyword fanBranch break continue |
| syn keyword fanScopeDecl public internal protected private abstract |
| |
| if exists("fan_space_errors") |
| if !exists("fan_no_trail_space_error") |
| syn match fanSpaceError "\s\+$" |
| endif |
| if !exists("fan_no_tab_space_error") |
| syn match fanSpaceError " \+\t"me=e-1 |
| endif |
| endif |
| |
| syn region fanLabelRegion transparent matchgroup=fanLabel start="\<case\>" matchgroup=NONE end=":" contains=fanNumber,fanCharacter |
| syn keyword fanLabel default |
| syn keyword fanLabel case |
| |
| " The following cluster contains all fan groups except the contained ones |
| 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 |
| |
| " Comments |
| syn keyword fanTodo contained TODO FIXME XXX |
| syn region fanComment start="/\*" end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell |
| syn match fanCommentStar contained "^\s*\*[^/]"me=e-1 |
| syn match fanCommentStar contained "^\s*\*$" |
| syn match fanLineComment "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell |
| syn match fanDocComment "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell |
| hi def link fanCommentString fanString |
| hi def link fanComment2String fanString |
| hi def link fanCommentCharacter fanCharacter |
| |
| syn cluster fanTop add=fanComment,fanLineComment,fanDocComment |
| |
| " match the special comment /**/ |
| syn match fanComment "/\*\*/" |
| |
| " Strings and constants |
| syn match fanSpecialError contained "\\." |
| syn match fanSpecialCharError contained "[^']" |
| syn match fanSpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)" |
| syn match fanStringSubst contained "\$[A-Za-z][A-Za-z_.]*" |
| syn match fanStringSubst contained "\${[^}]*}" |
| syn region fanString start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell |
| syn region fanTripleString start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell |
| syn region fanDSL start=+<|+ end=+|>+ |
| syn match fanUri "`[^`]*`" |
| syn match fanCharacter "'[^']*'" contains=fanSpecialChar,fanSpecialCharError |
| syn match fanCharacter "'\\''" contains=fanSpecialChar |
| syn match fanCharacter "'[^\\]'" |
| syn match fanNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" |
| syn match fanNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" |
| syn match fanNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" |
| syn match fanNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" |
| |
| syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError |
| |
| " The default highlighting. |
| hi def link fanBranch Conditional |
| hi def link fanLabel Label |
| hi def link fanUserLabel Label |
| hi def link fanConditional Conditional |
| hi def link fanRepeat Repeat |
| hi def link fanExceptions Exception |
| hi def link fanAssert Statement |
| hi def link fanStorageClass StorageClass |
| hi def link fanSlot StorageClass |
| hi def link fanField StorageClass |
| hi def link fanScopeDecl StorageClass |
| hi def link fanBoolean Boolean |
| hi def link fanSpecial Special |
| hi def link fanSpecialError Error |
| hi def link fanSpecialCharError Error |
| hi def link fanTripleString String |
| hi def link fanString String |
| hi def link fanDSL String |
| hi def link fanCharacter String |
| hi def link fanStringSubst Identifier |
| hi def link fanUri SpecialChar |
| hi def link fanSpecialChar SpecialChar |
| hi def link fanNumber Number |
| hi def link fanError Error |
| hi def link fanStringError Error |
| hi def link fanStatement Statement |
| hi def link fanOperator Operator |
| hi def link fanLongOperator Operator |
| hi def link fanComment Comment |
| hi def link fanDocComment Comment |
| hi def link fanLineComment Comment |
| hi def link fanConstant Constant |
| hi def link fanTypedef Typedef |
| hi def link fanTodo Todo |
| hi def link fanFacet PreProc |
| |
| hi def link fanCommentTitle SpecialComment |
| hi def link fanCommentStar SpecialComment |
| hi def link fanType Identifier |
| hi def link fanExternal Include |
| |
| hi def link fanSpaceError Error |
| |
| let b:current_syntax = "fan" |
| |
| " vim: ts=8 |