falcon.vim (12013B)
1 " Vim syntax file 2 " Language: Falcon 3 " Maintainer: Steven Oliver <oliver.steven@gmail.com> 4 " Website: http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim 5 " Credits: Thanks the ruby.vim authors, I borrowed a lot! 6 " Thanks to the lisp authors for the rainbow code! 7 " ------------------------------------------------------------------------------- 8 9 " When wanted, highlight the trailing whitespace. 10 if exists("c_space_errors") 11 if !exists("c_no_trail_space_error") 12 syn match falconSpaceError "\s\+$" 13 endif 14 15 if !exists("c_no_tab_space_error") 16 syn match falconSpaceError " \+\t"me=e-1 17 endif 18 endif 19 20 " Symbols 21 syn match falconSymbol "\(;\|,\|\.\)" 22 syn match falconSymbolOther "\(#\|@\)" display 23 24 " Operators 25 syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)" 26 syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)" 27 28 " Clusters 29 syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold 30 syn case match 31 32 " Keywords 33 syn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const 34 syn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function 35 syn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list 36 syn keyword falconKeyword load notin object pass print printl provides raise return self sender static to 37 syn keyword falconKeyword try xamp 38 39 " Error Type Keywords 40 syn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError 41 syn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError 42 43 " Todo 44 syn keyword falconTodo DEBUG FIXME NOTE TODO XXX 45 46 " Conditionals 47 syn keyword falconConditional and case default else end if iff 48 syn keyword falconConditional elif or not switch select 49 syn match falconConditional "end\s\if" 50 51 " Loops 52 syn keyword falconRepeat break for loop forfirst forlast formiddle while 53 54 " Booleans 55 syn keyword falconBool true false 56 57 " Constants 58 syn keyword falconConst PI E nil 59 syn match falconConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!" 60 61 " Comments 62 syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)" 63 syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo 64 syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo 65 syn match falconSharpBang "\%^#!.*" display 66 syn sync ccomment falconComment 67 68 " Numbers 69 syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 70 syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 71 syn match falconHexadecimal contained "\<0x\x\+\>" 72 syn match falconOctal contained "\<0\o\+\>" 73 syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>" 74 syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*" 75 syn match falconFloatLiteral contained "[+-]\=\d*\.\d*" 76 77 " Includes 78 syn keyword falconInclude load import 79 80 " Expression Substitution and Backslash Notation 81 syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display 82 syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display 83 syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 84 85 " Normal String and Shell Command Output 86 syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 87 syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold 88 syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold 89 90 " Generalized Single Quoted String, Symbol and Array of Strings 91 syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 92 syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 93 syn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape 94 syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape 95 syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape 96 syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 97 syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 98 syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape 99 syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape 100 syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape 101 102 " Generalized Double Quoted String and Array of Strings and Shell Command Output 103 syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 104 syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 105 syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold 106 syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold 107 syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold 108 syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold 109 110 syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 111 syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 112 syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend 113 syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 114 115 syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 116 syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 117 syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend 118 syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 119 120 " Falcon rainbox to highlight parens in varying colors 121 if exists("g:falcon_rainbow") && g:falcon_rainbow != 0 122 syn region falconParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen1 123 syn region falconParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen2 124 syn region falconParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen3 125 syn region falconParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen4 126 syn region falconParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen5 127 syn region falconParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen6 128 syn region falconParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen7 129 syn region falconParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen8 130 syn region falconParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen9 131 syn region falconParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen0 132 endif 133 134 " Setup the colors for the rainbox 135 if exists("g:falcon_rainbow") && g:falcon_rainbow != 0 136 if &bg == "dark" 137 hi def hlLevel0 ctermfg=red guifg=red1 138 hi def hlLevel1 ctermfg=yellow guifg=orange1 139 hi def hlLevel2 ctermfg=green guifg=yellow1 140 hi def hlLevel3 ctermfg=cyan guifg=greenyellow 141 hi def hlLevel4 ctermfg=magenta guifg=green1 142 hi def hlLevel5 ctermfg=red guifg=springgreen1 143 hi def hlLevel6 ctermfg=yellow guifg=cyan1 144 hi def hlLevel7 ctermfg=green guifg=slateblue1 145 hi def hlLevel8 ctermfg=cyan guifg=magenta1 146 hi def hlLevel9 ctermfg=magenta guifg=purple1 147 else 148 hi def hlLevel0 ctermfg=red guifg=red3 149 hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 150 hi def hlLevel2 ctermfg=darkgreen guifg=orange2 151 hi def hlLevel3 ctermfg=blue guifg=yellow3 152 hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 153 hi def hlLevel5 ctermfg=red guifg=green4 154 hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 155 hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 156 hi def hlLevel8 ctermfg=blue guifg=darkslateblue 157 hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet 158 endif 159 endif 160 161 " Syntax Synchronizing 162 syn sync minlines=10 maxlines=100 163 164 " Define the default highlighting 165 if !exists("did_falcon_syn_inits") 166 167 hi def link falconKeyword Keyword 168 hi def link falconCommentString String 169 hi def link falconTodo Todo 170 hi def link falconConditional Keyword 171 hi def link falconRepeat Repeat 172 hi def link falconcommentSkip Comment 173 hi def link falconComment Comment 174 hi def link falconCommentL Comment 175 hi def link falconConst Constant 176 hi def link falconConstants Constant 177 hi def link falconOperator Operator 178 hi def link falconSymbol Normal 179 hi def link falconSpaceError Error 180 hi def link falconHexadecimal Number 181 hi def link falconOctal Number 182 hi def link falconIntLiteral Number 183 hi def link falconFloatLiteral Float 184 hi def link falconStringEscape Special 185 hi def link falconStringDelimiter Delimiter 186 hi def link falconString String 187 hi def link falconBool Constant 188 hi def link falconSharpBang PreProc 189 hi def link falconInclude Include 190 hi def link falconSymbol Constant 191 hi def link falconSymbolOther Delimiter 192 endif 193 194 let b:current_syntax = "falcon" 195 196 " vim: set sw=4 sts=4 et tw=80 :