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. 10if 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 18endif 19 20" Symbols 21syn match falconSymbol "\(;\|,\|\.\)" 22syn match falconSymbolOther "\(#\|@\)" display 23 24" Operators 25syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)" 26syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)" 27 28" Clusters 29syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold 30syn case match 31 32" Keywords 33syn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const 34syn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function 35syn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list 36syn keyword falconKeyword load notin object pass print printl provides raise return self sender static to 37syn keyword falconKeyword try xamp 38 39" Error Type Keywords 40syn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError 41syn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError 42 43" Todo 44syn keyword falconTodo DEBUG FIXME NOTE TODO XXX 45 46" Conditionals 47syn keyword falconConditional and case default else end if iff 48syn keyword falconConditional elif or not switch select 49syn match falconConditional "end\s\if" 50 51" Loops 52syn keyword falconRepeat break for loop forfirst forlast formiddle while 53 54" Booleans 55syn keyword falconBool true false 56 57" Constants 58syn keyword falconConst PI E nil 59syn match falconConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!" 60 61" Comments 62syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)" 63syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo 64syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo 65syn match falconSharpBang "\%^#!.*" display 66syn sync ccomment falconComment 67 68" Numbers 69syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 70syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 71syn match falconHexadecimal contained "\<0x\x\+\>" 72syn match falconOctal contained "\<0\o\+\>" 73syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>" 74syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*" 75syn match falconFloatLiteral contained "[+-]\=\d*\.\d*" 76 77" Includes 78syn keyword falconInclude load import 79 80" Expression Substitution and Backslash Notation 81syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display 82syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display 83syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 84 85" Normal String and Shell Command Output 86syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 87syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold 88syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold 89 90" Generalized Single Quoted String, Symbol and Array of Strings 91syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 92syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 93syn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape 94syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape 95syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape 96syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 97syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 98syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape 99syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape 100syn 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 103syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 104syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 105syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold 106syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold 107syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold 108syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold 109 110syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 111syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 112syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend 113syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 114 115syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 116syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 117syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend 118syn 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 121if 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 132endif 133 134" Setup the colors for the rainbox 135if 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 159endif 160 161" Syntax Synchronizing 162syn sync minlines=10 maxlines=100 163 164" Define the default highlighting 165if !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 192endif 193 194let b:current_syntax = "falcon" 195 196" vim: set sw=4 sts=4 et tw=80 : 197 198