17254067eSBram Moolenaar" Vim syntax file 27254067eSBram Moolenaar" Language: Scheme (CHICKEN) 3*6e649224SBram Moolenaar" Last Change: 2021 Oct 01 47254067eSBram Moolenaar" Author: Evan Hanson <[email protected]> 57254067eSBram Moolenaar" Maintainer: Evan Hanson <[email protected]> 66aa57295SBram Moolenaar" Repository: https://git.foldling.org/vim-scheme.git 77254067eSBram Moolenaar" URL: https://foldling.org/vim/syntax/chicken.vim 87254067eSBram Moolenaar" Notes: This is supplemental syntax, to be loaded after the core Scheme 97254067eSBram Moolenaar" syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1 107254067eSBram Moolenaar" and filetype=scheme. 117254067eSBram Moolenaar 127254067eSBram Moolenaar" Only to be used on top of the Scheme syntax. 137254067eSBram Moolenaarif !exists('b:did_scheme_syntax') 147254067eSBram Moolenaar finish 157254067eSBram Moolenaarendif 167254067eSBram Moolenaar 177254067eSBram Moolenaar" Lighten parentheses. 18b5b75624SBram Moolenaarhi! def link schemeParentheses Comment 197254067eSBram Moolenaar 207254067eSBram Moolenaar" foo#bar 217254067eSBram Moolenaarsyn match schemeExtraSyntax /[^ #'`\t\n()\[\]"|;]\+#[^ '`\t\n()\[\]"|;]\+/ 227254067eSBram Moolenaar 237254067eSBram Moolenaar" ##foo#bar 247254067eSBram Moolenaarsyn match schemeExtraSyntax /##[^ '`\t\n()\[\]"|;]\+/ 257254067eSBram Moolenaar 267254067eSBram Moolenaar" Heredocs. 277254067eSBram Moolenaarsyn region schemeString start=/#<[<#]\s*\z(.*\)/ end=/^\z1$/ 287254067eSBram Moolenaar 297254067eSBram Moolenaar" Keywords. 307254067eSBram Moolenaarsyn match schemeKeyword /#[!:][a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+/ 317254067eSBram Moolenaarsyn match schemeKeyword /[a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+:\>/ 327254067eSBram Moolenaar 337254067eSBram Moolenaar" C/C++ syntax. 347254067eSBram Moolenaarlet s:c = globpath(&rtp, 'syntax/cpp.vim', 0, 1) 357254067eSBram Moolenaarif len(s:c) 367254067eSBram Moolenaar exe 'syn include @c ' s:c[0] 377254067eSBram Moolenaar syn region c matchgroup=schemeComment start=/#>/ end=/<#/ contains=@c 387254067eSBram Moolenaarendif 397254067eSBram Moolenaar 40*6e649224SBram Moolenaar" SRFI 26 416aa57295SBram Moolenaarsyn match schemeSyntax /\(([ \t\n]*\)\@<=\(cut\|cute\)\>/ 426aa57295SBram Moolenaar 436aa57295SBram Moolenaarsyn keyword schemeSyntax and-let* 447254067eSBram Moolenaarsyn keyword schemeSyntax define-record 456aa57295SBram Moolenaarsyn keyword schemeSyntax set!-values 466aa57295SBram Moolenaarsyn keyword schemeSyntax fluid-let 476aa57295SBram Moolenaarsyn keyword schemeSyntax let-optionals 486aa57295SBram Moolenaarsyn keyword schemeSyntax let-optionals* 496aa57295SBram Moolenaarsyn keyword schemeSyntax letrec-values 506aa57295SBram Moolenaarsyn keyword schemeSyntax nth-value 516aa57295SBram Moolenaarsyn keyword schemeSyntax receive 527254067eSBram Moolenaar 537254067eSBram Moolenaarsyn keyword schemeLibrarySyntax declare 546aa57295SBram Moolenaarsyn keyword schemeLibrarySyntax define-interface 556aa57295SBram Moolenaarsyn keyword schemeLibrarySyntax functor 566aa57295SBram Moolenaarsyn keyword schemeLibrarySyntax include-relative 577254067eSBram Moolenaarsyn keyword schemeLibrarySyntax module 587254067eSBram Moolenaarsyn keyword schemeLibrarySyntax reexport 597254067eSBram Moolenaarsyn keyword schemeLibrarySyntax require-library 607254067eSBram Moolenaar 617254067eSBram Moolenaarsyn keyword schemeTypeSyntax --> 627254067eSBram Moolenaarsyn keyword schemeTypeSyntax -> 637254067eSBram Moolenaarsyn keyword schemeTypeSyntax : 647254067eSBram Moolenaarsyn keyword schemeTypeSyntax assume 657254067eSBram Moolenaarsyn keyword schemeTypeSyntax compiler-typecase 667254067eSBram Moolenaarsyn keyword schemeTypeSyntax define-specialization 677254067eSBram Moolenaarsyn keyword schemeTypeSyntax define-type 687254067eSBram Moolenaarsyn keyword schemeTypeSyntax the 697254067eSBram Moolenaar 707254067eSBram Moolenaarsyn keyword schemeExtraSyntax match 717254067eSBram Moolenaarsyn keyword schemeExtraSyntax match-lambda 727254067eSBram Moolenaarsyn keyword schemeExtraSyntax match-lambda* 736aa57295SBram Moolenaarsyn keyword schemeExtraSyntax match-let 746aa57295SBram Moolenaarsyn keyword schemeExtraSyntax match-let* 756aa57295SBram Moolenaarsyn keyword schemeExtraSyntax match-letrec 767254067eSBram Moolenaar 777254067eSBram Moolenaarsyn keyword schemeSpecialSyntax define-compiler-syntax 787254067eSBram Moolenaarsyn keyword schemeSpecialSyntax define-constant 797254067eSBram Moolenaarsyn keyword schemeSpecialSyntax define-external 807254067eSBram Moolenaarsyn keyword schemeSpecialSyntax define-inline 817254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-code 827254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-declare 837254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-lambda 847254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-lambda* 857254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-primitive 867254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-safe-lambda 877254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-safe-lambda* 887254067eSBram Moolenaarsyn keyword schemeSpecialSyntax foreign-value 897254067eSBram Moolenaar 907254067eSBram Moolenaarsyn keyword schemeSyntaxSyntax begin-for-syntax 917254067eSBram Moolenaarsyn keyword schemeSyntaxSyntax define-for-syntax 927254067eSBram Moolenaarsyn keyword schemeSyntaxSyntax er-macro-transformer 937254067eSBram Moolenaarsyn keyword schemeSyntaxSyntax ir-macro-transformer 947254067eSBram Moolenaarsyn keyword schemeSyntaxSyntax require-library-for-syntax 95