blob: 9c367b01b7024d1b5624a906aa4516e765e903c1 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Rebol
3" Maintainer: Mike Williams <mrw@eandem.co.uk>
4" Filenames: *.r
5" Last Change: 27th June 2002
6" URL: http://www.eandem.co.uk/mrw/vim
7"
8
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02009" quit when a syntax file was already loaded
10if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000011 finish
12endif
13
14" Rebol is case insensitive
15syn case ignore
16
17" As per current users documentation
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020018setlocal isk=@,48-57,?,!,.,',+,-,*,&,\|,=,_,~
Bram Moolenaar071d4272004-06-13 20:20:40 +000019
20" Yer TODO highlighter
21syn keyword rebolTodo contained TODO
22
23" Comments
24syn match rebolComment ";.*$" contains=rebolTodo
25
26" Words
27syn match rebolWord "\a\k*"
28syn match rebolWordPath "[^[:space:]]/[^[:space]]"ms=s+1,me=e-1
29
30" Booleans
31syn keyword rebolBoolean true false on off yes no
32
33" Values
34" Integers
35syn match rebolInteger "\<[+-]\=\d\+\('\d*\)*\>"
36" Decimals
37syn match rebolDecimal "[+-]\=\(\d\+\('\d*\)*\)\=[,.]\d*\(e[+-]\=\d\+\)\="
38syn match rebolDecimal "[+-]\=\d\+\('\d*\)*\(e[+-]\=\d\+\)\="
39" Time
40syn match rebolTime "[+-]\=\(\d\+\('\d*\)*\:\)\{1,2}\d\+\('\d*\)*\([.,]\d\+\)\=\([AP]M\)\=\>"
41syn match rebolTime "[+-]\=:\d\+\([.,]\d*\)\=\([AP]M\)\=\>"
42" Dates
43" DD-MMM-YY & YYYY format
44syn match rebolDate "\d\{1,2}\([/-]\)\(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\1\(\d\{2}\)\{1,2}\>"
45" DD-month-YY & YYYY format
46syn match rebolDate "\d\{1,2}\([/-]\)\(January\|February\|March\|April\|May\|June\|July\|August\|September\|October\|November\|December\)\1\(\d\{2}\)\{1,2}\>"
47" DD-MM-YY & YY format
48syn match rebolDate "\d\{1,2}\([/-]\)\d\{1,2}\1\(\d\{2}\)\{1,2}\>"
49" YYYY-MM-YY format
50syn match rebolDate "\d\{4}-\d\{1,2}-\d\{1,2}\>"
51" DD.MM.YYYY format
52syn match rebolDate "\d\{1,2}\.\d\{1,2}\.\d\{4}\>"
53" Money
54syn match rebolMoney "\a*\$\d\+\('\d*\)*\([,.]\d\+\)\="
55" Strings
56syn region rebolString oneline start=+"+ skip=+^"+ end=+"+ contains=rebolSpecialCharacter
57syn region rebolString start=+[^#]{+ end=+}+ skip=+{[^}]*}+ contains=rebolSpecialCharacter
58" Binary
59syn region rebolBinary start=+\d*#{+ end=+}+ contains=rebolComment
60" Email
61syn match rebolEmail "\<\k\+@\(\k\+\.\)*\k\+\>"
62" File
63syn match rebolFile "%\(\k\+/\)*\k\+[/]\=" contains=rebolSpecialCharacter
64syn region rebolFile oneline start=+%"+ end=+"+ contains=rebolSpecialCharacter
65" URLs
66syn match rebolURL "http://\k\+\(\.\k\+\)*\(:\d\+\)\=\(/\(\k\+/\)*\(\k\+\)\=\)*"
67syn match rebolURL "file://\k\+\(\.\k\+\)*/\(\k\+/\)*\k\+"
68syn match rebolURL "ftp://\(\k\+:\k\+@\)\=\k\+\(\.\k\+\)*\(:\d\+\)\=/\(\k\+/\)*\k\+"
69syn match rebolURL "mailto:\k\+\(\.\k\+\)*@\k\+\(\.\k\+\)*"
70" Issues
71syn match rebolIssue "#\(\d\+-\)*\d\+"
72" Tuples
73syn match rebolTuple "\(\d\+\.\)\{2,}"
74
75" Characters
76syn match rebolSpecialCharacter contained "\^[^[:space:][]"
77syn match rebolSpecialCharacter contained "%\d\+"
78
79
80" Operators
81" Math operators
82syn match rebolMathOperator "\(\*\{1,2}\|+\|-\|/\{1,2}\)"
83syn keyword rebolMathFunction abs absolute add arccosine arcsine arctangent cosine
84syn keyword rebolMathFunction divide exp log-10 log-2 log-e max maximum min
85syn keyword rebolMathFunction minimum multiply negate power random remainder sine
86syn keyword rebolMathFunction square-root subtract tangent
87" Binary operators
88syn keyword rebolBinaryOperator complement and or xor ~
89" Logic operators
90syn match rebolLogicOperator "[<>=]=\="
91syn match rebolLogicOperator "<>"
92syn keyword rebolLogicOperator not
93syn keyword rebolLogicFunction all any
94syn keyword rebolLogicFunction head? tail?
95syn keyword rebolLogicFunction negative? positive? zero? even? odd?
96syn keyword rebolLogicFunction binary? block? char? date? decimal? email? empty?
97syn keyword rebolLogicFunction file? found? function? integer? issue? logic? money?
98syn keyword rebolLogicFunction native? none? object? paren? path? port? series?
99syn keyword rebolLogicFunction string? time? tuple? url? word?
100syn keyword rebolLogicFunction exists? input? same? value?
101
102" Datatypes
103syn keyword rebolType binary! block! char! date! decimal! email! file!
104syn keyword rebolType function! integer! issue! logic! money! native!
105syn keyword rebolType none! object! paren! path! port! string! time!
106syn keyword rebolType tuple! url! word!
107syn keyword rebolTypeFunction type?
108
109" Control statements
110syn keyword rebolStatement break catch exit halt reduce return shield
111syn keyword rebolConditional if else
112syn keyword rebolRepeat for forall foreach forskip loop repeat while until do
113
114" Series statements
115syn keyword rebolStatement change clear copy fifth find first format fourth free
116syn keyword rebolStatement func function head insert last match next parse past
117syn keyword rebolStatement pick remove second select skip sort tail third trim length?
118
119" Context
120syn keyword rebolStatement alias bind use
121
122" Object
123syn keyword rebolStatement import make make-object rebol info?
124
125" I/O statements
126syn keyword rebolStatement delete echo form format import input load mold prin
127syn keyword rebolStatement print probe read save secure send write
128syn keyword rebolOperator size? modified?
129
130" Debug statement
131syn keyword rebolStatement help probe trace
132
133" Misc statements
134syn keyword rebolStatement func function free
135
136" Constants
137syn keyword rebolConstant none
138
139
140" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200141" Only when an item doesn't have highlighting yet
142command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000143
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200144HiLink rebolTodo Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000145
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200146HiLink rebolStatement Statement
147HiLink rebolLabel Label
148HiLink rebolConditional Conditional
149HiLink rebolRepeat Repeat
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200151HiLink rebolOperator Operator
152HiLink rebolLogicOperator rebolOperator
153HiLink rebolLogicFunction rebolLogicOperator
154HiLink rebolMathOperator rebolOperator
155HiLink rebolMathFunction rebolMathOperator
156HiLink rebolBinaryOperator rebolOperator
157HiLink rebolBinaryFunction rebolBinaryOperator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200159HiLink rebolType Type
160HiLink rebolTypeFunction rebolOperator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000161
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200162HiLink rebolWord Identifier
163HiLink rebolWordPath rebolWord
164HiLink rebolFunction Function
Bram Moolenaar071d4272004-06-13 20:20:40 +0000165
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200166HiLink rebolCharacter Character
167HiLink rebolSpecialCharacter SpecialChar
168HiLink rebolString String
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200170HiLink rebolNumber Number
171HiLink rebolInteger rebolNumber
172HiLink rebolDecimal rebolNumber
173HiLink rebolTime rebolNumber
174HiLink rebolDate rebolNumber
175HiLink rebolMoney rebolNumber
176HiLink rebolBinary rebolNumber
177HiLink rebolEmail rebolString
178HiLink rebolFile rebolString
179HiLink rebolURL rebolString
180HiLink rebolIssue rebolNumber
181HiLink rebolTuple rebolNumber
182HiLink rebolFloat Float
183HiLink rebolBoolean Boolean
Bram Moolenaar071d4272004-06-13 20:20:40 +0000184
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200185HiLink rebolConstant Constant
Bram Moolenaar071d4272004-06-13 20:20:40 +0000186
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200187HiLink rebolComment Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000188
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200189HiLink rebolError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000190
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200191delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000192
193if exists("my_rebol_file")
194 if file_readable(expand(my_rebol_file))
195 execute "source " . my_rebol_file
196 endif
197endif
198
199let b:current_syntax = "rebol"
200
201" vim: ts=8