1
1
" Vim syntax file
2
2
" Language: Scheme
3
- " Last Change: 2021-07-04
3
+ " Last Change: 2021-07-09
4
4
" Author: Mitsuhiro Nakamura <m.nacamura@gmail.com>
5
5
" URL: https://github.com/mnacamura/vim-r7rs-syntax
6
6
" License: MIT
@@ -9,9 +9,53 @@ if !exists('b:did_r7rs_syntax')
9
9
finish
10
10
endif
11
11
12
+ " Options {{{1
13
+
14
+ " If (b|g):r7rs_strict is true, the following options are set to obey strict R7RS.
15
+ if r7rs#GetOption (' strict' , 0 )
16
+ let s: brackets_as_parens = 0
17
+ let s: braces_as_parens = 0
18
+ else
19
+ let s: more_parens = r7rs#GetOption (' more_parens' , ' ]' )
20
+ let s: brackets_as_parens = match (s: more_parens , ' [\[\]]' ) > -1
21
+ let s: braces_as_parens = match (s: more_parens , ' [{}]' ) > -1
22
+ unlet s: more_parens
23
+ endif
24
+
25
+ " }}}
26
+
12
27
" SRFI 2 {{{1
13
28
syn keyword r7rsSyntax and- let*
14
29
30
+ " SRFI-7 {{{1
31
+ syn region r7rsProgram matchgroup =r7rsDelimiter start =/ (\z e[[:space:]\n ]*program\> / end =/ )/ contains =r7rsError,@r7rsComments,r7rsProgramSyntax,r7rsProgramClause
32
+ syn keyword r7rsProgramSyntax contained program and or not
33
+ syn keyword r7rsProgramSyntaxA contained requires files code feature- cond
34
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ (\z e[[:space:]\n ]*requires\> / end =/ )/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsCEFeatureId
35
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ (\z e[[:space:]\n ]*files\> / end =/ )/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsString
36
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ (\z e[[:space:]\n ]*code\> / end =/ )/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,@r7rsData,@r7rsExpressions
37
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ (\z e[[:space:]\n ]*feature-cond\> / end =/ )/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsProgramFCClause,r7rsProgramClause
38
+ syn region r7rsProgramFCClause matchgroup =r7rsDelimiter start =/ (/ end =/ )/ contained contains =r7rsError,@r7rsComments,@r7rsProgramFCRequirements,r7rsProgramClause
39
+ syn cluster r7rsProgramFCRequirements contains =r7rsCEFeatureId,r7rsProgramFCRequirementsAON,r7rsFCRequirementsElse
40
+ syn region r7rsProgramFCRequirementsAON matchgroup =r7rsDelimiter start =/ (\z e[[:space:]\n ]*\% (and\| or\| not\) / end =/ )/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntax,@r7rsProgramFCRequirements
41
+ syn keyword r7rsProgramFCRequirementsElse contained else
42
+ if s: brackets_as_parens
43
+ syn region r7rsProgram matchgroup =r7rsDelimiter start =/ \[\z e[[:space:]\n ]*program/ end =/ \] / contains =r7rsError,@r7rsComments,r7rsProgramSyntax,r7rsProgramClause
44
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ \[\z e[[:space:]\n ]*requires/ end =/ \] / contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsCEFeatureId
45
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ \[\z e[[:space:]\n ]*files/ end =/ \] / contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsString
46
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ \[\z e[[:space:]\n ]*code/ end =/ \] / contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,@r7rsExpressions
47
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ \[\z e[[:space:]\n ]*feature-cond/ end =/ \] / contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsProgramFCClause
48
+ syn region r7rsProgramFCClause matchgroup =r7rsDelimiter start =/ \[ / end =/ \] / contained contains =r7rsError,@r7rsComments,@r7rsProgramFCRequirements,r7rsProgramClause
49
+ endif
50
+ if s: braces_as_parens
51
+ syn region r7rsProgram matchgroup =r7rsDelimiter start =/ {\z e[[:space:]\n ]*program/ end =/ }/ contains =r7rsError,@r7rsComments,r7rsProgramSyntax,r7rsProgramClause
52
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ {\z e[[:space:]\n ]*requires/ end =/ }/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsCEFeatureId
53
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ {\z e[[:space:]\n ]*files/ end =/ }/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsString
54
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ {\z e[[:space:]\n ]*code/ end =/ }/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,@r7rsExpressions
55
+ syn region r7rsProgramClause matchgroup =r7rsDelimiter start =/ {\z e[[:space:]\n ]*feature-cond/ end =/ }/ contained contains =r7rsError,@r7rsComments,r7rsProgramSyntaxA,r7rsProgramFCClause
56
+ syn region r7rsProgramFCClause matchgroup =r7rsDelimiter start =/ {/ end =/ }/ contained contains =r7rsError,@r7rsComments,@r7rsProgramFCRequirements,r7rsProgramClause
57
+ endif
58
+
15
59
" SRFI 8 {{{1
16
60
syn keyword r7rsSyntax receive
17
61
@@ -95,6 +139,9 @@ syn keyword r7rsFunction string-replicate string-segment string-split
95
139
" Highlights {{{1
96
140
97
141
hi def link r7rsShebang r7rsComment
142
+ hi def link r7rsProgramSyntax r7rsLibrarySyntax
143
+ hi def link r7rsProgramSyntaxA r7rsLibrarySyntaxA
144
+ hi def link r7rsProgramFCRequirementsElse r7rsProgramSyntaxA
98
145
99
146
" }}}
100
147
0 commit comments