Fix scheme comments

This commit is contained in:
masad-frost 2018-06-09 02:03:41 -07:00
parent 520915ef46
commit 29bee2f3ef

View file

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