diff --git a/src/scheme/scheme.ts b/src/scheme/scheme.ts index 328d81ea..7c3129f3 100644 --- a/src/scheme/scheme.ts +++ b/src/scheme/scheme.ts @@ -9,116 +9,119 @@ import IRichLanguageConfiguration = monaco.languages.LanguageConfiguration; import ILanguage = monaco.languages.IMonarchLanguage; export const conf: IRichLanguageConfiguration = { - comments: { - lineComment: ';', - blockComment: ['#|', '|#'], - }, + comments: { + lineComment: ';', + blockComment: ['#|', '|#'], + }, - brackets: [['(', ')'], ['{', '}'], ['[', ']']], + brackets: [['(', ')'], ['{', '}'], ['[', ']']], - autoClosingPairs: [ - { open: '{', close: '}' }, - { open: '[', close: ']' }, - { open: '(', close: ')' }, - { open: '"', close: '"' }, - ], + autoClosingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + ], - surroundingPairs: [ - { open: '{', close: '}' }, - { open: '[', close: ']' }, - { open: '(', close: ')' }, - { open: '"', close: '"' }, - ], + surroundingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + ], }; export const language = { - defaultToken: '', - ignoreCase: true, - tokenPostfix: '.scheme', + defaultToken: '', + ignoreCase: true, + tokenPostfix: '.scheme', - brackets: [ - { open: '(', close: ')', token: 'delimiter.parenthesis' }, - { open: '{', close: '}', token: 'delimiter.curly' }, - { open: '[', close: ']', token: 'delimiter.square' }, - ], + brackets: [ + { open: '(', close: ')', token: 'delimiter.parenthesis' }, + { open: '{', close: '}', token: 'delimiter.curly' }, + { open: '[', close: ']', token: 'delimiter.square' }, + ], - keywords: [ - 'case', - 'do', - 'let', - 'loop', - 'if', - 'else', - 'when', - 'cons', - 'car', - 'cdr', - 'cond', - 'lambda', - 'lambda*', - 'syntax-rules', - 'format', - 'set!', - 'quote', - 'eval', - 'append', - 'list', - 'list?', - 'member?', - 'load', - ], + keywords: [ + 'case', + 'do', + 'let', + 'loop', + 'if', + 'else', + 'when', + 'cons', + 'car', + 'cdr', + 'cond', + 'lambda', + 'lambda*', + 'syntax-rules', + 'format', + 'set!', + 'quote', + 'eval', + 'append', + 'list', + 'list?', + 'member?', + 'load', + ], - constants: ['#t', '#f'], + constants: ['#t', '#f'], - operators: ['eq?', 'eqv?', 'equal?', 'and', 'or', 'not', 'null?'], + operators: ['eq?', 'eqv?', 'equal?', 'and', 'or', 'not', 'null?'], - tokenizer: { - root: [ - [/#[xXoObB][0-9a-fA-F]+/, 'number.hex'], - [/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, 'number.float'], + tokenizer: { + root: [ + [/#[xXoObB][0-9a-fA-F]+/, 'number.hex'], + [/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/, 'number.float'], - [/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/, ['keyword', 'white', 'variable']], + [ + /(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/, + ['keyword', 'white', 'variable'], + ], - [ - /[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/, - { - cases: { - '@keywords': 'keyword', - '@constants': 'constant', - '@operators': 'operators', - '@default': 'identifier', - }, - }, - ], + { include: '@whitespace' }, + { include: '@strings' }, - { include: '@whitespace' }, - { include: '@strings' }, - ], + [ + /[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/, + { + cases: { + '@keywords': 'keyword', + '@constants': 'constant', + '@operators': 'operators', + '@default': 'identifier', + }, + }, + ], + ], - comment: [ - [/[^\|#]+/, 'comment'], - [/\|\#/, 'comment', '@push'], - [/#\|/, 'comment', '@pop'], - [/[\|#]/, 'comment'], - ], + comment: [ + [/[^\|#]+/, 'comment'], + [/#\|/, 'comment', '@push'], + [/\|#/, 'comment', '@pop'], + [/[\|#]/, 'comment'], + ], - whitespace: [ - [/[ \t\r\n]+/, 'white'], - [/\|\#/, 'comment', '@comment'], - [/;.*$/, 'comment'], - ], + whitespace: [ + [/[ \t\r\n]+/, 'white'], + [/#\|/, 'comment', '@comment'], + [/;.*$/, 'comment'], + ], - strings: [ - [/"$/, 'string', '@popall'], - [/"(?=.)/, 'string', '@multiLineString'], - ], + strings: [ + [/"$/, 'string', '@popall'], + [/"(?=.)/, 'string', '@multiLineString'], + ], - multiLineString: [ - [/\\./, 'string.escape'], - [/"/, 'string', '@popall'], - [/.(?=.*")/, 'string'], - [/.*\\$/, 'string'], - [/.*$/, 'string', '@popall'], - ], - }, + multiLineString: [ + [/\\./, 'string.escape'], + [/"/, 'string', '@popall'], + [/.(?=.*")/, 'string'], + [/.*\\$/, 'string'], + [/.*$/, 'string', '@popall'], + ], + }, };