mirror of
https://github.com/microsoft/monaco-editor.git
synced 2025-12-22 23:13:02 +01:00
commit
3dd38f1ca5
6 changed files with 236 additions and 0 deletions
|
|
@ -61,6 +61,7 @@ bundleOne('redshift/redshift');
|
||||||
bundleOne('pgsql/pgsql');
|
bundleOne('pgsql/pgsql');
|
||||||
bundleOne('redis/redis');
|
bundleOne('redis/redis');
|
||||||
bundleOne('csp/csp');
|
bundleOne('csp/csp');
|
||||||
|
bundleOne('scheme/scheme');
|
||||||
|
|
||||||
function bundleOne(moduleId, exclude) {
|
function bundleOne(moduleId, exclude) {
|
||||||
requirejs.optimize({
|
requirejs.optimize({
|
||||||
|
|
|
||||||
|
|
@ -44,3 +44,4 @@ import './swift/swift.contribution';
|
||||||
import './vb/vb.contribution';
|
import './vb/vb.contribution';
|
||||||
import './xml/xml.contribution';
|
import './xml/xml.contribution';
|
||||||
import './yaml/yaml.contribution';
|
import './yaml/yaml.contribution';
|
||||||
|
import './scheme/scheme.contribution';
|
||||||
|
|
|
||||||
18
src/scheme/scheme.contribution.ts
Normal file
18
src/scheme/scheme.contribution.ts
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { registerLanguage } from '../_.contribution';
|
||||||
|
|
||||||
|
// Allow for running under nodejs/requirejs in tests
|
||||||
|
const _monaco: typeof monaco =
|
||||||
|
typeof monaco === 'undefined' ? (<any>self).monaco : monaco;
|
||||||
|
|
||||||
|
registerLanguage({
|
||||||
|
id: 'scheme',
|
||||||
|
extensions: ['.scm', '.ss', '.sch', '.rkt'],
|
||||||
|
aliases: ['scheme', 'Scheme'],
|
||||||
|
loader: () => _monaco.Promise.wrap(import('./scheme')),
|
||||||
|
});
|
||||||
91
src/scheme/scheme.test.ts
Normal file
91
src/scheme/scheme.test.ts
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { testTokenization } from '../test/testRunner';
|
||||||
|
|
||||||
|
testTokenization('scheme', [
|
||||||
|
// Keywords
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: 'define-macro some',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'keyword.scheme' },
|
||||||
|
{ startIndex: 12, type: 'white.scheme' },
|
||||||
|
{ startIndex: 13, type: 'variable.scheme' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
// comments
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '; comment',
|
||||||
|
tokens: [{ startIndex: 0, type: 'comment.scheme' }],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '|# comment',
|
||||||
|
tokens: [{ startIndex: 0, type: 'comment.scheme' }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: 'multiline',
|
||||||
|
tokens: [{ startIndex: 0, type: 'comment.scheme' }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: '#| cons',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'comment.scheme' },
|
||||||
|
{ startIndex: 2, type: 'white.scheme' },
|
||||||
|
{ startIndex: 3, type: 'keyword.scheme' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
// strings
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '"\\n string "',
|
||||||
|
tokens: [
|
||||||
|
{ startIndex: 0, type: 'string.scheme' },
|
||||||
|
{ startIndex: 1, type: 'string.escape.scheme' },
|
||||||
|
{ startIndex: 3, type: 'string.scheme' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '" string \\',
|
||||||
|
tokens: [{ startIndex: 0, type: 'string.scheme' }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: 'multiline',
|
||||||
|
tokens: [{ startIndex: 0, type: 'string.scheme' }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
line: ' ',
|
||||||
|
tokens: [
|
||||||
|
// previous line needs to be terminated with \
|
||||||
|
{ startIndex: 0, type: 'white.scheme' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
// numbers
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '1e2',
|
||||||
|
tokens: [{ startIndex: 0, type: 'number.float.scheme' }],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
line: '#x03BB',
|
||||||
|
tokens: [{ startIndex: 0, type: 'number.hex.scheme' }],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
]);
|
||||||
124
src/scheme/scheme.ts
Normal file
124
src/scheme/scheme.ts
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import IRichLanguageConfiguration = monaco.languages.LanguageConfiguration;
|
||||||
|
import ILanguage = monaco.languages.IMonarchLanguage;
|
||||||
|
|
||||||
|
export const conf: IRichLanguageConfiguration = {
|
||||||
|
comments: {
|
||||||
|
lineComment: ';',
|
||||||
|
blockComment: ['#|', '|#'],
|
||||||
|
},
|
||||||
|
|
||||||
|
brackets: [['(', ')'], ['{', '}'], ['[', ']']],
|
||||||
|
|
||||||
|
autoClosingPairs: [
|
||||||
|
{ open: '{', close: '}' },
|
||||||
|
{ open: '[', close: ']' },
|
||||||
|
{ open: '(', close: ')' },
|
||||||
|
{ open: '"', close: '"' },
|
||||||
|
],
|
||||||
|
|
||||||
|
surroundingPairs: [
|
||||||
|
{ open: '{', close: '}' },
|
||||||
|
{ open: '[', close: ']' },
|
||||||
|
{ open: '(', close: ')' },
|
||||||
|
{ open: '"', close: '"' },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export const language = <ILanguage>{
|
||||||
|
defaultToken: '',
|
||||||
|
ignoreCase: true,
|
||||||
|
tokenPostfix: '.scheme',
|
||||||
|
|
||||||
|
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',
|
||||||
|
],
|
||||||
|
|
||||||
|
constants: ['#t', '#f'],
|
||||||
|
|
||||||
|
operators: ['eq?', 'eqv?', 'equal?', 'and', 'or', 'not', 'null?'],
|
||||||
|
|
||||||
|
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']],
|
||||||
|
|
||||||
|
[
|
||||||
|
/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,
|
||||||
|
{
|
||||||
|
cases: {
|
||||||
|
'@keywords': 'keyword',
|
||||||
|
'@constants': 'constant',
|
||||||
|
'@operators': 'operators',
|
||||||
|
'@default': 'identifier',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
{ include: '@whitespace' },
|
||||||
|
{ include: '@strings' },
|
||||||
|
],
|
||||||
|
|
||||||
|
comment: [
|
||||||
|
[/[^\|#]+/, 'comment'],
|
||||||
|
[/\|\#/, 'comment', '@push'],
|
||||||
|
[/#\|/, 'comment', '@pop'],
|
||||||
|
[/[\|#]/, 'comment'],
|
||||||
|
],
|
||||||
|
|
||||||
|
whitespace: [
|
||||||
|
[/[ \t\r\n]+/, 'white'],
|
||||||
|
[/\|\#/, 'comment', '@comment'],
|
||||||
|
[/;.*$/, 'comment'],
|
||||||
|
],
|
||||||
|
|
||||||
|
strings: [
|
||||||
|
[/"$/, 'string', '@popall'],
|
||||||
|
[/"(?=.)/, 'string', '@multiLineString'],
|
||||||
|
],
|
||||||
|
|
||||||
|
multiLineString: [
|
||||||
|
[/\\./, 'string.escape'],
|
||||||
|
[/"/, 'string', '@popall'],
|
||||||
|
[/.(?=.*")/, 'string'],
|
||||||
|
[/.*\\$/, 'string'],
|
||||||
|
[/.*$/, 'string', '@popall'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -65,6 +65,7 @@ define(['require'], function (require) {
|
||||||
'release/dev/redis/redis.test',
|
'release/dev/redis/redis.test',
|
||||||
'release/dev/csp/csp.test',
|
'release/dev/csp/csp.test',
|
||||||
'release/dev/st/st.test',
|
'release/dev/st/st.test',
|
||||||
|
'release/dev/scheme/scheme.test',
|
||||||
], function () {
|
], function () {
|
||||||
run(); // We can launch the tests!
|
run(); // We can launch the tests!
|
||||||
}, function (err) {
|
}, function (err) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue