blob: 958fc1f3618db5296ed76c5e3befa5917c1c1f43 [file] [log] [blame]
Bram Moolenaar72540672018-02-09 22:00:53 +01001" Vim syntax file
Evan Hanson17e0a192024-06-21 07:37:49 +02002" 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.
Bram Moolenaar72540672018-02-09 22:00:53 +010011
12" Only to be used on top of the Scheme syntax.
13if !exists('b:did_scheme_syntax')
14 finish
15endif
16
17" Lighten parentheses.
Bram Moolenaarb5b75622018-03-09 22:22:21 +010018hi! def link schemeParentheses Comment
Bram Moolenaar72540672018-02-09 22:00:53 +010019
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
Bram Moolenaar6e649222021-10-04 21:32:54 +010040" SRFI 26
Bram Moolenaar6aa57292021-08-14 21:25:52 +020041syn match schemeSyntax /\(([ \t\n]*\)\@<=\(cut\|cute\)\>/
42
43syn keyword schemeSyntax and-let*
Bram Moolenaar72540672018-02-09 22:00:53 +010044syn keyword schemeSyntax define-record
Bram Moolenaar6aa57292021-08-14 21:25:52 +020045syn 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
Bram Moolenaar72540672018-02-09 22:00:53 +010052
53syn keyword schemeLibrarySyntax declare
Bram Moolenaar6aa57292021-08-14 21:25:52 +020054syn keyword schemeLibrarySyntax define-interface
55syn keyword schemeLibrarySyntax functor
56syn keyword schemeLibrarySyntax include-relative
Bram Moolenaar72540672018-02-09 22:00:53 +010057syn 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
Bram Moolenaar72540672018-02-09 22:00:53 +010070syn keyword schemeExtraSyntax match
71syn keyword schemeExtraSyntax match-lambda
72syn keyword schemeExtraSyntax match-lambda*
Bram Moolenaar6aa57292021-08-14 21:25:52 +020073syn keyword schemeExtraSyntax match-let
74syn keyword schemeExtraSyntax match-let*
75syn keyword schemeExtraSyntax match-letrec
Bram Moolenaar72540672018-02-09 22:00:53 +010076
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