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