1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Rebol 3071d4279SBram Moolenaar" Maintainer: Mike Williams <[email protected]> 4071d4279SBram Moolenaar" Filenames: *.r 5071d4279SBram Moolenaar" Last Change: 27th June 2002 6071d4279SBram Moolenaar" URL: http://www.eandem.co.uk/mrw/vim 7071d4279SBram Moolenaar" 8071d4279SBram Moolenaar 989bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1089bcfda6SBram Moolenaarif exists("b:current_syntax") 11071d4279SBram Moolenaar finish 12071d4279SBram Moolenaarendif 13071d4279SBram Moolenaar 14071d4279SBram Moolenaar" Rebol is case insensitive 15071d4279SBram Moolenaarsyn case ignore 16071d4279SBram Moolenaar 17071d4279SBram Moolenaar" As per current users documentation 18071d4279SBram Moolenaarsetlocal isk=@,48-57,?,!,.,',+,-,*,&,\|,=,_,~ 19071d4279SBram Moolenaar 20071d4279SBram Moolenaar" Yer TODO highlighter 21071d4279SBram Moolenaarsyn keyword rebolTodo contained TODO 22071d4279SBram Moolenaar 23071d4279SBram Moolenaar" Comments 24071d4279SBram Moolenaarsyn match rebolComment ";.*$" contains=rebolTodo 25071d4279SBram Moolenaar 26071d4279SBram Moolenaar" Words 27071d4279SBram Moolenaarsyn match rebolWord "\a\k*" 28071d4279SBram Moolenaarsyn match rebolWordPath "[^[:space:]]/[^[:space]]"ms=s+1,me=e-1 29071d4279SBram Moolenaar 30071d4279SBram Moolenaar" Booleans 31071d4279SBram Moolenaarsyn keyword rebolBoolean true false on off yes no 32071d4279SBram Moolenaar 33071d4279SBram Moolenaar" Values 34071d4279SBram Moolenaar" Integers 35071d4279SBram Moolenaarsyn match rebolInteger "\<[+-]\=\d\+\('\d*\)*\>" 36071d4279SBram Moolenaar" Decimals 37071d4279SBram Moolenaarsyn match rebolDecimal "[+-]\=\(\d\+\('\d*\)*\)\=[,.]\d*\(e[+-]\=\d\+\)\=" 38071d4279SBram Moolenaarsyn match rebolDecimal "[+-]\=\d\+\('\d*\)*\(e[+-]\=\d\+\)\=" 39071d4279SBram Moolenaar" Time 40071d4279SBram Moolenaarsyn match rebolTime "[+-]\=\(\d\+\('\d*\)*\:\)\{1,2}\d\+\('\d*\)*\([.,]\d\+\)\=\([AP]M\)\=\>" 41071d4279SBram Moolenaarsyn match rebolTime "[+-]\=:\d\+\([.,]\d*\)\=\([AP]M\)\=\>" 42071d4279SBram Moolenaar" Dates 43071d4279SBram Moolenaar" DD-MMM-YY & YYYY format 44071d4279SBram Moolenaarsyn match rebolDate "\d\{1,2}\([/-]\)\(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\1\(\d\{2}\)\{1,2}\>" 45071d4279SBram Moolenaar" DD-month-YY & YYYY format 46071d4279SBram Moolenaarsyn match rebolDate "\d\{1,2}\([/-]\)\(January\|February\|March\|April\|May\|June\|July\|August\|September\|October\|November\|December\)\1\(\d\{2}\)\{1,2}\>" 47071d4279SBram Moolenaar" DD-MM-YY & YY format 48071d4279SBram Moolenaarsyn match rebolDate "\d\{1,2}\([/-]\)\d\{1,2}\1\(\d\{2}\)\{1,2}\>" 49071d4279SBram Moolenaar" YYYY-MM-YY format 50071d4279SBram Moolenaarsyn match rebolDate "\d\{4}-\d\{1,2}-\d\{1,2}\>" 51071d4279SBram Moolenaar" DD.MM.YYYY format 52071d4279SBram Moolenaarsyn match rebolDate "\d\{1,2}\.\d\{1,2}\.\d\{4}\>" 53071d4279SBram Moolenaar" Money 54071d4279SBram Moolenaarsyn match rebolMoney "\a*\$\d\+\('\d*\)*\([,.]\d\+\)\=" 55071d4279SBram Moolenaar" Strings 56071d4279SBram Moolenaarsyn region rebolString oneline start=+"+ skip=+^"+ end=+"+ contains=rebolSpecialCharacter 57071d4279SBram Moolenaarsyn region rebolString start=+[^#]{+ end=+}+ skip=+{[^}]*}+ contains=rebolSpecialCharacter 58071d4279SBram Moolenaar" Binary 59071d4279SBram Moolenaarsyn region rebolBinary start=+\d*#{+ end=+}+ contains=rebolComment 60071d4279SBram Moolenaar" Email 61071d4279SBram Moolenaarsyn match rebolEmail "\<\k\+@\(\k\+\.\)*\k\+\>" 62071d4279SBram Moolenaar" File 63071d4279SBram Moolenaarsyn match rebolFile "%\(\k\+/\)*\k\+[/]\=" contains=rebolSpecialCharacter 64071d4279SBram Moolenaarsyn region rebolFile oneline start=+%"+ end=+"+ contains=rebolSpecialCharacter 65071d4279SBram Moolenaar" URLs 66071d4279SBram Moolenaarsyn match rebolURL "http://\k\+\(\.\k\+\)*\(:\d\+\)\=\(/\(\k\+/\)*\(\k\+\)\=\)*" 67071d4279SBram Moolenaarsyn match rebolURL "file://\k\+\(\.\k\+\)*/\(\k\+/\)*\k\+" 68071d4279SBram Moolenaarsyn match rebolURL "ftp://\(\k\+:\k\+@\)\=\k\+\(\.\k\+\)*\(:\d\+\)\=/\(\k\+/\)*\k\+" 69071d4279SBram Moolenaarsyn match rebolURL "mailto:\k\+\(\.\k\+\)*@\k\+\(\.\k\+\)*" 70071d4279SBram Moolenaar" Issues 71071d4279SBram Moolenaarsyn match rebolIssue "#\(\d\+-\)*\d\+" 72071d4279SBram Moolenaar" Tuples 73071d4279SBram Moolenaarsyn match rebolTuple "\(\d\+\.\)\{2,}" 74071d4279SBram Moolenaar 75071d4279SBram Moolenaar" Characters 76071d4279SBram Moolenaarsyn match rebolSpecialCharacter contained "\^[^[:space:][]" 77071d4279SBram Moolenaarsyn match rebolSpecialCharacter contained "%\d\+" 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar 80071d4279SBram Moolenaar" Operators 81071d4279SBram Moolenaar" Math operators 82071d4279SBram Moolenaarsyn match rebolMathOperator "\(\*\{1,2}\|+\|-\|/\{1,2}\)" 83071d4279SBram Moolenaarsyn keyword rebolMathFunction abs absolute add arccosine arcsine arctangent cosine 84071d4279SBram Moolenaarsyn keyword rebolMathFunction divide exp log-10 log-2 log-e max maximum min 85071d4279SBram Moolenaarsyn keyword rebolMathFunction minimum multiply negate power random remainder sine 86071d4279SBram Moolenaarsyn keyword rebolMathFunction square-root subtract tangent 87071d4279SBram Moolenaar" Binary operators 88071d4279SBram Moolenaarsyn keyword rebolBinaryOperator complement and or xor ~ 89071d4279SBram Moolenaar" Logic operators 90071d4279SBram Moolenaarsyn match rebolLogicOperator "[<>=]=\=" 91071d4279SBram Moolenaarsyn match rebolLogicOperator "<>" 92071d4279SBram Moolenaarsyn keyword rebolLogicOperator not 93071d4279SBram Moolenaarsyn keyword rebolLogicFunction all any 94071d4279SBram Moolenaarsyn keyword rebolLogicFunction head? tail? 95071d4279SBram Moolenaarsyn keyword rebolLogicFunction negative? positive? zero? even? odd? 96071d4279SBram Moolenaarsyn keyword rebolLogicFunction binary? block? char? date? decimal? email? empty? 97071d4279SBram Moolenaarsyn keyword rebolLogicFunction file? found? function? integer? issue? logic? money? 98071d4279SBram Moolenaarsyn keyword rebolLogicFunction native? none? object? paren? path? port? series? 99071d4279SBram Moolenaarsyn keyword rebolLogicFunction string? time? tuple? url? word? 100071d4279SBram Moolenaarsyn keyword rebolLogicFunction exists? input? same? value? 101071d4279SBram Moolenaar 102071d4279SBram Moolenaar" Datatypes 103071d4279SBram Moolenaarsyn keyword rebolType binary! block! char! date! decimal! email! file! 104071d4279SBram Moolenaarsyn keyword rebolType function! integer! issue! logic! money! native! 105071d4279SBram Moolenaarsyn keyword rebolType none! object! paren! path! port! string! time! 106071d4279SBram Moolenaarsyn keyword rebolType tuple! url! word! 107071d4279SBram Moolenaarsyn keyword rebolTypeFunction type? 108071d4279SBram Moolenaar 109071d4279SBram Moolenaar" Control statements 110071d4279SBram Moolenaarsyn keyword rebolStatement break catch exit halt reduce return shield 111071d4279SBram Moolenaarsyn keyword rebolConditional if else 112071d4279SBram Moolenaarsyn keyword rebolRepeat for forall foreach forskip loop repeat while until do 113071d4279SBram Moolenaar 114071d4279SBram Moolenaar" Series statements 115071d4279SBram Moolenaarsyn keyword rebolStatement change clear copy fifth find first format fourth free 116071d4279SBram Moolenaarsyn keyword rebolStatement func function head insert last match next parse past 117071d4279SBram Moolenaarsyn keyword rebolStatement pick remove second select skip sort tail third trim length? 118071d4279SBram Moolenaar 119071d4279SBram Moolenaar" Context 120071d4279SBram Moolenaarsyn keyword rebolStatement alias bind use 121071d4279SBram Moolenaar 122071d4279SBram Moolenaar" Object 123071d4279SBram Moolenaarsyn keyword rebolStatement import make make-object rebol info? 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar" I/O statements 126071d4279SBram Moolenaarsyn keyword rebolStatement delete echo form format import input load mold prin 127071d4279SBram Moolenaarsyn keyword rebolStatement print probe read save secure send write 128071d4279SBram Moolenaarsyn keyword rebolOperator size? modified? 129071d4279SBram Moolenaar 130071d4279SBram Moolenaar" Debug statement 131071d4279SBram Moolenaarsyn keyword rebolStatement help probe trace 132071d4279SBram Moolenaar 133071d4279SBram Moolenaar" Misc statements 134071d4279SBram Moolenaarsyn keyword rebolStatement func function free 135071d4279SBram Moolenaar 136071d4279SBram Moolenaar" Constants 137071d4279SBram Moolenaarsyn keyword rebolConstant none 138071d4279SBram Moolenaar 139071d4279SBram Moolenaar 140071d4279SBram Moolenaar" Define the default highlighting. 14189bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 142071d4279SBram Moolenaar 143*f37506f6SBram Moolenaarhi def link rebolTodo Todo 144071d4279SBram Moolenaar 145*f37506f6SBram Moolenaarhi def link rebolStatement Statement 146*f37506f6SBram Moolenaarhi def link rebolLabel Label 147*f37506f6SBram Moolenaarhi def link rebolConditional Conditional 148*f37506f6SBram Moolenaarhi def link rebolRepeat Repeat 149071d4279SBram Moolenaar 150*f37506f6SBram Moolenaarhi def link rebolOperator Operator 151*f37506f6SBram Moolenaarhi def link rebolLogicOperator rebolOperator 152*f37506f6SBram Moolenaarhi def link rebolLogicFunction rebolLogicOperator 153*f37506f6SBram Moolenaarhi def link rebolMathOperator rebolOperator 154*f37506f6SBram Moolenaarhi def link rebolMathFunction rebolMathOperator 155*f37506f6SBram Moolenaarhi def link rebolBinaryOperator rebolOperator 156*f37506f6SBram Moolenaarhi def link rebolBinaryFunction rebolBinaryOperator 157071d4279SBram Moolenaar 158*f37506f6SBram Moolenaarhi def link rebolType Type 159*f37506f6SBram Moolenaarhi def link rebolTypeFunction rebolOperator 160071d4279SBram Moolenaar 161*f37506f6SBram Moolenaarhi def link rebolWord Identifier 162*f37506f6SBram Moolenaarhi def link rebolWordPath rebolWord 163*f37506f6SBram Moolenaarhi def link rebolFunction Function 164071d4279SBram Moolenaar 165*f37506f6SBram Moolenaarhi def link rebolCharacter Character 166*f37506f6SBram Moolenaarhi def link rebolSpecialCharacter SpecialChar 167*f37506f6SBram Moolenaarhi def link rebolString String 168071d4279SBram Moolenaar 169*f37506f6SBram Moolenaarhi def link rebolNumber Number 170*f37506f6SBram Moolenaarhi def link rebolInteger rebolNumber 171*f37506f6SBram Moolenaarhi def link rebolDecimal rebolNumber 172*f37506f6SBram Moolenaarhi def link rebolTime rebolNumber 173*f37506f6SBram Moolenaarhi def link rebolDate rebolNumber 174*f37506f6SBram Moolenaarhi def link rebolMoney rebolNumber 175*f37506f6SBram Moolenaarhi def link rebolBinary rebolNumber 176*f37506f6SBram Moolenaarhi def link rebolEmail rebolString 177*f37506f6SBram Moolenaarhi def link rebolFile rebolString 178*f37506f6SBram Moolenaarhi def link rebolURL rebolString 179*f37506f6SBram Moolenaarhi def link rebolIssue rebolNumber 180*f37506f6SBram Moolenaarhi def link rebolTuple rebolNumber 181*f37506f6SBram Moolenaarhi def link rebolFloat Float 182*f37506f6SBram Moolenaarhi def link rebolBoolean Boolean 183071d4279SBram Moolenaar 184*f37506f6SBram Moolenaarhi def link rebolConstant Constant 185071d4279SBram Moolenaar 186*f37506f6SBram Moolenaarhi def link rebolComment Comment 187071d4279SBram Moolenaar 188*f37506f6SBram Moolenaarhi def link rebolError Error 189071d4279SBram Moolenaar 190071d4279SBram Moolenaar 191071d4279SBram Moolenaarif exists("my_rebol_file") 192071d4279SBram Moolenaar if file_readable(expand(my_rebol_file)) 193071d4279SBram Moolenaar execute "source " . my_rebol_file 194071d4279SBram Moolenaar endif 195071d4279SBram Moolenaarendif 196071d4279SBram Moolenaar 197071d4279SBram Moolenaarlet b:current_syntax = "rebol" 198071d4279SBram Moolenaar 199071d4279SBram Moolenaar" vim: ts=8 200