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