blob: fcd64a7c9bef89dd2afaeb8937cfaa7702936e2c [file] [log] [blame]
Bram Moolenaar9b03d3e2022-08-30 20:26:34 +01001" Vim syntax file
2" Language: Racket
3" Maintainer: D. Ben Knoble <ben.knoble+github@gmail.com>
4" Previous Maintainer: Will Langstroth <will@langstroth.com>
5" URL: https://github.com/benknoble/vim-racket
6" Description: Contains all of the keywords in #lang racket
D. Ben Knoble5eb9cb52023-12-16 08:24:15 -05007" Last Change: 2023 Sep 22
Bram Moolenaar9b03d3e2022-08-30 20:26:34 +01008
9" Initializing:
10if exists("b:current_syntax")
11 finish
12endif
13
14" Highlight unmatched parens
15syntax match racketError ,[]})],
16
17if version < 800
18 set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
19else
20 " syntax iskeyword 33,35-39,42-58,60-90,94,95,97-122,126,_
21 " converted from decimal to char
22 " :s/\d\+/\=submatch(0)->str2nr()->nr2char()/g
23 " but corrected to remove duplicate _, move ^ to end
24 syntax iskeyword @,!,#-',*-:,<-Z,a-z,~,_,^
25 " expanded
26 " syntax iskeyword !,#,$,%,&,',*,+,,,-,.,/,0-9,:,<,=,>,?,@,A-Z,_,a-z,~,^
27endif
28
29" Forms in order of appearance at
30" http://docs.racket-lang.org/reference/index.html
31"
32syntax keyword racketSyntax module module* module+ require provide quote
33syntax keyword racketSyntax #%datum #%expression #%top #%variable-reference #%app
34syntax keyword racketSyntax lambda case-lambda let let* letrec
35syntax keyword racketSyntax let-values let*-values let-syntax letrec-syntax
36syntax keyword racketSyntax let-syntaxes letrec-syntaxes letrec-syntaxes+values
37syntax keyword racketSyntax local shared
38syntax keyword racketSyntax if cond and or case define else =>
39syntax keyword racketSyntax define define-values define-syntax define-syntaxes
40syntax keyword racketSyntax define-for-syntax define-require-syntax define-provide-syntax
41syntax keyword racketSyntax define-syntax-rule
42syntax keyword racketSyntax define-record-type
43syntax keyword racketSyntax begin begin0
44syntax keyword racketSyntax begin-for-syntax
45syntax keyword racketSyntax when unless
46syntax keyword racketSyntax set! set!-values
47syntax keyword racketSyntax for for/list for/vector for/hash for/hasheq for/hasheqv
48syntax keyword racketSyntax for/and for/or for/lists for/first
49syntax keyword racketSyntax for/last for/fold
50syntax keyword racketSyntax for* for*/list for*/vector for*/hash for*/hasheq for*/hasheqv
51syntax keyword racketSyntax for*/and for*/or for*/lists for*/first
52syntax keyword racketSyntax for*/last for*/fold
53syntax keyword racketSyntax for/fold/derived for*/fold/derived
54syntax keyword racketSyntax define-sequence-syntax :do-in do
55syntax keyword racketSyntax with-continuation-mark
56syntax keyword racketSyntax quasiquote unquote unquote-splicing quote-syntax
57syntax keyword racketSyntax #%top-interaction
58syntax keyword racketSyntax define-package open-package package-begin
59syntax keyword racketSyntax define* define*-values define*-syntax define*-syntaxes open*-package
60syntax keyword racketSyntax package? package-exported-identifiers package-original-identifiers
61syntax keyword racketSyntax block #%stratified-body
62
63" 8 Contracts
64" 8.2 Function contracts
65syntax keyword racketSyntax -> ->* ->i ->d case-> dynamic->* unconstrained-domain->
66
67" 8.6.1 Nested Contract Boundaries
68syntax keyword racketSyntax with-contract define/contract define-struct/contract
69syntax keyword racketSyntax invariant-assertion current-contract-region
70
71" 9 Pattern Matching
72syntax keyword racketSyntax match match* match/values define/match
73syntax keyword racketSyntax match-lambda match-lambda* match-lambda**
74syntax keyword racketSyntax match-let match-let* match-let-values match-let*-values
75syntax keyword racketSyntax match-letrec match-define match-define-values
76
77" 10.2.3 Handling Exceptions
78syntax keyword racketSyntax with-handlers with-handlers*
79
80" 10.4 Continuations
81syntax keyword racketSyntax let/cc let/ec
82
83" 10.4.1 Additional Control Operators
84syntax keyword racketSyntax % prompt control prompt-at control-at reset shift
85syntax keyword racketSyntax reset-at shift-at prompt0 reset0 control0 shift0
86syntax keyword racketSyntax prompt0-at reset0-at control0-at shift0-at
87syntax keyword racketSyntax set cupto
88
89" 11.3.2 Parameters
90syntax keyword racketSyntax parameterize parameterize*
91
92" 12.5 Writing
93syntax keyword racketSyntax write display displayln print
94syntax keyword racketSyntax fprintf printf eprintf format
95syntax keyword racketSyntax print-pair-curly-braces print-mpair-curly-braces print-unreadable
96syntax keyword racketSyntax print-graph print-struct print-box print-vector-length print-hash-table
97syntax keyword racketSyntax print-boolean-long-form print-reader-abbreviations print-as-expression print-syntax-width
98syntax keyword racketSyntax current-write-relative-directory port-write-handler port-display-handler
99syntax keyword racketSyntax port-print-handler global-port-print-handler
100
101" 13.7 Custodians
102syntax keyword racketSyntax custodian? custodian-memory-accounting-available? custodian-box?
103syntax keyword racketSyntax make-custodian custodian-shutdown-all current-custodian custodian-managed-list
104syntax keyword racketSyntax custodian-require-memory custodian-limit-memory
105syntax keyword racketSyntax make-custodian-box custodian-box-value
106
107" lambda sign
108syntax match racketSyntax /\<[\u03bb]\>/
109
110
111" Functions ==================================================================
112
113syntax keyword racketFunc boolean? not equal? eqv? eq? equal?/recur immutable?
114syntax keyword racketFunc true false symbol=? boolean=? false?
115syntax keyword racketFunc number? complex? real? rational? integer?
116syntax keyword racketFunc exact-integer? exact-nonnegative-integer?
117syntax keyword racketFunc exact-positive-integer? inexact-real?
118syntax keyword racketFunc fixnum? flonum? zero? positive? negative?
119syntax keyword racketFunc even? odd? exact? inexact?
120syntax keyword racketFunc inexact->exact exact->inexact
121
122" 3.2.2 General Arithmetic
123
124" 3.2.2.1 Arithmetic
125syntax keyword racketFunc + - * / quotient remainder quotient/remainder modulo
126syntax keyword racketFunc add1 sub1 abs max min gcd lcm round exact-round floor
127syntax keyword racketFunc ceiling truncate numerator denominator rationalize
128
129" 3.2.2.2 Number Comparison
130syntax keyword racketFunc = < <= > >=
131
132" 3.2.2.3 Powers and Roots
133syntax keyword racketFunc sqrt integer-sqrt integer-sqrt/remainder
134syntax keyword racketFunc expt exp log
135
136" 3.2.2.3 Trigonometric Functions
137syntax keyword racketFunc sin cos tan asin acos atan
138
139" 3.2.2.4 Complex Numbers
140syntax keyword racketFunc make-rectangular make-polar
141syntax keyword racketFunc real-part imag-part magnitude angle
142syntax keyword racketFunc bitwise-ior bitwise-and bitwise-xor bitwise-not
143syntax keyword racketFunc bitwise-bit-set? bitwise-bit-field arithmetic-shift
144syntax keyword racketFunc integer-length
145
146" 3.2.2.5 Random Numbers
147syntax keyword racketFunc random random-seed
148syntax keyword racketFunc make-pseudo-random-generator pseudo-random-generator?
149syntax keyword racketFunc current-pseudo-random-generator pseudo-random-generator->vector
150syntax keyword racketFunc vector->pseudo-random-generator vector->pseudo-random-generator!
151
152" 3.2.2.8 Number-String Conversions
153syntax keyword racketFunc number->string string->number real->decimal-string
154syntax keyword racketFunc integer->integer-bytes
155syntax keyword racketFunc floating-point-bytes->real real->floating-point-bytes
156syntax keyword racketFunc system-big-endian?
157
158" 3.2.2.9 Extra Constants and Functions
159syntax keyword racketFunc pi sqr sgn conjugate sinh cosh tanh order-of-magnitude
160
161" 3.2.3 Flonums
162
163" 3.2.3.1 Flonum Arithmetic
164syntax keyword racketFunc fl+ fl- fl* fl/ flabs
165syntax keyword racketFunc fl= fl< fl> fl<= fl>= flmin flmax
166syntax keyword racketFunc flround flfloor flceiling fltruncate
167syntax keyword racketFunc flsin flcos fltan flasin flacos flatan
168syntax keyword racketFunc fllog flexp flsqrt
169syntax keyword racketFunc ->fl fl->exact-integer make-flrectangular
170syntax keyword racketFunc flreal-part flimag-part
171
172" 3.2.3.2 Flonum Vectors
173syntax keyword racketFunc flvector? flvector make-flvector flvector-length
174syntax keyword racketFunc flvector-ref flvector-set! flvector-copy in-flvector
175syntax keyword racketFunc shared-flvector make-shared-flvector
176syntax keyword racketSyntax for/flvector for*/flvector
177
178" 3.2.4 Fixnums
179syntax keyword racketFunc fx+ fx- fx* fxquotient fxremainder fxmodulo fxabs
180syntax keyword racketFunc fxand fxior fxxor fxnot fxlshift fxrshift
181syntax keyword racketFunc fx= fx< fx> fx<= fx>= fxmin fxmax fx->fl fl->fx
182
183" 3.2.4.2 Fixnum Vectors
184syntax keyword racketFunc fxvector? fxvector make-fxvector fxvector-length
185syntax keyword racketFunc fxvector-ref fxvector-set! fxvector-copy in-fxvector
186syntax keyword racketFunc for/fxvector for*/fxvector
187syntax keyword racketFunc shared-fxvector make-shared-fxvector
188
189" 3.3 Strings
190syntax keyword racketFunc string? make-string string string->immutable-string string-length
191syntax keyword racketFunc string-ref string-set! substring string-copy string-copy!
192syntax keyword racketFunc string-fill! string-append string->list list->string
193syntax keyword racketFunc build-string string=? string<? string<=? string>? string>=?
194syntax keyword racketFunc string-ci=? string-ci<? string-ci<=? string-ci>? string-ci>=?
195syntax keyword racketFunc string-upcase string-downcase string-titlecase string-foldcase
196syntax keyword racketFunc string-normalize-nfd string-normalize-nfc string-normalize-nfkc
197syntax keyword racketFunc string-normalize-spaces string-trim
198syntax keyword racketFunc string-locale=? string-locale>? string-locale<?
199syntax keyword racketFunc string-locale-ci=? string-locale<=?
200syntax keyword racketFunc string-locale-upcase string-locale-downcase
201syntax keyword racketFunc string-append* string-join
202
203" 3.4 Bytestrings
204syntax keyword racketFunc bytes? make-bytes bytes bytes->immutable-bytes byte?
205syntax keyword racketFunc bytes-length bytes-ref bytes-set! subbytes bytes-copy
206syntax keyword racketFunc bytes-copy! bytes-fill! bytes-append bytes->list list->bytes
207syntax keyword racketFunc make-shared-bytes shared-bytes
208syntax keyword racketFunc bytes=? bytes<? bytes>?
209syntax keyword racketFunc bytes->string/utf-8 bytes->string/latin-1
210syntax keyword racketFunc string->bytes/locale string->bytes/latin-1 string->bytes/utf-8
211syntax keyword racketFunc string-utf-8-length bytes-utf8-ref bytes-utf-8-index
212syntax keyword racketFunc bytes-open-converter bytes-close-converter
213syntax keyword racketFunc bytes-convert bytes-convert-end bytes-converter?
214syntax keyword racketFunc locale-string-encoding
215
216" 3.5 Characters
217syntax keyword racketFunc char? char->integer integer->char
218syntax keyword racketFunc char=? char<? char<=? char>? char>=?
219syntax keyword racketFunc char-ci=? char-ci<? char-ci<=? char-ci>? char-ci>=?
220syntax keyword racketFunc char-alphabetic? char-lower-case? char-upper-case? char-title-case?
221syntax keyword racketFunc char-numeric? char-symbolic? char-punctuation? char-graphic?
222syntax keyword racketFunc char-whitespace? char-blank?
223syntax keyword racketFunc char-iso-control? char-general-category
224syntax keyword racketFunc make-known-char-range-list
225syntax keyword racketFunc char-upcase char-downcase char-titlecase char-foldcase
226
227" 3.6 Symbols
228syntax keyword racketFunc symbol? symbol-interned? symbol-unreadable?
229syntax keyword racketFunc symbol->string string->symbol
230syntax keyword racketFunc string->uninterned-symbol string->unreadable-symbol
231syntax keyword racketFunc gensym
232
233" 3.7 Regular Expressions
234syntax keyword racketFunc regexp? pregexp? byte-regexp? byte-pregexp?
235syntax keyword racketFunc regexp pregexp byte-regexp byte-pregexp
236syntax keyword racketFunc regexp-quote regexp-match regexp-match*
237syntax keyword racketFunc regexp-try-match regexp-match-positions
238syntax keyword racketFunc regexp-match-positions* regexp-match?
239syntax keyword racketFunc regexp-match-peek-positions regexp-match-peek-immediate
240syntax keyword racketFunc regexp-match-peek regexp-match-peek-positions*
241syntax keyword racketFunc regexp-match/end regexp-match-positions/end
242syntax keyword racketFunc regexp-match-peek-positions-immediat/end
243syntax keyword racketFunc regexp-split regexp-replace regexp-replace*
244syntax keyword racketFunc regexp-replace-quote
245
246" 3.8 Keywords
247syntax keyword racketFunc keyword? keyword->string string->keyword keyword<?
248
249" 3.9 Pairs and Lists
250syntax keyword racketFunc pair? null? cons car cdr null
251syntax keyword racketFunc list? list list* build-list length
252syntax keyword racketFunc list-ref list-tail append reverse map andmap ormap
253syntax keyword racketFunc for-each foldl foldr filter remove remq remv remove*
254syntax keyword racketFunc remq* remv* sort member memv memq memf
255syntax keyword racketFunc findf assoc assv assq assf
256syntax keyword racketFunc caar cadr cdar cddr caaar caadr cadar caddr cdaar
257syntax keyword racketFunc cddar cdddr caaaar caaadr caadar caaddr cadadr caddar
258syntax keyword racketFunc cadddr cdaaar cdaadr cdadar cddaar cdddar cddddr
259
260" 3.9.7 Additional List Functions and Synonyms
261" (require racket/list)
262syntax keyword racketFunc empty cons? empty? first rest
263syntax keyword racketFunc second third fourth fifth sixth seventh eighth ninth tenth
264syntax keyword racketFunc last last-pair make-list take drop split-at
265syntax keyword racketFunc take-right drop-right split-at-right add-between
266syntax keyword racketFunc append* flatten remove-duplicates filter-map
267syntax keyword racketFunc count partition append-map filter-not shuffle
268syntax keyword racketFunc argmin argmax make-reader-graph placeholder? make-placeholder
269syntax keyword racketFunc placeholder-set! placeholder-get hash-placeholder?
270syntax keyword racketFunc make-hash-placeholder make-hasheq-placeholder
271syntax keyword racketFunc make-hasheqv-placeholder make-immutable-hasheqv
272
273" 3.10 Mutable Pairs and Lists
274syntax keyword racketFunc mpair? mcons mcar mcdr
275
276" 3.11 Vectors
277syntax keyword racketFunc vector? make-vector vector vector-immutable vector-length
278syntax keyword racketFunc vector-ref vector-set! vector->list list->vector
279syntax keyword racketFunc vector->immutable-vector vector-fill! vector-copy!
280syntax keyword racketFunc vector->values build-vector vector-set*! vector-map
281syntax keyword racketFunc vector-map! vector-append vector-take vector-take-right
282syntax keyword racketFunc vector-drop vector-drop-right vector-split-at
283syntax keyword racketFunc vector-split-at-right vector-copy vector-filter
284syntax keyword racketFunc vector-filter-not vector-count vector-argmin vector-argmax
285syntax keyword racketFunc vector-member vector-memv vector-memq
286
287" 3.12 Boxes
288syntax keyword racketFunc box? box box-immutable unbox set-box!
289
290" 3.13 Hash Tables
291syntax keyword racketFunc hash? hash-equal? hash-eqv? hash-eq? hash-weak? hash
292syntax keyword racketFunc hasheq hasheqv
293syntax keyword racketFunc make-hash make-hasheqv make-hasheq make-weak-hash make-weak-hasheqv
294syntax keyword racketFunc make-weak-hasheq make-immutable-hash make-immutable-hasheqv
295syntax keyword racketFunc make-immutable-hasheq
296syntax keyword racketFunc hash-set! hash-set*! hash-set hash-set* hash-ref hash-ref!
297syntax keyword racketFunc hash-has-key? hash-update! hash-update hash-remove!
298syntax keyword racketFunc hash-remove hash-map hash-keys hash-values
299syntax keyword racketFunc hash->list hash-for-each hash-count
300syntax keyword racketFunc hash-iterate-first hash-iterate-next hash-iterate-key
301syntax keyword racketFunc hash-iterate-value hash-copy eq-hash-code eqv-hash-code
302syntax keyword racketFunc equal-hash-code equal-secondary-hash-code
303
304" 3.15 Dictionaries
305syntax keyword racketFunc dict? dict-mutable? dict-can-remove-keys? dict-can-functional-set?
306syntax keyword racketFunc dict-set! dict-set*! dict-set dict-set* dict-has-key? dict-ref
307syntax keyword racketFunc dict-ref! dict-update! dict-update dict-remove! dict-remove
308syntax keyword racketFunc dict-map dict-for-each dict-count dict-iterate-first dict-iterate-next
309syntax keyword racketFunc dict-iterate-key dict-iterate-value in-dict in-dict-keys
310syntax keyword racketFunc in-dict-values in-dict-pairs dict-keys dict-values
311syntax keyword racketFunc dict->list prop: dict prop: dict/contract dict-key-contract
312syntax keyword racketFunc dict-value-contract dict-iter-contract make-custom-hash
313syntax keyword racketFunc make-immutable-custom-hash make-weak-custom-hash
314
315" 3.16 Sets
316syntax keyword racketFunc set seteqv seteq set-empty? set-count set-member?
317syntax keyword racketFunc set-add set-remove set-union set-intersect set-subtract
318syntax keyword racketFunc set-symmetric-difference set=? subset? proper-subset?
319syntax keyword racketFunc set-map set-for-each set? set-equal? set-eqv? set-eq?
320syntax keyword racketFunc set/c in-set for/set for/seteq for/seteqv for*/set
321syntax keyword racketFunc for*/seteq for*/seteqv list->set list->seteq
322syntax keyword racketFunc list->seteqv set->list
323
324" 3.17 Procedures
325syntax keyword racketFunc procedure? apply compose compose1 procedure-rename procedure->method
326syntax keyword racketFunc keyword-apply procedure-arity procedure-arity?
327syntax keyword racketFunc procedure-arity-includes? procedure-reduce-arity
328syntax keyword racketFunc procedure-keywords make-keyword-procedure
329syntax keyword racketFunc procedure-reduce-keyword-arity procedure-struct-type?
330syntax keyword racketFunc procedure-extract-target checked-procedure-check-and-extract
331syntax keyword racketFunc primitive? primitive-closure? primitive-result-arity
332syntax keyword racketFunc identity const thunk thunk* negate curry curryr
333
334" 3.18 Void
335syntax keyword racketFunc void void?
336
337" 4.1 Defining Structure Types
338syntax keyword racketFunc struct struct-field-index define-struct define-struct define-struct/derived
339
340" 4.2 Creating Structure Types
341syntax keyword racketFunc make-struct-type make-struct-field-accessor make-struct-field-mutator
342
343" 4.3 Structure Type Properties
344syntax keyword racketFunc make-struct-type-property struct-type-property? struct-type-property-accessor-procedure?
345
346" 4.4 Copying and Updating Structures
347syntax keyword racketFunc struct-copy
348
349" 4.5 Structure Utilities
350syntax keyword racketFunc struct->vector struct? struct-type?
351syntax keyword racketFunc struct-constructor-procedure? struct-predicate-procedure? struct-accessor-procedure? struct-mutator-procedure?
352syntax keyword racketFunc prefab-struct-key make-prefab-struct prefab-key->struct-type
353
354" 4.6 Structure Type Transformer Binding
355syntax keyword racketFunc struct-info? check-struct-info? make-struct-info extract-struct-info
356syntax keyword racketFunc struct-auto-info? struct-auto-info-lists
357
358" 5.1 Creating Interfaces
359syntax keyword racketFunc interface interface*
360
361" 5.2 Creating Classes
362syntax keyword racketFunc class* class inspect
363syntax keyword racketFunc init init-field field inherit field init-rest
364syntax keyword racketFunc public public* pubment pubment* public-final public-final*
365syntax keyword racketFunc override override* overment overment* override-final override-final*
366syntax keyword racketFunc augride augride* augment augment* augment-final augment-final*
367syntax keyword racketFunc abstract inherit inherit/super inherit/inner
368syntax keyword racketFunc rename-inner rename-super
369syntax keyword racketFunc define/public define/pubment define/public-final
370syntax keyword racketFunc define/override define/overment define/override-final
371syntax keyword racketFunc define/augride define/augment define/augment-final
372syntax keyword racketFunc private* define/private
373
374" 5.2.3 Methods
375syntax keyword racketFunc class/derived
376syntax keyword racketFunc super inner define-local-member-name define-member-name
377syntax keyword racketFunc member-name-key generate-member-key member-name-key?
378syntax keyword racketFunc member-name-key=? member-name-key-hash-code
379
380" 5.3 Creating Objects
381syntax keyword racketFunc make-object instantiate new
382syntax keyword racketFunc super-make-object super-instantiate super-new
383
384"5.4 Field and Method Access
385syntax keyword racketFunc method-id send send/apply send/keyword-apply dynamic-send send*
386syntax keyword racketFunc get-field set-field! field-bound?
387syntax keyword racketFunc class-field-accessor class-field-mutator
388
389"5.4.3 Generics
390syntax keyword racketFunc generic send-generic make-generic
391
392" 8.1 Data-strucure contracts
393syntax keyword racketFunc flat-contract-with-explanation flat-named-contract
394" TODO where do any/c and none/c `value`s go?
395syntax keyword racketFunc or/c first-or/c and/c not/c =/c </c >/c <=/c >=/c
396syntax keyword racketFunc between/c real-in integer-in char-in natural-number/c
397syntax keyword racketFunc string-len/c printable/c one-of/c symbols vectorof
398syntax keyword racketFunc vector-immutableof vector/c box/c box-immutable/c listof
399syntax keyword racketFunc non-empty-listof list*of cons/c cons/dc list/c *list/c
400syntax keyword racketFunc syntax/c struct/c struct/dc parameter/c
401syntax keyword racketFunc procedure-arity-includes/c hash/c hash/dc channel/c
402syntax keyword racketFunc prompt-tag/c continuation-mark-key/c evt/c promise/c
403syntax keyword racketFunc flat-contract flat-contract-predicate suggest/c
404
405" 9.1 Multiple Values
406syntax keyword racketFunc values call-with-values
407
408" 10.2.2 Raising Exceptions
409syntax keyword racketFunc raise error raise-user-error raise-argument-error
410syntax keyword racketFunc raise-result-error raise-argument-error raise-range-error
411syntax keyword racketFunc raise-type-error raise-mismatch-error raise-arity-error
412syntax keyword racketFunc raise-syntax-error
413
414" 10.2.3 Handling Exceptions
415syntax keyword racketFunc call-with-exception-handler uncaught-exception-handler
416
417" 10.2.4 Configuring Default Handlers
418syntax keyword racketFunc error-escape-handler error-display-handler error-print-width
419syntax keyword racketFunc error-print-context-length error-values->string-handler
420syntax keyword racketFunc error-print-source-location
421
422" 10.2.5 Built-in Exception Types
423syntax keyword racketFunc exn exn:fail exn:fail:contract exn:fail:contract:arity
424syntax keyword racketFunc exn:fail:contract:divide-by-zero exn:fail:contract:non-fixnum-result
425syntax keyword racketFunc exn:fail:contract:continuation exn:fail:contract:variable
426syntax keyword racketFunc exn:fail:syntax exn:fail:syntax:unbound exn:fail:syntax:missing-module
427syntax keyword racketFunc exn:fail:read exn:fail:read:eof exn:fail:read:non-char
428syntax keyword racketFunc exn:fail:filesystem exn:fail:filesystem:exists
429syntax keyword racketFunc exn:fail:filesystem:version exn:fail:filesystem:errno
430syntax keyword racketFunc exn:fail:filesystem:missing-module
431syntax keyword racketFunc exn:fail:network exn:fail:network:errno exn:fail:out-of-memory
432syntax keyword racketFunc exn:fail:unsupported exn:fail:user
433syntax keyword racketFunc exn:break exn:break:hang-up exn:break:terminate
434
435" 10.3 Delayed Evaluation
436syntax keyword racketFunc promise? delay lazy force promise-forced? promise-running?
437
438" 10.3.1 Additional Promise Kinds
439syntax keyword racketFunc delay/name promise/name delay/strict delay/sync delay/thread delay/idle
440
441" 10.4 Continuations
442syntax keyword racketFunc call-with-continuation-prompt abort-current-continuation make-continuation-prompt-tag
443syntax keyword racketFunc default-continuation-prompt-tag call-with-current-continuation call/cc
444syntax keyword racketFunc call-with-composable-continuation call-with-escape-continuation call/ec
445syntax keyword racketFunc call-with-continuation-barrier continuation-prompt-available
446syntax keyword racketFunc continuation? continuation-prompt-tag dynamic-wind
447
448" 10.4.1 Additional Control Operators
449syntax keyword racketFunc call/prompt abort/cc call/comp abort fcontrol spawn splitter new-prompt
450
451" 11.3.2 Parameters
452syntax keyword racketFunc make-parameter make-derived-parameter parameter?
453syntax keyword racketFunc parameter-procedure=? current-parameterization
454syntax keyword racketFunc call-with-parameterization parameterization?
455
456" 14.1.1 Manipulating Paths
457syntax keyword racketFunc path? path-string? path-for-some-system? string->path path->string path->bytes
458syntax keyword racketFunc string->path-element bytes->path-element path-element->string path-element->bytes
459syntax keyword racketFunc path-convention-type system-path-convention-type build-type
460syntax keyword racketFunc build-type/convention-type
461syntax keyword racketFunc absolute-path? relative-path? complete-path?
462syntax keyword racketFunc path->complete-path path->directory-path
463syntax keyword racketFunc resolve-path cleanse-path expand-user-path simplify-path normal-case-path split-path
464syntax keyword racketFunc path-replace-suffix path-add-suffix
465
466" 14.1.2 More Path Utilities
467syntax keyword racketFunc explode-path file-name-from-path filename-extension find-relative-path normalize-path
468syntax keyword racketFunc path-element? path-only simple-form-path some-simple-path->string string->some-system-path
469
470" 15.6 Time
471syntax keyword racketFunc current-seconds current-inexact-milliseconds
472syntax keyword racketFunc seconds->date current-milliseconds
473
474
475syntax match racketDelimiter !\<\.\>!
476
477syntax cluster racketTop contains=racketSyntax,racketFunc,racketDelimiter
478
479syntax match racketConstant ,\<\*\k\+\*\>,
480syntax match racketConstant ,\<<\k\+>\>,
481
482" Non-quoted lists, and strings
483syntax region racketStruc matchgroup=racketParen start="("rs=s+1 end=")"re=e-1 contains=@racketTop
484syntax region racketStruc matchgroup=racketParen start="#("rs=s+2 end=")"re=e-1 contains=@racketTop
485syntax region racketStruc matchgroup=racketParen start="{"rs=s+1 end="}"re=e-1 contains=@racketTop
486syntax region racketStruc matchgroup=racketParen start="#{"rs=s+2 end="}"re=e-1 contains=@racketTop
487syntax region racketStruc matchgroup=racketParen start="\["rs=s+1 end="\]"re=e-1 contains=@racketTop
488syntax region racketStruc matchgroup=racketParen start="#\["rs=s+2 end="\]"re=e-1 contains=@racketTop
489
490for lit in ['hash', 'hasheq', 'hasheqv']
491 execute printf('syntax match racketLit "\<%s\>" nextgroup=@racketParen containedin=ALLBUT,.*String,.*Comment', '#'.lit)
492endfor
493
494for lit in ['rx', 'rx#', 'px', 'px#']
495 execute printf('syntax match racketRe "\<%s\>" nextgroup=@racketString containedin=ALLBUT,.*String,.*Comment,', '#'.lit)
496endfor
497
498unlet lit
499
500" Simple literals
501
502" Strings
503
504syntax match racketStringEscapeError "\\." contained display
505
506syntax match racketStringEscape "\\[abtnvfre'"\\]" contained display
507syntax match racketStringEscape "\\$" contained display
508syntax match racketStringEscape "\\\o\{1,3}\|\\x\x\{1,2}" contained display
509
510syntax match racketUStringEscape "\\u\x\{1,4}\|\\U\x\{1,8}" contained display
511syntax match racketUStringEscape "\\u\x\{4}\\u\x\{4}" contained display
512
513syntax region racketString start=/\%(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ contains=racketStringEscapeError,racketStringEscape,racketUStringEscape
514syntax region racketString start=/#"/ skip=/\\[\\"]/ end=/"/ contains=racketStringEscapeError,racketStringEscape
515
516if exists("racket_no_string_fold")
D. Ben Knoble5eb9cb52023-12-16 08:24:15 -0500517 syn region racketHereString start=/#<<\z(.*\)$/ end=/^\z1$/
Bram Moolenaar9b03d3e2022-08-30 20:26:34 +0100518else
D. Ben Knoble5eb9cb52023-12-16 08:24:15 -0500519 syn region racketHereString start=/#<<\z(.*\)$/ end=/^\z1$/ fold
Bram Moolenaar9b03d3e2022-08-30 20:26:34 +0100520endif
521
522
D. Ben Knoble5eb9cb52023-12-16 08:24:15 -0500523syntax cluster racketTop add=racketError,racketConstant,racketStruc,racketString,racketHereString
Bram Moolenaar9b03d3e2022-08-30 20:26:34 +0100524
525" Numbers
526
527" anything which doesn't match the below rules, but starts with a #d, #b, #o,
528" #x, #i, or #e, is an error
529syntax match racketNumberError "\<#[xdobie]\k*"
530
531syntax match racketContainedNumberError "\<#o\k*[^-+0-7delfinas#./@]\>"
532syntax match racketContainedNumberError "\<#b\k*[^-+01delfinas#./@]\>"
533syntax match racketContainedNumberError "\<#[ei]#[ei]"
534syntax match racketContainedNumberError "\<#[xdob]#[xdob]"
535
536" start with the simpler sorts
537syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?\>" contains=racketContainedNumberError
538syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\d\+/\d\+\>" contains=racketContainedNumberError
539syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\d\+/\d\+[-+]\d\+\(/\d\+\)\?i\>" contains=racketContainedNumberError
540
541" different possible ways of expressing complex values
542syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?i\>" contains=racketContainedNumberError
543syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?[-+]\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?i\>" contains=racketContainedNumberError
544syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f][-+]\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?i\>" contains=racketContainedNumberError
545syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?[-+]\(inf\|nan\)\.[0f]i\>" contains=racketContainedNumberError
546syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?@[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?\>" contains=racketContainedNumberError
547syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f]@[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?\>" contains=racketContainedNumberError
548syntax match racketNumber "\<\(#[dobie]\)\{0,2}[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?\([sdlef][-+]\?\d\+#*\)\?@[-+]\(inf\|nan\)\.[0f]\>" contains=racketContainedNumberError
549
550" hex versions of the above (separate because of the different possible exponent markers)
551syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?\>"
552syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\x\+/\x\+\>"
553syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\x\+/\x\+[-+]\x\+\(/\x\+\)\?i\>"
554
555syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?i\>"
556syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?[-+]\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?i\>"
557syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\(inf\|nan\)\.[0f][-+]\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?i\>"
558syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?[-+]\(inf\|nan\)\.[0f]i\>"
559syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?@[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?\>"
560syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\(inf\|nan\)\.[0f]@[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?\>"
561syntax match racketNumber "\<\(#x\|#[ei]#x\|#x#[ei]\)[-+]\?\(\x\+\|\x\+#*\.\|\x*\.\x\+\)#*\(/\x\+#*\)\?\([sl][-+]\?\x\+#*\)\?@[-+]\(inf\|nan\)\.[0f]\>"
562
563" these work for any radix
564syntax match racketNumber "\<\(#[xdobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f]i\?\>" contains=racketContainedNumberError
565syntax match racketNumber "\<\(#[xdobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f][-+]\(inf\|nan\)\.[0f]i\>" contains=racketContainedNumberError
566syntax match racketNumber "\<\(#[xdobie]\)\{0,2}[-+]\(inf\|nan\)\.[0f]@[-+]\(inf\|nan\)\.[0f]\>" contains=racketContainedNumberError
567
568syntax keyword racketBoolean #t #f #true #false #T #F
569
570syntax match racketError "\<#\\\k*\>"
571
572syntax match racketChar "\<#\\.\w\@!"
573syntax match racketChar "\<#\\space\>"
574syntax match racketChar "\<#\\newline\>"
575syntax match racketChar "\<#\\return\>"
576syntax match racketChar "\<#\\null\?\>"
577syntax match racketChar "\<#\\backspace\>"
578syntax match racketChar "\<#\\tab\>"
579syntax match racketChar "\<#\\linefeed\>"
580syntax match racketChar "\<#\\vtab\>"
581syntax match racketChar "\<#\\page\>"
582syntax match racketChar "\<#\\rubout\>"
583syntax match racketChar "\<#\\\o\{1,3}\>"
584syntax match racketChar "\<#\\x\x\{1,2}\>"
585syntax match racketChar "\<#\\u\x\{1,6}\>"
586
587syntax cluster racketTop add=racketNumber,racketBoolean,racketChar
588
589" Command-line parsing
590syntax keyword racketExtFunc command-line current-command-line-arguments once-any help-labels multi once-each
591
592syntax match racketSyntax "#lang "
593syntax match racketExtSyntax "#:\k\+"
594
595syntax cluster racketTop add=racketExtFunc,racketExtSyntax
596
597" syntax quoting, unquoting and quasiquotation
598syntax match racketQuote "#\?['`]"
599
600syntax match racketUnquote "#,"
601syntax match racketUnquote "#,@"
602syntax match racketUnquote ","
603syntax match racketUnquote ",@"
604
605" Comments
606syntax match racketSharpBang "\%^#![ /].*" display
607syntax match racketComment /;.*$/ contains=racketTodo,racketNote,@Spell
608syntax region racketMultilineComment start=/#|/ end=/|#/ contains=racketMultilineComment,racketTodo,racketNote,@Spell
609syntax match racketFormComment "#;" nextgroup=@racketTop
610
611syntax match racketTodo /\C\<\(FIXME\|TODO\|XXX\)\ze:\?\>/ contained
612syntax match racketNote /\CNOTE\ze:\?/ contained
613
614syntax cluster racketTop add=racketQuote,racketUnquote,racketComment,racketMultilineComment,racketFormComment
615
616" Synchronization and the wrapping up...
617syntax sync match matchPlace grouphere NONE "^[^ \t]"
618" ... i.e. synchronize on a line that starts at the left margin
619
620" Define the default highlighting.
621highlight default link racketSyntax Statement
622highlight default link racketFunc Function
623
624highlight default link racketString String
625highlight default link racketStringEscape Special
D. Ben Knoble5eb9cb52023-12-16 08:24:15 -0500626highlight default link racketHereString String
Bram Moolenaar9b03d3e2022-08-30 20:26:34 +0100627highlight default link racketUStringEscape Special
628highlight default link racketStringEscapeError Error
629highlight default link racketChar Character
630highlight default link racketBoolean Boolean
631
632highlight default link racketNumber Number
633highlight default link racketNumberError Error
634highlight default link racketContainedNumberError Error
635
636highlight default link racketQuote SpecialChar
637highlight default link racketUnquote SpecialChar
638
639highlight default link racketDelimiter Delimiter
640highlight default link racketParen Delimiter
641highlight default link racketConstant Constant
642
643highlight default link racketLit Type
644highlight default link racketRe Type
645
646highlight default link racketComment Comment
647highlight default link racketMultilineComment Comment
648highlight default link racketFormComment SpecialChar
649highlight default link racketSharpBang Comment
650highlight default link racketTodo Todo
651highlight default link racketNote SpecialComment
652highlight default link racketError Error
653
654highlight default link racketExtSyntax Type
655highlight default link racketExtFunc PreProc
656
657let b:current_syntax = "racket"