1" Vim syntax file 2" Language: Falcon 3" Maintainer: Steven Oliver <[email protected]> 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" ------------------------------------------------------------------------------- 7" GetLatestVimScripts: 2745 1 :AutoInstall: falcon.vim 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 59 60" Comments 61syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)" 62syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo 63syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo 64syn match falconSharpBang "\%^#!.*" display 65syn sync ccomment falconComment 66 67" Numbers 68syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 69syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal 70syn match falconHexadecimal contained "\<0x\x\+\>" 71syn match falconOctal contained "\<0\o\+\>" 72syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>" 73syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*" 74syn match falconFloatLiteral contained "[+-]\=\d*\.\d*" 75 76" Includes 77syn keyword falconInclude load import 78 79" Expression Substitution and Backslash Notation 80syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display 81syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display 82syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 83 84" Normal String and Shell Command Output 85syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold 86syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold 87syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold 88 89" Generalized Single Quoted String, Symbol and Array of Strings 90syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 91syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 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 falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold 96syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape 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 100 101" Generalized Double Quoted String and Array of Strings and Shell Command Output 102syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 103syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold 104syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape 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 108 109syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 110syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\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$+ fold keepend 112syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend 113 114syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 115syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\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$+ fold keepend 117syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend 118 119" Syntax Synchronizing 120syn sync minlines=10 maxlines=100 121 122" Define the default highlighting 123if !exists("did_falcon_syn_inits") 124 command -nargs=+ HiLink hi def link <args> 125 126 HiLink falconKeyword Keyword 127 HiLink falconCommentString String 128 HiLink falconTodo Todo 129 HiLink falconConditional Keyword 130 HiLink falconRepeat Repeat 131 HiLink falconcommentSkip Comment 132 HiLink falconComment Comment 133 HiLink falconCommentL Comment 134 HiLink falconConst Constant 135 HiLink falconOperator Operator 136 HiLink falconSymbol Normal 137 HiLink falconSpaceError Error 138 HiLink falconHexadecimal Number 139 HiLink falconOctal Number 140 HiLink falconIntLiteral Number 141 HiLink falconFloatLiteral Float 142 HiLink falconStringEscape Special 143 HiLink falconStringDelimiter Delimiter 144 HiLink falconString String 145 HiLink falconBool Constant 146 HiLink falconSharpBang PreProc 147 HiLink falconInclude Include 148 HiLink falconSymbol Constant 149 HiLink falconSymbolOther Delimiter 150 delcommand HiLink 151endif 152 153let b:current_syntax = "falcon" 154 155" vim: set sw=4 sts=4 et tw=80 : 156