xref: /vim-8.2.3635/runtime/syntax/chicken.vim (revision 6e649224)
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