| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " 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 | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " quit when a syntax file was already loaded | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Rebol is case insensitive | 
					
						
							|  |  |  | syn case ignore | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " As per current users documentation | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | setlocal isk=@,48-57,?,!,.,',+,-,*,&,\|,=,_,~ | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " 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. | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " Only when an item doesn't have highlighting yet | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 |