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