refractor
Version:
Lightweight, robust, elegant virtual syntax highlighting using Prism
37 lines (35 loc) • 1.1 kB
JavaScript
module.exports = scheme;
scheme.displayName = 'scheme';
scheme.aliases = [];
function scheme(Prism) {
Prism.languages.scheme = {
comment: /;.*/,
string: {
pattern: /"(?:[^"\\\r\n]|\\.)*"|'[^('\s]*/,
greedy: true
},
keyword: {
pattern: /(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)/,
lookbehind: true
},
builtin: {
pattern: /(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)/,
lookbehind: true
},
number: {
pattern: /(\s|\))[-+]?\d*\.?\d+(?:\s*[-+]\s*\d*\.?\d+i)?\b/,
lookbehind: true
},
boolean: /#[tf]/,
operator: {
pattern: /(\()(?:[-+*%\/]|[<>]=?|=>?)/,
lookbehind: true
},
function: {
pattern: /(\()[^\s()]*(?=\s)/,
lookbehind: true
},
punctuation: /[()]/
};
}
;