xref: /vim-8.2.3635/runtime/syntax/rebol.vim (revision f37506f6)
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