blob: f98703446ee971250f0cc5e4495bb142a3eed3ad [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar5c736222010-01-06 20:54:52 +01002" Language: Scheme (R5RS + some R6RS extras)
3" Last Change: 2009 Nov 27
Bram Moolenaar293ee4d2004-12-09 21:34:53 +00004" Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
Bram Moolenaar21cf8232004-07-16 20:18:37 +00005" Original author: Dirk van Deun <dirk@igwe.vub.ac.be>
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" This script incorrectly recognizes some junk input as numerals:
8" parsing the complete system of Scheme numerals using the pattern
9" language is practically impossible: I did a lax approximation.
Bram Moolenaar21cf8232004-07-16 20:18:37 +000010
11" MzScheme extensions can be activated with setting is_mzscheme variable
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
13" Suggestions and bug reports are solicited by the author.
14
15" Initializing:
16
17" For version 5.x: Clear all syntax items
18" For version 6.x: Quit when a syntax file was already loaded
19if version < 600
20 syntax clear
21elseif exists("b:current_syntax")
22 finish
23endif
24
25syn case ignore
26
27" Fascist highlighting: everything that doesn't fit the rules is an error...
28
Bram Moolenaar5c736222010-01-06 20:54:52 +010029syn match schemeError ![^ \t()\[\]";]*!
30syn match schemeError ")"
Bram Moolenaar071d4272004-06-13 20:20:40 +000031
32" Quoted and backquoted stuff
33
Bram Moolenaar21cf8232004-07-16 20:18:37 +000034syn region schemeQuoted matchgroup=Delimiter start="['`]" end=![ \t()\[\]";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
Bram Moolenaar071d4272004-06-13 20:20:40 +000035
36syn region schemeQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
37syn region schemeQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
38
39syn region schemeStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
40syn region schemeStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
41
Bram Moolenaar21cf8232004-07-16 20:18:37 +000042" Popular Scheme extension:
43" using [] as well as ()
44syn region schemeStrucRestricted matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
45syn region schemeStrucRestricted matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
Bram Moolenaar071d4272004-06-13 20:20:40 +000046
Bram Moolenaar21cf8232004-07-16 20:18:37 +000047syn region schemeUnquote matchgroup=Delimiter start="," end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
48syn region schemeUnquote matchgroup=Delimiter start=",@" end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
49
50syn region schemeUnquote matchgroup=Delimiter start=",(" end=")" contains=ALL
51syn region schemeUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000052
53syn region schemeUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
54syn region schemeUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
55
Bram Moolenaar21cf8232004-07-16 20:18:37 +000056syn region schemeUnquote matchgroup=Delimiter start=",\[" end="\]" contains=ALL
57syn region schemeUnquote matchgroup=Delimiter start=",@\[" end="\]" contains=ALL
58
59syn region schemeUnquote matchgroup=Delimiter start=",#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
60syn region schemeUnquote matchgroup=Delimiter start=",@#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
61
Bram Moolenaar071d4272004-06-13 20:20:40 +000062" R5RS Scheme Functions and Syntax:
63
64if version < 600
65 set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
66else
67 setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
68endif
69
70syn keyword schemeSyntax lambda and or if cond case define let let* letrec
71syn keyword schemeSyntax begin do delay set! else =>
72syn keyword schemeSyntax quote quasiquote unquote unquote-splicing
73syn keyword schemeSyntax define-syntax let-syntax letrec-syntax syntax-rules
Bram Moolenaar5c736222010-01-06 20:54:52 +010074" R6RS
75syn keyword schemeSyntax define-record-type fields protocol
Bram Moolenaar071d4272004-06-13 20:20:40 +000076
77syn keyword schemeFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car!
78syn keyword schemeFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr
79syn keyword schemeFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr
80syn keyword schemeFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr
81syn keyword schemeFunc cddaar cddadr cdddar cddddr null? list? list length
82syn keyword schemeFunc append reverse list-ref memq memv member assq assv assoc
83syn keyword schemeFunc symbol? symbol->string string->symbol number? complex?
84syn keyword schemeFunc real? rational? integer? exact? inexact? = < > <= >=
85syn keyword schemeFunc zero? positive? negative? odd? even? max min + * - / abs
86syn keyword schemeFunc quotient remainder modulo gcd lcm numerator denominator
87syn keyword schemeFunc floor ceiling truncate round rationalize exp log sin cos
88syn keyword schemeFunc tan asin acos atan sqrt expt make-rectangular make-polar
89syn keyword schemeFunc real-part imag-part magnitude angle exact->inexact
90syn keyword schemeFunc inexact->exact number->string string->number char=?
91syn keyword schemeFunc char-ci=? char<? char-ci<? char>? char-ci>? char<=?
92syn keyword schemeFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char?
93syn keyword schemeFunc char-numeric? char-whitespace? char-upper-case?
94syn keyword schemeFunc char-lower-case?
95syn keyword schemeFunc char->integer integer->char char-upcase char-downcase
96syn keyword schemeFunc string? make-string string string-length string-ref
97syn keyword schemeFunc string-set! string=? string-ci=? string<? string-ci<?
98syn keyword schemeFunc string>? string-ci>? string<=? string-ci<=? string>=?
99syn keyword schemeFunc string-ci>=? substring string-append vector? make-vector
100syn keyword schemeFunc vector vector-length vector-ref vector-set! procedure?
101syn keyword schemeFunc apply map for-each call-with-current-continuation
102syn keyword schemeFunc call-with-input-file call-with-output-file input-port?
103syn keyword schemeFunc output-port? current-input-port current-output-port
104syn keyword schemeFunc open-input-file open-output-file close-input-port
105syn keyword schemeFunc close-output-port eof-object? read read-char peek-char
106syn keyword schemeFunc write display newline write-char call/cc
107syn keyword schemeFunc list-tail string->list list->string string-copy
108syn keyword schemeFunc string-fill! vector->list list->vector vector-fill!
109syn keyword schemeFunc force with-input-from-file with-output-to-file
110syn keyword schemeFunc char-ready? load transcript-on transcript-off eval
111syn keyword schemeFunc dynamic-wind port? values call-with-values
112syn keyword schemeFunc scheme-report-environment null-environment
113syn keyword schemeFunc interaction-environment
Bram Moolenaar5c736222010-01-06 20:54:52 +0100114" R6RS
115syn keyword schemeFunc make-eq-hashtable make-eqv-hashtable make-hashtable
116syn keyword schemeFunc hashtable? hashtable-size hashtable-ref hashtable-set!
117syn keyword schemeFunc hashtable-delete! hashtable-contains? hashtable-update!
118syn keyword schemeFunc hashtable-copy hashtable-clear! hashtable-keys
119syn keyword schemeFunc hashtable-entries hashtable-equivalence-function hashtable-hash-function
120syn keyword schemeFunc hashtable-mutable? equal-hash string-hash string-ci-hash symbol-hash
121syn keyword schemeFunc find for-all exists filter partition fold-left fold-right
122syn keyword schemeFunc remp remove remv remq memp assp cons*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123
Bram Moolenaar071d4272004-06-13 20:20:40 +0000124" ... so that a single + or -, inside a quoted context, would not be
125" interpreted as a number (outside such contexts, it's a schemeFunc)
126
Bram Moolenaar5c736222010-01-06 20:54:52 +0100127syn match schemeDelimiter !\.[ \t\[\]()";]!me=e-1
128syn match schemeDelimiter !\.$!
Bram Moolenaar071d4272004-06-13 20:20:40 +0000129" ... and a single dot is not a number but a delimiter
130
Bram Moolenaar071d4272004-06-13 20:20:40 +0000131" This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
132
Bram Moolenaar5c736222010-01-06 20:54:52 +0100133syn match schemeOther ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
134syn match schemeError ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000135
Bram Moolenaar5c736222010-01-06 20:54:52 +0100136syn match schemeOther "\.\.\."
137syn match schemeError !\.\.\.[^ \t\[\]()";]\+!
Bram Moolenaar071d4272004-06-13 20:20:40 +0000138" ... a special identifier
139
Bram Moolenaar5c736222010-01-06 20:54:52 +0100140syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*[ \t\[\]()";],me=e-1
141syn match schemeConstant ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]\+\*$,
142syn match schemeError ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000143
Bram Moolenaar5c736222010-01-06 20:54:52 +0100144syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
145syn match schemeConstant ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
146syn match schemeError ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000147
148" Non-quoted lists, and strings:
149
150syn region schemeStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL
151syn region schemeStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL
152
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000153syn region schemeStruc matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALL
154syn region schemeStruc matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALL
155
156" Simple literals:
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000157syn region schemeString start=+\%(\\\)\@<!"+ skip=+\\[\\"]+ end=+"+
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158
159" Comments:
160
161syn match schemeComment ";.*$"
162
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000163
164" Writing out the complete description of Scheme numerals without
165" using variables is a day's work for a trained secretary...
166
Bram Moolenaar5c736222010-01-06 20:54:52 +0100167syn match schemeOther ![+-][ \t\[\]()";]!me=e-1
168syn match schemeOther ![+-]$!
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000169"
170" This is a useful lax approximation:
Bram Moolenaar5c736222010-01-06 20:54:52 +0100171syn match schemeNumber "[-#+.]\=[0-9][-#+/0-9a-f@i.boxesfdl]*"
172syn match schemeError ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*!
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000173
Bram Moolenaar5c736222010-01-06 20:54:52 +0100174syn match schemeBoolean "#[tf]"
175syn match schemeError !#[tf][^ \t\[\]()";]\+!
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000176
Bram Moolenaar5c736222010-01-06 20:54:52 +0100177syn match schemeCharacter "#\\"
178syn match schemeCharacter "#\\."
179syn match schemeError !#\\.[^ \t\[\]()";]\+!
180syn match schemeCharacter "#\\space"
181syn match schemeError !#\\space[^ \t\[\]()";]\+!
182syn match schemeCharacter "#\\newline"
183syn match schemeError !#\\newline[^ \t\[\]()";]\+!
184
185" R6RS
186syn match schemeCharacter "#\\x[0-9a-fA-F]\+"
187
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000188
189if exists("b:is_mzscheme") || exists("is_mzscheme")
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000190 " MzScheme extensions
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000191 " multiline comment
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000192 syn region schemeComment start="#|" end="|#"
193
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000194 " #%xxx are the special MzScheme identifiers
Bram Moolenaar5c736222010-01-06 20:54:52 +0100195 syn match schemeOther "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000196 " anything limited by |'s is identifier
Bram Moolenaar5c736222010-01-06 20:54:52 +0100197 syn match schemeOther "|[^|]\+|"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000198
Bram Moolenaar5c736222010-01-06 20:54:52 +0100199 syn match schemeCharacter "#\\\%(return\|tab\)"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000200
201 " Modules require stmt
202 syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename
203 " modules provide stmt
204 syn keyword schemeExtSyntax provide struct all-from all-from-except all-defined all-defined-except
205 " Other from MzScheme
206 syn keyword schemeExtSyntax with-handlers when unless instantiate define-struct case-lambda syntax-case
207 syn keyword schemeExtSyntax free-identifier=? bound-identifier=? module-identifier=? syntax-object->datum
208 syn keyword schemeExtSyntax datum->syntax-object
209 syn keyword schemeExtSyntax let-values let*-values letrec-values set!-values fluid-let parameterize begin0
210 syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature
211 syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export
212 syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000213
214 syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker
215 syn keyword schemeExtFunc use-standard-linker use-standard-compiler
216 syn keyword schemeExtFunc find-executable-path append-object-suffix append-extension-suffix
217 syn keyword schemeExtFunc current-library-collection-paths current-extension-compiler-flags make-parameter
218 syn keyword schemeExtFunc current-directory build-path normalize-path current-extension-linker-flags
219 syn keyword schemeExtFunc file-exists? directory-exists? delete-directory/files delete-directory delete-file
220 syn keyword schemeExtFunc system compile-file system-library-subpath getenv putenv current-standard-link-libraries
221 syn keyword schemeExtFunc remove* file-size find-files fold-files directory-list shell-execute split-path
222 syn keyword schemeExtFunc current-error-port process/ports process printf fprintf open-input-string open-output-string
223 syn keyword schemeExtFunc get-output-string
224 " exceptions
225 syn keyword schemeExtFunc exn exn:application:arity exn:application:continuation exn:application:fprintf:mismatch
226 syn keyword schemeExtFunc exn:application:mismatch exn:application:type exn:application:mismatch exn:break exn:i/o:filesystem exn:i/o:port
227 syn keyword schemeExtFunc exn:i/o:port:closed exn:i/o:tcp exn:i/o:udp exn:misc exn:misc:application exn:misc:unsupported exn:module exn:read
228 syn keyword schemeExtFunc exn:read:non-char exn:special-comment exn:syntax exn:thread exn:user exn:variable exn:application:mismatch
229 syn keyword schemeExtFunc exn? exn:application:arity? exn:application:continuation? exn:application:fprintf:mismatch? exn:application:mismatch?
230 syn keyword schemeExtFunc exn:application:type? exn:application:mismatch? exn:break? exn:i/o:filesystem? exn:i/o:port? exn:i/o:port:closed?
231 syn keyword schemeExtFunc exn:i/o:tcp? exn:i/o:udp? exn:misc? exn:misc:application? exn:misc:unsupported? exn:module? exn:read? exn:read:non-char?
232 syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch?
233 " Command-line parsing
234 syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000235
236 " syntax quoting, unquoting and quasiquotation
237 syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL
238 syn region schemeUnquote matchgroup=Delimiter start="#,@" end=![ \t\[\]()";]!me=e-1 contains=ALL
239 syn region schemeUnquote matchgroup=Delimiter start="#,(" end=")" contains=ALL
240 syn region schemeUnquote matchgroup=Delimiter start="#,@(" end=")" contains=ALL
241 syn region schemeUnquote matchgroup=Delimiter start="#,\[" end="\]" contains=ALL
242 syn region schemeUnquote matchgroup=Delimiter start="#,@\[" end="\]" contains=ALL
243 syn region schemeQuoted matchgroup=Delimiter start="#['`]" end=![ \t()\[\]";]!me=e-1 contains=ALL
244 syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL
245endif
246
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +0000247
248if exists("b:is_chicken") || exists("is_chicken")
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000249 " multiline comment
250 syntax region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment
251
Bram Moolenaar5c736222010-01-06 20:54:52 +0100252 syn match schemeOther "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
253 syn match schemeExtSyntax "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +0000254
255 syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000256 syn keyword schemeExtSyntax foreign-lambda foreign-lambda* define-external define-macro load-library
257 syn keyword schemeExtSyntax let-values let*-values letrec-values ->string require-extension
258 syn keyword schemeExtSyntax let-optionals let-optionals* define-foreign-variable define-record
259 syn keyword schemeExtSyntax pointer tag-pointer tagged-pointer? define-foreign-type
260 syn keyword schemeExtSyntax require require-for-syntax cond-expand and-let* receive argc+argv
261 syn keyword schemeExtSyntax fixnum? fx= fx> fx< fx>= fx<= fxmin fxmax
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +0000262 syn keyword schemeExtFunc ##core#inline ##sys#error ##sys#update-errno
263
264 " here-string
265 syn region schemeString start=+#<<\s*\z(.*\)+ end=+^\z1$+
266
267 if filereadable(expand("<sfile>:p:h")."/cpp.vim")
268 unlet! b:current_syntax
269 syn include @ChickenC <sfile>:p:h/cpp.vim
270 syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-declare "+ end=+")\@=+ contains=@ChickenC
271 syn region ChickenC matchgroup=schemeComment start=+foreign-declare\s*#<<\z(.*\)$+hs=s+15 end=+^\z1$+ contains=@ChickenC
272 syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse "+ end=+")\@=+ contains=@ChickenC
273 syn region ChickenC matchgroup=schemeComment start=+foreign-parse\s*#<<\z(.*\)$+hs=s+13 end=+^\z1$+ contains=@ChickenC
274 syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse/spec "+ end=+")\@=+ contains=@ChickenC
275 syn region ChickenC matchgroup=schemeComment start=+foreign-parse/spec\s*#<<\z(.*\)$+hs=s+18 end=+^\z1$+ contains=@ChickenC
276 syn region ChickenC matchgroup=schemeComment start=+#>+ end=+<#+ contains=@ChickenC
277 syn region ChickenC matchgroup=schemeComment start=+#>?+ end=+<#+ contains=@ChickenC
278 syn region ChickenC matchgroup=schemeComment start=+#>!+ end=+<#+ contains=@ChickenC
279 syn region ChickenC matchgroup=schemeComment start=+#>\$+ end=+<#+ contains=@ChickenC
280 syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC
281 endif
282
Bram Moolenaara7241f52008-06-24 20:39:31 +0000283 " suggested by Alex Queiroz
Bram Moolenaar5c736222010-01-06 20:54:52 +0100284 syn match schemeExtSyntax "#![-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
Bram Moolenaara7241f52008-06-24 20:39:31 +0000285 syn region schemeString start=+#<#\s*\z(.*\)+ end=+^\z1$+
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +0000286endif
287
Bram Moolenaar071d4272004-06-13 20:20:40 +0000288" Synchronization and the wrapping up...
289
290syn sync match matchPlace grouphere NONE "^[^ \t]"
291" ... i.e. synchronize on a line that starts at the left margin
292
293" Define the default highlighting.
294" For version 5.7 and earlier: only when not done already
295" For version 5.8 and later: only when an item doesn't have highlighting yet
296if version >= 508 || !exists("did_scheme_syntax_inits")
297 if version < 508
298 let did_scheme_syntax_inits = 1
299 command -nargs=+ HiLink hi link <args>
300 else
301 command -nargs=+ HiLink hi def link <args>
302 endif
303
304 HiLink schemeSyntax Statement
305 HiLink schemeFunc Function
306
307 HiLink schemeString String
Bram Moolenaar5c736222010-01-06 20:54:52 +0100308 HiLink schemeCharacter Character
Bram Moolenaar071d4272004-06-13 20:20:40 +0000309 HiLink schemeNumber Number
310 HiLink schemeBoolean Boolean
311
312 HiLink schemeDelimiter Delimiter
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +0000313 HiLink schemeConstant Constant
Bram Moolenaar071d4272004-06-13 20:20:40 +0000314
315 HiLink schemeComment Comment
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000316 HiLink schemeMultilineComment Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000317 HiLink schemeError Error
318
Bram Moolenaar3fdfa4a2004-10-07 21:02:47 +0000319 HiLink schemeExtSyntax Type
320 HiLink schemeExtFunc PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000321 delcommand HiLink
322endif
323
324let b:current_syntax = "scheme"