Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 1 | " Vim syntax file |
Evan Hanson | 17e0a19 | 2024-06-21 07:37:49 +0200 | [diff] [blame] | 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. |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 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. |
Bram Moolenaar | b5b7562 | 2018-03-09 22:22:21 +0100 | [diff] [blame] | 18 | hi! def link schemeParentheses Comment |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 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 | |
Bram Moolenaar | 6e64922 | 2021-10-04 21:32:54 +0100 | [diff] [blame] | 40 | " SRFI 26 |
Bram Moolenaar | 6aa5729 | 2021-08-14 21:25:52 +0200 | [diff] [blame] | 41 | syn match schemeSyntax /\(([ \t\n]*\)\@<=\(cut\|cute\)\>/ |
| 42 | |
| 43 | syn keyword schemeSyntax and-let* |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 44 | syn keyword schemeSyntax define-record |
Bram Moolenaar | 6aa5729 | 2021-08-14 21:25:52 +0200 | [diff] [blame] | 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 |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 52 | |
| 53 | syn keyword schemeLibrarySyntax declare |
Bram Moolenaar | 6aa5729 | 2021-08-14 21:25:52 +0200 | [diff] [blame] | 54 | syn keyword schemeLibrarySyntax define-interface |
| 55 | syn keyword schemeLibrarySyntax functor |
| 56 | syn keyword schemeLibrarySyntax include-relative |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 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 | |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 70 | syn keyword schemeExtraSyntax match |
| 71 | syn keyword schemeExtraSyntax match-lambda |
| 72 | syn keyword schemeExtraSyntax match-lambda* |
Bram Moolenaar | 6aa5729 | 2021-08-14 21:25:52 +0200 | [diff] [blame] | 73 | syn keyword schemeExtraSyntax match-let |
| 74 | syn keyword schemeExtraSyntax match-let* |
| 75 | syn keyword schemeExtraSyntax match-letrec |
Bram Moolenaar | 7254067 | 2018-02-09 22:00:53 +0100 | [diff] [blame] | 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 |