scheme.vim (19630B)
1 " Vim syntax file 2 " Language: Scheme (R7RS) 3 " Last Change: 2024 Jun 21 4 " Author: Evan Hanson <evhan@foldling.org> 5 " Maintainer: Evan Hanson <evhan@foldling.org> 6 " Previous Author: Dirk van Deun <dirk@igwe.vub.ac.be> 7 " Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com> 8 " Repository: https://git.foldling.org/vim-scheme.git 9 " URL: https://foldling.org/vim/syntax/scheme.vim 10 11 if exists('b:current_syntax') 12 finish 13 endif 14 15 let s:cpo = &cpo 16 set cpo&vim 17 18 syn spell notoplevel 19 20 syn match schemeParentheses "[^ '`\t\n()\[\]";]\+" 21 syn match schemeParentheses "[)\]]" 22 23 syn match schemeIdentifier /[^ '`\t\n()\[\]"|;][^ '`\t\n()\[\]"|;]*/ 24 25 syn region schemeQuote matchgroup=schemeData start=/'[`']*/ end=/[ \t\n()\[\]";]/me=e-1 26 syn region schemeQuote matchgroup=schemeData start=/'['`]*"/ skip=/\\[\\"]/ end=/"/ 27 syn region schemeQuote matchgroup=schemeData start=/'['`]*|/ skip=/\\[\\|]/ end=/|/ 28 syn region schemeQuote matchgroup=schemeData start=/'['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster 29 30 syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*/ end=/[ \t\n()\[\]";]/me=e-1 31 syn region schemeQuasiquote matchgroup=schemeData start=/`['`]*#\?(/ end=/)/ contains=ALLBUT,schemeQuote,schemeQuoteForm,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster 32 33 syn region schemeUnquote matchgroup=schemeParentheses start=/,/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster 34 syn region schemeUnquote matchgroup=schemeParentheses start=/,@/ end=/[ `'\t\n\[\]()";]/me=e-1 contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster 35 syn region schemeUnquote matchgroup=schemeParentheses start=/,(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster 36 syn region schemeUnquote matchgroup=schemeParentheses start=/,@(/ end=/)/ contained contains=ALLBUT,schemeDatumCommentForm,@schemeImportCluster 37 38 syn region schemeQuoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster 39 syn region schemeQuasiquoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster 40 41 syn region schemeString start=/\(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ contains=@Spell 42 syn region schemeSymbol start=/\(\\\)\@<!|/ skip=/\\[\\|]/ end=/|/ 43 44 syn match schemeNumber /\(#[dbeio]\)*[+\-]*\([0-9]\+\|inf.0\|nan.0\)\(\/\|\.\)\?[0-9+\-@\ilns]*\>/ 45 syn match schemeNumber /#x[+\-]*[0-9a-fA-F]\+\>/ 46 47 syn match schemeBoolean /#t\(rue\)\?/ 48 syn match schemeBoolean /#f\(alse\)\?/ 49 50 syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/ 51 syn match schemeCharacter /#\\x[0-9a-fA-F]\+/ 52 53 syn match schemeComment /;.*$/ contains=schemeTodo,@Spell 54 55 syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeTodo,schemeMultilineComment,@Spell 56 57 syn match schemeTodo /\c\<\(todo\|xxx\|fixme\|note\):\?\>/ contained 58 59 syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster 60 syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster 61 62 syn region schemeVector matchgroup=schemeData start="#(" end=")" contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster 63 syn region schemeVector matchgroup=schemeData start="#[fsu]\d\+(" end=")" contains=schemeNumber,schemeComment,schemeDatumComment 64 65 if exists('g:is_chicken') || exists('b:is_chicken') 66 syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\|import-syntax\|use\|require-extension\)\(-for-syntax\)\?\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment 67 else 68 syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\)\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment 69 endif 70 71 syn match schemeImportKeyword "\(([ \t\n]*\)\@<=\(except\|only\|prefix\|rename\)\>" 72 syn region schemeImportForm matchgroup=schemeParentheses start="(" end=")" contained contains=schemeIdentifier,schemeComment,schemeDatumComment,@schemeImportCluster 73 syn cluster schemeImportCluster contains=schemeImportForm,schemeImportKeyword 74 75 syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*/ end=/[ \t\n()\[\]";]/me=e-1 76 syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*"/ skip=/\\[\\"]/ end=/"/ 77 syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*|/ skip=/\\[\\|]/ end=/|/ 78 syn region schemeDatumComment matchgroup=schemeDatumComment start=/#;[ \t\n`']*\(#\([usf]\d\+\)\?\)\?(/ end=/)/ contains=schemeDatumCommentForm 79 syn region schemeDatumCommentForm start="(" end=")" contained contains=schemeDatumCommentForm 80 81 syn cluster schemeSyntaxCluster contains=schemeFunction,schemeKeyword,schemeSyntax,schemeExtraSyntax,schemeLibrarySyntax,schemeSyntaxSyntax 82 83 syn keyword schemeLibrarySyntax define-library 84 syn keyword schemeLibrarySyntax export 85 syn keyword schemeLibrarySyntax include 86 syn keyword schemeLibrarySyntax include-ci 87 syn keyword schemeLibrarySyntax include-library-declarations 88 syn keyword schemeLibrarySyntax library 89 syn keyword schemeLibrarySyntax cond-expand 90 91 syn keyword schemeSyntaxSyntax define-syntax 92 syn keyword schemeSyntaxSyntax let-syntax 93 syn keyword schemeSyntaxSyntax letrec-syntax 94 syn keyword schemeSyntaxSyntax syntax-rules 95 96 syn keyword schemeSyntax => 97 syn keyword schemeSyntax and 98 syn keyword schemeSyntax begin 99 syn keyword schemeSyntax case 100 syn keyword schemeSyntax case-lambda 101 syn keyword schemeSyntax cond 102 syn keyword schemeSyntax define 103 syn keyword schemeSyntax define-record-type 104 syn keyword schemeSyntax define-values 105 syn keyword schemeSyntax delay 106 syn keyword schemeSyntax delay-force 107 syn keyword schemeSyntax do 108 syn keyword schemeSyntax else 109 syn keyword schemeSyntax guard 110 syn keyword schemeSyntax if 111 syn keyword schemeSyntax lambda 112 syn keyword schemeSyntax let 113 syn keyword schemeSyntax let* 114 syn keyword schemeSyntax let*-values 115 syn keyword schemeSyntax let-values 116 syn keyword schemeSyntax letrec 117 syn keyword schemeSyntax letrec* 118 syn keyword schemeSyntax or 119 syn keyword schemeSyntax parameterize 120 syn keyword schemeSyntax quasiquote 121 syn keyword schemeSyntax quote 122 syn keyword schemeSyntax set! 123 syn keyword schemeSyntax unless 124 syn keyword schemeSyntax unquote 125 syn keyword schemeSyntax unquote-splicing 126 syn keyword schemeSyntax when 127 128 syn keyword schemeFunction * 129 syn keyword schemeFunction + 130 syn keyword schemeFunction - 131 syn keyword schemeFunction / 132 syn keyword schemeFunction < 133 syn keyword schemeFunction <= 134 syn keyword schemeFunction = 135 syn keyword schemeFunction > 136 syn keyword schemeFunction >= 137 syn keyword schemeFunction abs 138 syn keyword schemeFunction acos 139 syn keyword schemeFunction acos 140 syn keyword schemeFunction angle 141 syn keyword schemeFunction append 142 syn keyword schemeFunction apply 143 syn keyword schemeFunction asin 144 syn keyword schemeFunction assoc 145 syn keyword schemeFunction assq 146 syn keyword schemeFunction assv 147 syn keyword schemeFunction atan 148 syn keyword schemeFunction binary-port? 149 syn keyword schemeFunction boolean=? 150 syn keyword schemeFunction boolean? 151 syn keyword schemeFunction bytevector 152 syn keyword schemeFunction bytevector-append 153 syn keyword schemeFunction bytevector-append 154 syn keyword schemeFunction bytevector-copy 155 syn keyword schemeFunction bytevector-copy! 156 syn keyword schemeFunction bytevector-length 157 syn keyword schemeFunction bytevector-u8-ref 158 syn keyword schemeFunction bytevector-u8-set! 159 syn keyword schemeFunction bytevector? 160 syn keyword schemeFunction caaaar 161 syn keyword schemeFunction caaadr 162 syn keyword schemeFunction caaar 163 syn keyword schemeFunction caadar 164 syn keyword schemeFunction caaddr 165 syn keyword schemeFunction caadr 166 syn keyword schemeFunction caar 167 syn keyword schemeFunction cadaar 168 syn keyword schemeFunction cadadr 169 syn keyword schemeFunction cadar 170 syn keyword schemeFunction caddar 171 syn keyword schemeFunction cadddr 172 syn keyword schemeFunction caddr 173 syn keyword schemeFunction cadr 174 syn keyword schemeFunction call-with-current-continuation 175 syn keyword schemeFunction call-with-input-file 176 syn keyword schemeFunction call-with-output-file 177 syn keyword schemeFunction call-with-port 178 syn keyword schemeFunction call-with-values 179 syn keyword schemeFunction call/cc 180 syn keyword schemeFunction car 181 syn keyword schemeFunction cdaaar 182 syn keyword schemeFunction cdaadr 183 syn keyword schemeFunction cdaar 184 syn keyword schemeFunction cdadar 185 syn keyword schemeFunction cdaddr 186 syn keyword schemeFunction cdadr 187 syn keyword schemeFunction cdar 188 syn keyword schemeFunction cddaar 189 syn keyword schemeFunction cddadr 190 syn keyword schemeFunction cddar 191 syn keyword schemeFunction cdddar 192 syn keyword schemeFunction cddddr 193 syn keyword schemeFunction cdddr 194 syn keyword schemeFunction cddr 195 syn keyword schemeFunction cdr 196 syn keyword schemeFunction ceiling 197 syn keyword schemeFunction char->integer 198 syn keyword schemeFunction char-alphabetic? 199 syn keyword schemeFunction char-ci<=? 200 syn keyword schemeFunction char-ci<? 201 syn keyword schemeFunction char-ci=? 202 syn keyword schemeFunction char-ci>=? 203 syn keyword schemeFunction char-ci>? 204 syn keyword schemeFunction char-downcase 205 syn keyword schemeFunction char-foldcase 206 syn keyword schemeFunction char-lower-case? 207 syn keyword schemeFunction char-numeric? 208 syn keyword schemeFunction char-ready? 209 syn keyword schemeFunction char-upcase 210 syn keyword schemeFunction char-upper-case? 211 syn keyword schemeFunction char-whitespace? 212 syn keyword schemeFunction char<=? 213 syn keyword schemeFunction char<? 214 syn keyword schemeFunction char=? 215 syn keyword schemeFunction char>=? 216 syn keyword schemeFunction char>? 217 syn keyword schemeFunction char? 218 syn keyword schemeFunction close-input-port 219 syn keyword schemeFunction close-output-port 220 syn keyword schemeFunction close-port 221 syn keyword schemeFunction command-line 222 syn keyword schemeFunction complex? 223 syn keyword schemeFunction cons 224 syn keyword schemeFunction cos 225 syn keyword schemeFunction current-error-port 226 syn keyword schemeFunction current-input-port 227 syn keyword schemeFunction current-jiffy 228 syn keyword schemeFunction current-output-port 229 syn keyword schemeFunction current-second 230 syn keyword schemeFunction delete-file 231 syn keyword schemeFunction denominator 232 syn keyword schemeFunction digit-value 233 syn keyword schemeFunction display 234 syn keyword schemeFunction dynamic-wind 235 syn keyword schemeFunction emergency-exit 236 syn keyword schemeFunction environment 237 syn keyword schemeFunction eof-object 238 syn keyword schemeFunction eof-object? 239 syn keyword schemeFunction eq? 240 syn keyword schemeFunction equal? 241 syn keyword schemeFunction eqv? 242 syn keyword schemeFunction error 243 syn keyword schemeFunction error-object-irritants 244 syn keyword schemeFunction error-object-message 245 syn keyword schemeFunction error-object? 246 syn keyword schemeFunction eval 247 syn keyword schemeFunction even? 248 syn keyword schemeFunction exact 249 syn keyword schemeFunction exact->inexact 250 syn keyword schemeFunction exact-integer-sqrt 251 syn keyword schemeFunction exact-integer? 252 syn keyword schemeFunction exact? 253 syn keyword schemeFunction exit 254 syn keyword schemeFunction exp 255 syn keyword schemeFunction expt 256 syn keyword schemeFunction features 257 syn keyword schemeFunction file-error? 258 syn keyword schemeFunction file-exists? 259 syn keyword schemeFunction finite? 260 syn keyword schemeFunction floor 261 syn keyword schemeFunction floor-quotient 262 syn keyword schemeFunction floor-remainder 263 syn keyword schemeFunction floor/ 264 syn keyword schemeFunction flush-output-port 265 syn keyword schemeFunction for-each 266 syn keyword schemeFunction force 267 syn keyword schemeFunction gcd 268 syn keyword schemeFunction get-environment-variable 269 syn keyword schemeFunction get-environment-variables 270 syn keyword schemeFunction get-output-bytevector 271 syn keyword schemeFunction get-output-string 272 syn keyword schemeFunction imag-part 273 syn keyword schemeFunction inexact 274 syn keyword schemeFunction inexact->exact 275 syn keyword schemeFunction inexact? 276 syn keyword schemeFunction infinite? 277 syn keyword schemeFunction input-port-open? 278 syn keyword schemeFunction input-port? 279 syn keyword schemeFunction integer->char 280 syn keyword schemeFunction integer? 281 syn keyword schemeFunction interaction-environment 282 syn keyword schemeFunction jiffies-per-second 283 syn keyword schemeFunction lcm 284 syn keyword schemeFunction length 285 syn keyword schemeFunction list 286 syn keyword schemeFunction list->string 287 syn keyword schemeFunction list->vector 288 syn keyword schemeFunction list-copy 289 syn keyword schemeFunction list-ref 290 syn keyword schemeFunction list-set! 291 syn keyword schemeFunction list-tail 292 syn keyword schemeFunction list? 293 syn keyword schemeFunction load 294 syn keyword schemeFunction log 295 syn keyword schemeFunction magnitude 296 syn keyword schemeFunction make-bytevector 297 syn keyword schemeFunction make-list 298 syn keyword schemeFunction make-parameter 299 syn keyword schemeFunction make-polar 300 syn keyword schemeFunction make-promise 301 syn keyword schemeFunction make-rectangular 302 syn keyword schemeFunction make-string 303 syn keyword schemeFunction make-vector 304 syn keyword schemeFunction map 305 syn keyword schemeFunction max 306 syn keyword schemeFunction member 307 syn keyword schemeFunction memq 308 syn keyword schemeFunction memv 309 syn keyword schemeFunction min 310 syn keyword schemeFunction modulo 311 syn keyword schemeFunction nan? 312 syn keyword schemeFunction negative? 313 syn keyword schemeFunction newline 314 syn keyword schemeFunction not 315 syn keyword schemeFunction null-environment 316 syn keyword schemeFunction null? 317 syn keyword schemeFunction number->string 318 syn keyword schemeFunction number? 319 syn keyword schemeFunction numerator 320 syn keyword schemeFunction odd? 321 syn keyword schemeFunction open-binary-input-file 322 syn keyword schemeFunction open-binary-output-file 323 syn keyword schemeFunction open-input-bytevector 324 syn keyword schemeFunction open-input-file 325 syn keyword schemeFunction open-input-string 326 syn keyword schemeFunction open-output-bytevector 327 syn keyword schemeFunction open-output-file 328 syn keyword schemeFunction open-output-string 329 syn keyword schemeFunction output-port-open? 330 syn keyword schemeFunction output-port? 331 syn keyword schemeFunction pair? 332 syn keyword schemeFunction peek-char 333 syn keyword schemeFunction peek-u8 334 syn keyword schemeFunction port? 335 syn keyword schemeFunction positive? 336 syn keyword schemeFunction procedure? 337 syn keyword schemeFunction promise? 338 syn keyword schemeFunction quotient 339 syn keyword schemeFunction raise 340 syn keyword schemeFunction raise-continuable 341 syn keyword schemeFunction rational? 342 syn keyword schemeFunction rationalize 343 syn keyword schemeFunction read 344 syn keyword schemeFunction read-bytevector 345 syn keyword schemeFunction read-bytevector! 346 syn keyword schemeFunction read-char 347 syn keyword schemeFunction read-error? 348 syn keyword schemeFunction read-line 349 syn keyword schemeFunction read-string 350 syn keyword schemeFunction read-u8 351 syn keyword schemeFunction real-part 352 syn keyword schemeFunction real? 353 syn keyword schemeFunction remainder 354 syn keyword schemeFunction reverse 355 syn keyword schemeFunction round 356 syn keyword schemeFunction scheme-report-environment 357 syn keyword schemeFunction set-car! 358 syn keyword schemeFunction set-cdr! 359 syn keyword schemeFunction sin 360 syn keyword schemeFunction sqrt 361 syn keyword schemeFunction square 362 syn keyword schemeFunction string 363 syn keyword schemeFunction string->list 364 syn keyword schemeFunction string->number 365 syn keyword schemeFunction string->symbol 366 syn keyword schemeFunction string->utf8 367 syn keyword schemeFunction string->vector 368 syn keyword schemeFunction string-append 369 syn keyword schemeFunction string-ci<=? 370 syn keyword schemeFunction string-ci<? 371 syn keyword schemeFunction string-ci=? 372 syn keyword schemeFunction string-ci>=? 373 syn keyword schemeFunction string-ci>? 374 syn keyword schemeFunction string-copy 375 syn keyword schemeFunction string-copy! 376 syn keyword schemeFunction string-downcase 377 syn keyword schemeFunction string-fill! 378 syn keyword schemeFunction string-foldcase 379 syn keyword schemeFunction string-for-each 380 syn keyword schemeFunction string-length 381 syn keyword schemeFunction string-map 382 syn keyword schemeFunction string-ref 383 syn keyword schemeFunction string-set! 384 syn keyword schemeFunction string-upcase 385 syn keyword schemeFunction string<=? 386 syn keyword schemeFunction string<? 387 syn keyword schemeFunction string=? 388 syn keyword schemeFunction string>=? 389 syn keyword schemeFunction string>? 390 syn keyword schemeFunction string? 391 syn keyword schemeFunction substring 392 syn keyword schemeFunction symbol->string 393 syn keyword schemeFunction symbol=? 394 syn keyword schemeFunction symbol? 395 syn keyword schemeFunction syntax-error 396 syn keyword schemeFunction tan 397 syn keyword schemeFunction textual-port? 398 syn keyword schemeFunction transcript-off 399 syn keyword schemeFunction transcript-on 400 syn keyword schemeFunction truncate 401 syn keyword schemeFunction truncate-quotient 402 syn keyword schemeFunction truncate-remainder 403 syn keyword schemeFunction truncate/ 404 syn keyword schemeFunction u8-ready? 405 syn keyword schemeFunction utf8->string 406 syn keyword schemeFunction values 407 syn keyword schemeFunction vector 408 syn keyword schemeFunction vector->list 409 syn keyword schemeFunction vector->string 410 syn keyword schemeFunction vector-append 411 syn keyword schemeFunction vector-copy 412 syn keyword schemeFunction vector-copy! 413 syn keyword schemeFunction vector-fill! 414 syn keyword schemeFunction vector-for-each 415 syn keyword schemeFunction vector-length 416 syn keyword schemeFunction vector-map 417 syn keyword schemeFunction vector-ref 418 syn keyword schemeFunction vector-set! 419 syn keyword schemeFunction vector? 420 syn keyword schemeFunction with-exception-handler 421 syn keyword schemeFunction with-input-from-file 422 syn keyword schemeFunction with-output-to-file 423 syn keyword schemeFunction write 424 syn keyword schemeFunction write-bytevector 425 syn keyword schemeFunction write-char 426 syn keyword schemeFunction write-shared 427 syn keyword schemeFunction write-simple 428 syn keyword schemeFunction write-string 429 syn keyword schemeFunction write-u8 430 syn keyword schemeFunction zero? 431 432 hi def link schemeTodo Todo 433 hi def link schemeBoolean Boolean 434 hi def link schemeCharacter Character 435 hi def link schemeComment Comment 436 hi def link schemeConstant Constant 437 hi def link schemeData Delimiter 438 hi def link schemeDatumComment Comment 439 hi def link schemeDatumCommentForm Comment 440 hi def link schemeDelimiter Delimiter 441 hi def link schemeError Error 442 hi def link schemeExtraSyntax Underlined 443 hi def link schemeFunction Function 444 hi def link schemeIdentifier Normal 445 hi def link schemeImport PreProc 446 hi def link schemeImportKeyword PreProc 447 hi def link schemeKeyword Type 448 hi def link schemeLibrarySyntax PreProc 449 hi def link schemeMultilineComment Comment 450 hi def link schemeNumber Number 451 hi def link schemeParentheses Normal 452 hi def link schemeQuasiquote Delimiter 453 hi def link schemeQuote Delimiter 454 hi def link schemeSpecialSyntax Special 455 hi def link schemeString String 456 hi def link schemeSymbol Normal 457 hi def link schemeSyntax Statement 458 hi def link schemeSyntaxSyntax PreProc 459 hi def link schemeTypeSyntax Type 460 461 let b:did_scheme_syntax = 1 462 463 if exists('b:is_chicken') || exists('g:is_chicken') 464 exe 'ru! syntax/chicken.vim' 465 endif 466 467 unlet b:did_scheme_syntax 468 let b:current_syntax = 'scheme' 469 let &cpo = s:cpo 470 unlet s:cpo