neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

racket.vim (34996B)


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