14a74803eSBram Moolenaar" Vim syntax file 24a74803eSBram Moolenaar" Language: Falcon 34a74803eSBram Moolenaar" Maintainer: Steven Oliver <[email protected]> 44a74803eSBram Moolenaar" Website: http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim 54a74803eSBram Moolenaar" Credits: Thanks the ruby.vim authors, I borrowed a lot! 6203d04d7SBram Moolenaar" Thanks to the lisp authors for the rainbow code! 74a74803eSBram Moolenaar" ------------------------------------------------------------------------------- 84a74803eSBram Moolenaar 94a74803eSBram Moolenaar" When wanted, highlight the trailing whitespace. 104a74803eSBram Moolenaarif exists("c_space_errors") 114a74803eSBram Moolenaar if !exists("c_no_trail_space_error") 124a74803eSBram Moolenaar syn match falconSpaceError "\s\+$" 134a74803eSBram Moolenaar endif 144a74803eSBram Moolenaar 154a74803eSBram Moolenaar if !exists("c_no_tab_space_error") 164a74803eSBram Moolenaar syn match falconSpaceError " \+\t"me=e-1 174a74803eSBram Moolenaar endif 184a74803eSBram Moolenaarendif 194a74803eSBram Moolenaar 204a74803eSBram Moolenaar" Symbols 214a74803eSBram Moolenaarsyn match falconSymbol "\(;\|,\|\.\)" 224a74803eSBram Moolenaarsyn match falconSymbolOther "\(#\|@\)" display 234a74803eSBram Moolenaar 244a74803eSBram Moolenaar" Operators 254a74803eSBram Moolenaarsyn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)" 264a74803eSBram Moolenaarsyn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)" 274a74803eSBram Moolenaar 284a74803eSBram Moolenaar" Clusters 294a74803eSBram Moolenaarsyn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold 304a74803eSBram Moolenaarsyn case match 314a74803eSBram Moolenaar 324a74803eSBram Moolenaar" Keywords 334a74803eSBram Moolenaarsyn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const 344a74803eSBram Moolenaarsyn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function 354a74803eSBram Moolenaarsyn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list 364a74803eSBram Moolenaarsyn keyword falconKeyword load notin object pass print printl provides raise return self sender static to 374a74803eSBram Moolenaarsyn keyword falconKeyword try xamp 384a74803eSBram Moolenaar 394a74803eSBram Moolenaar" Error Type Keywords 404a74803eSBram Moolenaarsyn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError 414a74803eSBram Moolenaarsyn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError 424a74803eSBram Moolenaar 434a74803eSBram Moolenaar" Todo 444a74803eSBram Moolenaarsyn keyword falconTodo DEBUG FIXME NOTE TODO XXX 454a74803eSBram Moolenaar 464a74803eSBram Moolenaar" Conditionals 474a74803eSBram Moolenaarsyn keyword falconConditional and case default else end if iff 484a74803eSBram Moolenaarsyn keyword falconConditional elif or not switch select 494a74803eSBram Moolenaarsyn match falconConditional "end\s\if" 504a74803eSBram Moolenaar 514a74803eSBram Moolenaar" Loops 524a74803eSBram Moolenaarsyn keyword falconRepeat break for loop forfirst forlast formiddle while 534a74803eSBram Moolenaar 544a74803eSBram Moolenaar" Booleans 554a74803eSBram Moolenaarsyn keyword falconBool true false 564a74803eSBram Moolenaar 574a74803eSBram Moolenaar" Constants 584a74803eSBram Moolenaarsyn keyword falconConst PI E nil 59203d04d7SBram Moolenaarsyn match falconConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!" 604a74803eSBram Moolenaar 614a74803eSBram Moolenaar" Comments 624a74803eSBram Moolenaarsyn match falconCommentSkip contained "^\s*\*\($\|\s\+\)" 634a74803eSBram Moolenaarsyn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo 644a74803eSBram Moolenaarsyn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo 654a74803eSBram Moolenaarsyn match falconSharpBang "\%^#!.*" display 664a74803eSBram Moolenaarsyn sync ccomment falconComment 674a74803eSBram Moolenaar 684a74803eSBram Moolenaar" Numbers 694a74803eSBram Moolenaarsyn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 704a74803eSBram Moolenaarsyn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 714a74803eSBram Moolenaarsyn match falconHexadecimal contained "\<0x\x\+\>" 724a74803eSBram Moolenaarsyn match falconOctal contained "\<0\o\+\>" 734a74803eSBram Moolenaarsyn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>" 744a74803eSBram Moolenaarsyn match falconFloatLiteral contained "[+-]\=\d\+\.\d*" 754a74803eSBram Moolenaarsyn match falconFloatLiteral contained "[+-]\=\d*\.\d*" 764a74803eSBram Moolenaar 774a74803eSBram Moolenaar" Includes 784a74803eSBram Moolenaarsyn keyword falconInclude load import 794a74803eSBram Moolenaar 804a74803eSBram Moolenaar" Expression Substitution and Backslash Notation 814a74803eSBram Moolenaarsyn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display 824a74803eSBram Moolenaarsyn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display 834a74803eSBram Moolenaarsyn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 844a74803eSBram Moolenaar 854a74803eSBram Moolenaar" Normal String and Shell Command Output 864a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 874a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold 884a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold 894a74803eSBram Moolenaar 904a74803eSBram Moolenaar" Generalized Single Quoted String, Symbol and Array of Strings 914a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 924a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 934a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape 944a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape 954a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape 964a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 974a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 984a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape 994a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape 1004a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape 1014a74803eSBram Moolenaar 1024a74803eSBram Moolenaar" Generalized Double Quoted String and Array of Strings and Shell Command Output 1034a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 1044a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 1054a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold 1064a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold 1074a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold 1084a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold 1094a74803eSBram Moolenaar 1104a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 1114a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 1124a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend 1134a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 1144a74803eSBram Moolenaar 1154a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 1164a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 1174a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend 1184a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 1194a74803eSBram Moolenaar 120203d04d7SBram Moolenaar" Falcon rainbox to highlight parens in varying colors 121203d04d7SBram Moolenaarif exists("g:falcon_rainbow") && g:falcon_rainbow != 0 122203d04d7SBram Moolenaar syn region falconParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen1 123203d04d7SBram Moolenaar syn region falconParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen2 124203d04d7SBram Moolenaar syn region falconParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen3 125203d04d7SBram Moolenaar syn region falconParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen4 126203d04d7SBram Moolenaar syn region falconParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen5 127203d04d7SBram Moolenaar syn region falconParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen6 128203d04d7SBram Moolenaar syn region falconParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen7 129203d04d7SBram Moolenaar syn region falconParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen8 130203d04d7SBram Moolenaar syn region falconParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen9 131203d04d7SBram Moolenaar syn region falconParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen0 132203d04d7SBram Moolenaarendif 133203d04d7SBram Moolenaar 134203d04d7SBram Moolenaar" Setup the colors for the rainbox 135203d04d7SBram Moolenaarif exists("g:falcon_rainbow") && g:falcon_rainbow != 0 136203d04d7SBram Moolenaar if &bg == "dark" 137203d04d7SBram Moolenaar hi def hlLevel0 ctermfg=red guifg=red1 138203d04d7SBram Moolenaar hi def hlLevel1 ctermfg=yellow guifg=orange1 139203d04d7SBram Moolenaar hi def hlLevel2 ctermfg=green guifg=yellow1 140203d04d7SBram Moolenaar hi def hlLevel3 ctermfg=cyan guifg=greenyellow 141203d04d7SBram Moolenaar hi def hlLevel4 ctermfg=magenta guifg=green1 142203d04d7SBram Moolenaar hi def hlLevel5 ctermfg=red guifg=springgreen1 143203d04d7SBram Moolenaar hi def hlLevel6 ctermfg=yellow guifg=cyan1 144203d04d7SBram Moolenaar hi def hlLevel7 ctermfg=green guifg=slateblue1 145203d04d7SBram Moolenaar hi def hlLevel8 ctermfg=cyan guifg=magenta1 146203d04d7SBram Moolenaar hi def hlLevel9 ctermfg=magenta guifg=purple1 147203d04d7SBram Moolenaar else 148203d04d7SBram Moolenaar hi def hlLevel0 ctermfg=red guifg=red3 149203d04d7SBram Moolenaar hi def hlLevel1 ctermfg=darkyellow guifg=orangered3 150203d04d7SBram Moolenaar hi def hlLevel2 ctermfg=darkgreen guifg=orange2 151203d04d7SBram Moolenaar hi def hlLevel3 ctermfg=blue guifg=yellow3 152203d04d7SBram Moolenaar hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4 153203d04d7SBram Moolenaar hi def hlLevel5 ctermfg=red guifg=green4 154203d04d7SBram Moolenaar hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3 155203d04d7SBram Moolenaar hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4 156203d04d7SBram Moolenaar hi def hlLevel8 ctermfg=blue guifg=darkslateblue 157203d04d7SBram Moolenaar hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet 158203d04d7SBram Moolenaar endif 159203d04d7SBram Moolenaarendif 160203d04d7SBram Moolenaar 1614a74803eSBram Moolenaar" Syntax Synchronizing 1624a74803eSBram Moolenaarsyn sync minlines=10 maxlines=100 1634a74803eSBram Moolenaar 1644a74803eSBram Moolenaar" Define the default highlighting 1654a74803eSBram Moolenaarif !exists("did_falcon_syn_inits") 1664a74803eSBram Moolenaar 167*f37506f6SBram Moolenaar hi def link falconKeyword Keyword 168*f37506f6SBram Moolenaar hi def link falconCommentString String 169*f37506f6SBram Moolenaar hi def link falconTodo Todo 170*f37506f6SBram Moolenaar hi def link falconConditional Keyword 171*f37506f6SBram Moolenaar hi def link falconRepeat Repeat 172*f37506f6SBram Moolenaar hi def link falconcommentSkip Comment 173*f37506f6SBram Moolenaar hi def link falconComment Comment 174*f37506f6SBram Moolenaar hi def link falconCommentL Comment 175*f37506f6SBram Moolenaar hi def link falconConst Constant 176*f37506f6SBram Moolenaar hi def link falconConstants Constant 177*f37506f6SBram Moolenaar hi def link falconOperator Operator 178*f37506f6SBram Moolenaar hi def link falconSymbol Normal 179*f37506f6SBram Moolenaar hi def link falconSpaceError Error 180*f37506f6SBram Moolenaar hi def link falconHexadecimal Number 181*f37506f6SBram Moolenaar hi def link falconOctal Number 182*f37506f6SBram Moolenaar hi def link falconIntLiteral Number 183*f37506f6SBram Moolenaar hi def link falconFloatLiteral Float 184*f37506f6SBram Moolenaar hi def link falconStringEscape Special 185*f37506f6SBram Moolenaar hi def link falconStringDelimiter Delimiter 186*f37506f6SBram Moolenaar hi def link falconString String 187*f37506f6SBram Moolenaar hi def link falconBool Constant 188*f37506f6SBram Moolenaar hi def link falconSharpBang PreProc 189*f37506f6SBram Moolenaar hi def link falconInclude Include 190*f37506f6SBram Moolenaar hi def link falconSymbol Constant 191*f37506f6SBram Moolenaar hi def link falconSymbolOther Delimiter 1924a74803eSBram Moolenaarendif 1934a74803eSBram Moolenaar 1944a74803eSBram Moolenaarlet b:current_syntax = "falcon" 1954a74803eSBram Moolenaar 1964a74803eSBram Moolenaar" vim: set sw=4 sts=4 et tw=80 : 197203d04d7SBram Moolenaar 198