3 * Description: Scheme programming language.
4 * Author: Markku Rossi <mtr@iki.fi>
7 state scheme extends HighlightEntry
11 * Modify regexp character syntax so that we can distinguish all
14 extras = list ('!', '$', '%', '&', '*', '/', ':', '<',
15 '=', '>', '?', '~', '^', '.', '+', '-');
16 for (i = 0; i < length (extras); i = i + 1)
17 regexp_syntax (extras[i], 'w');
28 /* String constants. */
37 /(\([ \t]*)(define)([ \t]+\(?)([!\$%&\*\/:<=>\?~_^a-zA-Z][!\$%&\*\/:<=>\?~_^a-zA-Z0-9.+\-]*)/ {
38 /* Starting garbage. */
41 /* Keyword `define'. */
50 function_name_face (true);
52 function_name_face (false);
55 /* ':'-names, Emacs highlights these, so do we. */
56 /([ \t])(:[!\$%&\*\/:<=>\?~_^a-zA-Z0-9.+\-]*)/ {
58 reference_face (true);
60 reference_face (false);
65 (build-re '(else define unquote unquote-splicing quote lambda
66 if begin cond and or case let let* letrec do delay quasiquote))
68 /=>|\bset!|\b(and|begin|c(ase|ond)|d(e(fine|lay)|o)|else|if\
69 |l(ambda|et(|\*|rec))|or|qu(asiquote|ote)|unquote(|-splicing))\b/ {