chicken.vim 3.2 KB

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