1" Vim syntax file 2" Language: Scheme (CHICKEN) 3" Last Change: 2021 Oct 01 4" Author: Evan Hanson <[email protected]> 5" Maintainer: Evan Hanson <[email protected]> 6" Repository: https://git.foldling.org/vim-scheme.git 7" URL: https://foldling.org/vim/syntax/chicken.vim 8" Notes: This is supplemental syntax, to be loaded after the core Scheme 9" syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1 10" and filetype=scheme. 11 12" Only to be used on top of the Scheme syntax. 13if !exists('b:did_scheme_syntax') 14 finish 15endif 16 17" Lighten parentheses. 18hi! def link schemeParentheses Comment 19 20" foo#bar 21syn match schemeExtraSyntax /[^ #'`\t\n()\[\]"|;]\+#[^ '`\t\n()\[\]"|;]\+/ 22 23" ##foo#bar 24syn match schemeExtraSyntax /##[^ '`\t\n()\[\]"|;]\+/ 25 26" Heredocs. 27syn region schemeString start=/#<[<#]\s*\z(.*\)/ end=/^\z1$/ 28 29" Keywords. 30syn match schemeKeyword /#[!:][a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+/ 31syn match schemeKeyword /[a-zA-Z0-9!$%&*+-./:<=>?@^_~#]\+:\>/ 32 33" C/C++ syntax. 34let s:c = globpath(&rtp, 'syntax/cpp.vim', 0, 1) 35if len(s:c) 36 exe 'syn include @c ' s:c[0] 37 syn region c matchgroup=schemeComment start=/#>/ end=/<#/ contains=@c 38endif 39 40" SRFI 26 41syn match schemeSyntax /\(([ \t\n]*\)\@<=\(cut\|cute\)\>/ 42 43syn keyword schemeSyntax and-let* 44syn keyword schemeSyntax define-record 45syn keyword schemeSyntax set!-values 46syn keyword schemeSyntax fluid-let 47syn keyword schemeSyntax let-optionals 48syn keyword schemeSyntax let-optionals* 49syn keyword schemeSyntax letrec-values 50syn keyword schemeSyntax nth-value 51syn keyword schemeSyntax receive 52 53syn keyword schemeLibrarySyntax declare 54syn keyword schemeLibrarySyntax define-interface 55syn keyword schemeLibrarySyntax functor 56syn keyword schemeLibrarySyntax include-relative 57syn keyword schemeLibrarySyntax module 58syn keyword schemeLibrarySyntax reexport 59syn keyword schemeLibrarySyntax require-library 60 61syn keyword schemeTypeSyntax --> 62syn keyword schemeTypeSyntax -> 63syn keyword schemeTypeSyntax : 64syn keyword schemeTypeSyntax assume 65syn keyword schemeTypeSyntax compiler-typecase 66syn keyword schemeTypeSyntax define-specialization 67syn keyword schemeTypeSyntax define-type 68syn keyword schemeTypeSyntax the 69 70syn keyword schemeExtraSyntax match 71syn keyword schemeExtraSyntax match-lambda 72syn keyword schemeExtraSyntax match-lambda* 73syn keyword schemeExtraSyntax match-let 74syn keyword schemeExtraSyntax match-let* 75syn keyword schemeExtraSyntax match-letrec 76 77syn keyword schemeSpecialSyntax define-compiler-syntax 78syn keyword schemeSpecialSyntax define-constant 79syn keyword schemeSpecialSyntax define-external 80syn keyword schemeSpecialSyntax define-inline 81syn keyword schemeSpecialSyntax foreign-code 82syn keyword schemeSpecialSyntax foreign-declare 83syn keyword schemeSpecialSyntax foreign-lambda 84syn keyword schemeSpecialSyntax foreign-lambda* 85syn keyword schemeSpecialSyntax foreign-primitive 86syn keyword schemeSpecialSyntax foreign-safe-lambda 87syn keyword schemeSpecialSyntax foreign-safe-lambda* 88syn keyword schemeSpecialSyntax foreign-value 89 90syn keyword schemeSyntaxSyntax begin-for-syntax 91syn keyword schemeSyntaxSyntax define-for-syntax 92syn keyword schemeSyntaxSyntax er-macro-transformer 93syn keyword schemeSyntaxSyntax ir-macro-transformer 94syn keyword schemeSyntaxSyntax require-library-for-syntax 95