123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- " Vim syntax file
- " Language: Rebol
- " Maintainer: Mike Williams <mrw@eandem.co.uk>
- " Filenames: *.r
- " Last Change: 27th June 2002
- " URL: http://www.eandem.co.uk/mrw/vim
- "
- " quit when a syntax file was already loaded
- if exists("b:current_syntax")
- finish
- endif
- " Rebol is case insensitive
- syn case ignore
- " As per current users documentation
- setlocal isk=@,48-57,?,!,.,',+,-,*,&,\|,=,_,~
- " Yer TODO highlighter
- syn keyword rebolTodo contained TODO
- " Comments
- syn match rebolComment ";.*$" contains=rebolTodo
- " Words
- syn match rebolWord "\a\k*"
- syn match rebolWordPath "[^[:space:]]/[^[:space]]"ms=s+1,me=e-1
- " Booleans
- syn keyword rebolBoolean true false on off yes no
- " Values
- " Integers
- syn match rebolInteger "\<[+-]\=\d\+\('\d*\)*\>"
- " Decimals
- syn match rebolDecimal "[+-]\=\(\d\+\('\d*\)*\)\=[,.]\d*\(e[+-]\=\d\+\)\="
- syn match rebolDecimal "[+-]\=\d\+\('\d*\)*\(e[+-]\=\d\+\)\="
- " Time
- syn match rebolTime "[+-]\=\(\d\+\('\d*\)*\:\)\{1,2}\d\+\('\d*\)*\([.,]\d\+\)\=\([AP]M\)\=\>"
- syn match rebolTime "[+-]\=:\d\+\([.,]\d*\)\=\([AP]M\)\=\>"
- " Dates
- " DD-MMM-YY & YYYY format
- syn match rebolDate "\d\{1,2}\([/-]\)\(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\1\(\d\{2}\)\{1,2}\>"
- " DD-month-YY & YYYY format
- syn match rebolDate "\d\{1,2}\([/-]\)\(January\|February\|March\|April\|May\|June\|July\|August\|September\|October\|November\|December\)\1\(\d\{2}\)\{1,2}\>"
- " DD-MM-YY & YY format
- syn match rebolDate "\d\{1,2}\([/-]\)\d\{1,2}\1\(\d\{2}\)\{1,2}\>"
- " YYYY-MM-YY format
- syn match rebolDate "\d\{4}-\d\{1,2}-\d\{1,2}\>"
- " DD.MM.YYYY format
- syn match rebolDate "\d\{1,2}\.\d\{1,2}\.\d\{4}\>"
- " Money
- syn match rebolMoney "\a*\$\d\+\('\d*\)*\([,.]\d\+\)\="
- " Strings
- syn region rebolString oneline start=+"+ skip=+^"+ end=+"+ contains=rebolSpecialCharacter
- syn region rebolString start=+[^#]{+ end=+}+ skip=+{[^}]*}+ contains=rebolSpecialCharacter
- " Binary
- syn region rebolBinary start=+\d*#{+ end=+}+ contains=rebolComment
- " Email
- syn match rebolEmail "\<\k\+@\(\k\+\.\)*\k\+\>"
- " File
- syn match rebolFile "%\(\k\+/\)*\k\+[/]\=" contains=rebolSpecialCharacter
- syn region rebolFile oneline start=+%"+ end=+"+ contains=rebolSpecialCharacter
- " URLs
- syn match rebolURL "http://\k\+\(\.\k\+\)*\(:\d\+\)\=\(/\(\k\+/\)*\(\k\+\)\=\)*"
- syn match rebolURL "file://\k\+\(\.\k\+\)*/\(\k\+/\)*\k\+"
- syn match rebolURL "ftp://\(\k\+:\k\+@\)\=\k\+\(\.\k\+\)*\(:\d\+\)\=/\(\k\+/\)*\k\+"
- syn match rebolURL "mailto:\k\+\(\.\k\+\)*@\k\+\(\.\k\+\)*"
- " Issues
- syn match rebolIssue "#\(\d\+-\)*\d\+"
- " Tuples
- syn match rebolTuple "\(\d\+\.\)\{2,}"
- " Characters
- syn match rebolSpecialCharacter contained "\^[^[:space:][]"
- syn match rebolSpecialCharacter contained "%\d\+"
- " Operators
- " Math operators
- syn match rebolMathOperator "\(\*\{1,2}\|+\|-\|/\{1,2}\)"
- syn keyword rebolMathFunction abs absolute add arccosine arcsine arctangent cosine
- syn keyword rebolMathFunction divide exp log-10 log-2 log-e max maximum min
- syn keyword rebolMathFunction minimum multiply negate power random remainder sine
- syn keyword rebolMathFunction square-root subtract tangent
- " Binary operators
- syn keyword rebolBinaryOperator complement and or xor ~
- " Logic operators
- syn match rebolLogicOperator "[<>=]=\="
- syn match rebolLogicOperator "<>"
- syn keyword rebolLogicOperator not
- syn keyword rebolLogicFunction all any
- syn keyword rebolLogicFunction head? tail?
- syn keyword rebolLogicFunction negative? positive? zero? even? odd?
- syn keyword rebolLogicFunction binary? block? char? date? decimal? email? empty?
- syn keyword rebolLogicFunction file? found? function? integer? issue? logic? money?
- syn keyword rebolLogicFunction native? none? object? paren? path? port? series?
- syn keyword rebolLogicFunction string? time? tuple? url? word?
- syn keyword rebolLogicFunction exists? input? same? value?
- " Datatypes
- syn keyword rebolType binary! block! char! date! decimal! email! file!
- syn keyword rebolType function! integer! issue! logic! money! native!
- syn keyword rebolType none! object! paren! path! port! string! time!
- syn keyword rebolType tuple! url! word!
- syn keyword rebolTypeFunction type?
- " Control statements
- syn keyword rebolStatement break catch exit halt reduce return shield
- syn keyword rebolConditional if else
- syn keyword rebolRepeat for forall foreach forskip loop repeat while until do
- " Series statements
- syn keyword rebolStatement change clear copy fifth find first format fourth free
- syn keyword rebolStatement func function head insert last match next parse past
- syn keyword rebolStatement pick remove second select skip sort tail third trim length?
- " Context
- syn keyword rebolStatement alias bind use
- " Object
- syn keyword rebolStatement import make make-object rebol info?
- " I/O statements
- syn keyword rebolStatement delete echo form format import input load mold prin
- syn keyword rebolStatement print probe read save secure send write
- syn keyword rebolOperator size? modified?
- " Debug statement
- syn keyword rebolStatement help probe trace
- " Misc statements
- syn keyword rebolStatement func function free
- " Constants
- syn keyword rebolConstant none
- " Define the default highlighting.
- " Only when an item doesn't have highlighting yet
- hi def link rebolTodo Todo
- hi def link rebolStatement Statement
- hi def link rebolLabel Label
- hi def link rebolConditional Conditional
- hi def link rebolRepeat Repeat
- hi def link rebolOperator Operator
- hi def link rebolLogicOperator rebolOperator
- hi def link rebolLogicFunction rebolLogicOperator
- hi def link rebolMathOperator rebolOperator
- hi def link rebolMathFunction rebolMathOperator
- hi def link rebolBinaryOperator rebolOperator
- hi def link rebolBinaryFunction rebolBinaryOperator
- hi def link rebolType Type
- hi def link rebolTypeFunction rebolOperator
- hi def link rebolWord Identifier
- hi def link rebolWordPath rebolWord
- hi def link rebolFunction Function
- hi def link rebolCharacter Character
- hi def link rebolSpecialCharacter SpecialChar
- hi def link rebolString String
- hi def link rebolNumber Number
- hi def link rebolInteger rebolNumber
- hi def link rebolDecimal rebolNumber
- hi def link rebolTime rebolNumber
- hi def link rebolDate rebolNumber
- hi def link rebolMoney rebolNumber
- hi def link rebolBinary rebolNumber
- hi def link rebolEmail rebolString
- hi def link rebolFile rebolString
- hi def link rebolURL rebolString
- hi def link rebolIssue rebolNumber
- hi def link rebolTuple rebolNumber
- hi def link rebolFloat Float
- hi def link rebolBoolean Boolean
- hi def link rebolConstant Constant
- hi def link rebolComment Comment
- hi def link rebolError Error
- if exists("my_rebol_file")
- if file_readable(expand(my_rebol_file))
- execute "source " . my_rebol_file
- endif
- endif
- let b:current_syntax = "rebol"
- " vim: ts=8
|