Bram Moolenaar | 8cd213c | 2010-06-01 21:57:09 +0200 | [diff] [blame] | 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 |