monaco-languageclient-examples 8.3.1 → 8.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/bare.html +2 -2
- package/browser.html +2 -2
- package/dist/browser/main.d.ts.map +1 -1
- package/dist/browser/main.js +7 -4
- package/dist/browser/main.js.map +1 -1
- package/dist/common/client/app-utils.d.ts +3 -0
- package/dist/common/client/app-utils.d.ts.map +1 -0
- package/dist/common/client/app-utils.js +15 -0
- package/dist/common/client/app-utils.js.map +1 -0
- package/dist/common/client/localeLoader.d.ts +2 -0
- package/dist/common/client/localeLoader.d.ts.map +1 -0
- package/dist/common/client/localeLoader.js +61 -0
- package/dist/common/client/localeLoader.js.map +1 -0
- package/dist/common/node/language-server-runner.d.ts.map +1 -0
- package/dist/common/{language-server-runner.js → node/language-server-runner.js} +2 -3
- package/dist/common/node/language-server-runner.js.map +1 -0
- package/dist/common/{server-commons.d.ts → node/server-commons.d.ts} +7 -1
- package/dist/common/node/server-commons.d.ts.map +1 -0
- package/dist/common/{server-commons.js → node/server-commons.js} +10 -1
- package/dist/common/node/server-commons.js.map +1 -0
- package/dist/groovy/client/main.d.ts.map +1 -1
- package/dist/groovy/client/main.js +14 -7
- package/dist/groovy/client/main.js.map +1 -1
- package/dist/groovy/server/direct.js +2 -2
- package/dist/groovy/server/direct.js.map +1 -1
- package/dist/groovy/server/main.js +3 -3
- package/dist/groovy/server/main.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/json/client/wrapperWs.d.ts.map +1 -1
- package/dist/json/client/wrapperWs.js +15 -16
- package/dist/json/client/wrapperWs.js.map +1 -1
- package/dist/json/server/direct.js +2 -2
- package/dist/json/server/direct.js.map +1 -1
- package/dist/json/server/main.d.ts.map +1 -1
- package/dist/json/server/main.js +3 -3
- package/dist/json/server/main.js.map +1 -1
- package/dist/langium/langium-dsl/config/classicConfig.d.ts.map +1 -1
- package/dist/langium/langium-dsl/config/classicConfig.js +15 -7
- package/dist/langium/langium-dsl/config/classicConfig.js.map +1 -1
- package/dist/langium/langium-dsl/config/extendedConfig.d.ts.map +1 -1
- package/dist/langium/langium-dsl/config/extendedConfig.js +14 -3
- package/dist/langium/langium-dsl/config/extendedConfig.js.map +1 -1
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts +5 -1
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts.map +1 -1
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.js +14 -7
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.js.map +1 -1
- package/dist/langium/statemachine/main-react.d.ts.map +1 -1
- package/dist/langium/statemachine/main-react.js +8 -3
- package/dist/langium/statemachine/main-react.js.map +1 -1
- package/dist/langium/statemachine/main.d.ts.map +1 -1
- package/dist/langium/statemachine/main.js +19 -3
- package/dist/langium/statemachine/main.js.map +1 -1
- package/dist/node.d.ts +2 -3
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +2 -3
- package/dist/node.js.map +1 -1
- package/dist/python/client/config.d.ts +1 -1
- package/dist/python/client/config.d.ts.map +1 -1
- package/dist/python/client/config.js +14 -25
- package/dist/python/client/config.js.map +1 -1
- package/dist/python/client/main.d.ts +1 -1
- package/dist/python/client/main.d.ts.map +1 -1
- package/dist/python/client/main.js +24 -9
- package/dist/python/client/main.js.map +1 -1
- package/dist/python/client/reactPython.d.ts +1 -1
- package/dist/python/client/reactPython.d.ts.map +1 -1
- package/dist/python/client/reactPython.js +14 -11
- package/dist/python/client/reactPython.js.map +1 -1
- package/dist/python/server/direct.js +2 -2
- package/dist/python/server/direct.js.map +1 -1
- package/dist/python/server/main.js +3 -3
- package/dist/python/server/main.js.map +1 -1
- package/dist/ts/wrapperAdvanced.d.ts.map +1 -1
- package/dist/ts/wrapperAdvanced.js +64 -25
- package/dist/ts/wrapperAdvanced.js.map +1 -1
- package/dist/ts/wrapperTs.d.ts.map +1 -1
- package/dist/ts/wrapperTs.js +43 -28
- package/dist/ts/wrapperTs.js.map +1 -1
- package/groovy.html +2 -2
- package/package.json +46 -45
- package/python.html +2 -2
- package/react_python.html +3 -3
- package/react_statemachine.html +3 -3
- package/src/browser/main.ts +7 -4
- package/src/common/client/app-utils.ts +16 -0
- package/src/common/client/localeLoader.ts +61 -0
- package/src/common/{language-server-runner.ts → node/language-server-runner.ts} +3 -4
- package/src/common/{server-commons.ts → node/server-commons.ts} +13 -3
- package/src/groovy/client/main.ts +15 -8
- package/src/groovy/server/direct.ts +3 -3
- package/src/groovy/server/main.ts +3 -3
- package/src/index.ts +2 -2
- package/src/json/client/wrapperWs.ts +17 -18
- package/src/json/server/direct.ts +2 -2
- package/src/json/server/main.ts +4 -3
- package/src/langium/langium-dsl/config/classicConfig.ts +15 -7
- package/src/langium/langium-dsl/config/extendedConfig.ts +15 -3
- package/src/langium/statemachine/config/wrapperStatemachineConfig.ts +19 -8
- package/src/langium/statemachine/main-react.tsx +8 -3
- package/src/langium/statemachine/main.ts +22 -3
- package/src/node.ts +2 -3
- package/src/python/client/bad.py +3 -0
- package/src/python/client/config.ts +13 -24
- package/src/python/client/hello.py +4 -0
- package/src/python/client/hello2.py +2 -0
- package/src/python/client/main.ts +29 -9
- package/src/python/client/reactPython.tsx +15 -11
- package/src/python/client/tester.py +5 -0
- package/src/python/server/direct.ts +2 -2
- package/src/python/server/main.ts +4 -4
- package/src/ts/wrapperAdvanced.ts +64 -25
- package/src/ts/wrapperTs.ts +44 -28
- package/vite.bundle.config.ts +32 -0
- package/wrapper_adv.html +2 -2
- package/wrapper_langium.html +2 -2
- package/wrapper_statemachine.html +6 -3
- package/wrapper_ts.html +1 -1
- package/wrapper_ws.html +2 -3
- package/dist/common/example-apps-common.d.ts +0 -8
- package/dist/common/example-apps-common.d.ts.map +0 -1
- package/dist/common/example-apps-common.js +0 -81
- package/dist/common/example-apps-common.js.map +0 -1
- package/dist/common/language-server-runner.d.ts.map +0 -1
- package/dist/common/language-server-runner.js.map +0 -1
- package/dist/common/server-commons.d.ts.map +0 -1
- package/dist/common/server-commons.js.map +0 -1
- package/dist/utils/fs-utils.d.ts +0 -5
- package/dist/utils/fs-utils.d.ts.map +0 -1
- package/dist/utils/fs-utils.js +0 -14
- package/dist/utils/fs-utils.js.map +0 -1
- package/dist/utils/localeLoader.d.ts +0 -2
- package/dist/utils/localeLoader.d.ts.map +0 -1
- package/dist/utils/localeLoader.js +0 -60
- package/dist/utils/localeLoader.js.map +0 -1
- package/src/common/example-apps-common.ts +0 -90
- package/src/utils/fs-utils.ts +0 -14
- package/src/utils/localeLoader.ts +0 -59
- /package/dist/common/{language-server-runner.d.ts → node/language-server-runner.d.ts} +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* --------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2024 TypeFox and others.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
|
+
* ------------------------------------------------------------------------------------------ */
|
|
5
|
+
|
|
6
|
+
export const initLocalLoader = async () => {
|
|
7
|
+
const locale = new URLSearchParams(window.location.search).get('locale');
|
|
8
|
+
const localeLoader: Partial<Record<string, () => Promise<void>>> = {
|
|
9
|
+
cs: async () => {
|
|
10
|
+
await import('@codingame/monaco-vscode-language-pack-cs');
|
|
11
|
+
},
|
|
12
|
+
de: async () => {
|
|
13
|
+
await import('@codingame/monaco-vscode-language-pack-de');
|
|
14
|
+
},
|
|
15
|
+
es: async () => {
|
|
16
|
+
await import('@codingame/monaco-vscode-language-pack-es');
|
|
17
|
+
},
|
|
18
|
+
fr: async () => {
|
|
19
|
+
await import('@codingame/monaco-vscode-language-pack-fr');
|
|
20
|
+
},
|
|
21
|
+
it: async () => {
|
|
22
|
+
await import('@codingame/monaco-vscode-language-pack-it');
|
|
23
|
+
},
|
|
24
|
+
ja: async () => {
|
|
25
|
+
await import('@codingame/monaco-vscode-language-pack-ja');
|
|
26
|
+
},
|
|
27
|
+
ko: async () => {
|
|
28
|
+
await import('@codingame/monaco-vscode-language-pack-ko');
|
|
29
|
+
},
|
|
30
|
+
pl: async () => {
|
|
31
|
+
await import('@codingame/monaco-vscode-language-pack-pl');
|
|
32
|
+
},
|
|
33
|
+
'pt-br': async () => {
|
|
34
|
+
await import('@codingame/monaco-vscode-language-pack-pt-br');
|
|
35
|
+
},
|
|
36
|
+
'qps-ploc': async () => {
|
|
37
|
+
await import('@codingame/monaco-vscode-language-pack-qps-ploc');
|
|
38
|
+
},
|
|
39
|
+
ru: async () => {
|
|
40
|
+
await import('@codingame/monaco-vscode-language-pack-ru');
|
|
41
|
+
},
|
|
42
|
+
tr: async () => {
|
|
43
|
+
await import('@codingame/monaco-vscode-language-pack-tr');
|
|
44
|
+
},
|
|
45
|
+
'zh-hans': async () => {
|
|
46
|
+
await import('@codingame/monaco-vscode-language-pack-zh-hans');
|
|
47
|
+
},
|
|
48
|
+
'zh-hant': async () => {
|
|
49
|
+
await import('@codingame/monaco-vscode-language-pack-zh-hant');
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
if (locale !== null) {
|
|
54
|
+
const loader = localeLoader[locale];
|
|
55
|
+
if (loader) {
|
|
56
|
+
await loader();
|
|
57
|
+
} else {
|
|
58
|
+
console.error(`Unknown locale ${locale}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
@@ -4,16 +4,15 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import { WebSocketServer } from 'ws';
|
|
7
|
-
import { Server } from 'http';
|
|
7
|
+
import { Server } from 'node:http';
|
|
8
8
|
import express from 'express';
|
|
9
|
-
import { getLocalDirectory } from '
|
|
10
|
-
import { LanguageServerRunConfig, upgradeWsServer } from './server-commons.js';
|
|
9
|
+
import { getLocalDirectory, LanguageServerRunConfig, upgradeWsServer } from './server-commons.js';
|
|
11
10
|
|
|
12
11
|
/** LSP server runner */
|
|
13
12
|
export const runLanguageServer = (
|
|
14
13
|
languageServerRunConfig: LanguageServerRunConfig
|
|
15
14
|
) => {
|
|
16
|
-
process.on('uncaughtException',
|
|
15
|
+
process.on('uncaughtException', err => {
|
|
17
16
|
console.error('Uncaught Exception: ', err.toString());
|
|
18
17
|
if (err.stack) {
|
|
19
18
|
console.error(err.stack);
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
import { WebSocketServer, ServerOptions } from 'ws';
|
|
6
|
-
import { IncomingMessage, Server } from 'http';
|
|
7
|
-
import { URL } from 'url';
|
|
8
|
-
import { Socket } from 'net';
|
|
6
|
+
import { IncomingMessage, Server } from 'node:http';
|
|
7
|
+
import { URL } from 'node:url';
|
|
8
|
+
import { Socket } from 'node:net';
|
|
9
|
+
import { dirname } from 'node:path';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
9
11
|
import { IWebSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
|
|
10
12
|
import { createConnection, createServerProcess, forward } from 'vscode-ws-jsonrpc/server';
|
|
11
13
|
import { Message, InitializeRequest, InitializeParams } from 'vscode-languageserver';
|
|
@@ -93,3 +95,11 @@ export const upgradeWsServer = (runconfig: LanguageServerRunConfig,
|
|
|
93
95
|
}
|
|
94
96
|
});
|
|
95
97
|
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Solves: __dirname is not defined in ES module scope
|
|
101
|
+
*/
|
|
102
|
+
export const getLocalDirectory = (referenceUrl: string | URL) => {
|
|
103
|
+
const __filename = fileURLToPath(referenceUrl);
|
|
104
|
+
return dirname(__filename);
|
|
105
|
+
};
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
7
7
|
// this is required syntax highlighting
|
|
8
8
|
import '@codingame/monaco-vscode-groovy-default-extension';
|
|
9
|
-
import {
|
|
10
|
-
import { UserConfig } from 'monaco-editor-wrapper';
|
|
9
|
+
import { MonacoEditorLanguageClientWrapper, UserConfig } from 'monaco-editor-wrapper';
|
|
11
10
|
import { groovyConfig } from '../config.js';
|
|
12
11
|
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory';
|
|
13
12
|
|
|
@@ -32,8 +31,12 @@ const userConfig: UserConfig = {
|
|
|
32
31
|
},
|
|
33
32
|
editorAppConfig: {
|
|
34
33
|
$type: 'extended',
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
codeResources: {
|
|
35
|
+
main: {
|
|
36
|
+
text: code,
|
|
37
|
+
fileExt: 'groovy'
|
|
38
|
+
}
|
|
39
|
+
},
|
|
37
40
|
useDiffEditor: false,
|
|
38
41
|
userConfiguration: {
|
|
39
42
|
json: JSON.stringify({
|
|
@@ -44,6 +47,7 @@ const userConfig: UserConfig = {
|
|
|
44
47
|
}
|
|
45
48
|
},
|
|
46
49
|
languageClientConfig: {
|
|
50
|
+
languageId: 'groovy',
|
|
47
51
|
options: {
|
|
48
52
|
$type: 'WebSocketUrl',
|
|
49
53
|
url: `ws://localhost:${groovyConfig.port}${groovyConfig.path}`
|
|
@@ -52,13 +56,16 @@ const userConfig: UserConfig = {
|
|
|
52
56
|
};
|
|
53
57
|
|
|
54
58
|
export const runGroovyClient = () => {
|
|
59
|
+
const wrapper = new MonacoEditorLanguageClientWrapper();
|
|
60
|
+
const htmlElement = document.getElementById('monaco-editor-root');
|
|
61
|
+
|
|
55
62
|
try {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
64
|
+
await wrapper.dispose();
|
|
65
|
+
await wrapper.initAndStart(userConfig, htmlElement);
|
|
59
66
|
});
|
|
60
67
|
document.querySelector('#button-dispose')?.addEventListener('click', async () => {
|
|
61
|
-
await
|
|
68
|
+
await wrapper.dispose();
|
|
62
69
|
});
|
|
63
70
|
} catch (e) {
|
|
64
71
|
console.error(e);
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import { resolve } from 'path';
|
|
7
|
-
import { getLocalDirectory } from '../../utils/fs-utils.js';
|
|
6
|
+
import { resolve } from 'node:path';
|
|
8
7
|
import { runGroovyLanguageServer } from './main.js';
|
|
9
|
-
|
|
8
|
+
import { getLocalDirectory } from '../../common/node/server-commons.js';
|
|
10
9
|
|
|
10
|
+
const baseDir = resolve(getLocalDirectory(import.meta.url));
|
|
11
11
|
const groovyJar = resolve(baseDir, '../../../resources/groovy/external/groovy-language-server-all.jar');
|
|
12
12
|
const relativeDir = process.env.LANG_SERVER_JAR_PATH || groovyJar;
|
|
13
13
|
console.log(`basedir: ${baseDir}`);
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { resolve } from 'node:path';
|
|
7
|
+
import { runLanguageServer } from '../../common/node/language-server-runner.js';
|
|
8
|
+
import { LanguageName } from '../../common/node/server-commons.js';
|
|
8
9
|
import { groovyConfig } from '../config.js';
|
|
9
|
-
import { LanguageName } from '../../common/server-commons.js';
|
|
10
10
|
|
|
11
11
|
export const runGroovyLanguageServer = (baseDir: string, relativeDir: string) => {
|
|
12
12
|
const processRunPath = resolve(baseDir, relativeDir);
|
package/src/index.ts
CHANGED
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
/* client side export only */
|
|
7
|
-
export * from './common/
|
|
8
|
-
|
|
7
|
+
export * from './common/client/app-utils.js';
|
|
8
|
+
export * from './common/client/localeLoader.js';
|
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
7
7
|
// this is required syntax highlighting
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import { UserConfig } from 'monaco-editor-wrapper';
|
|
8
|
+
import '@codingame/monaco-vscode-json-default-extension';
|
|
9
|
+
import { MonacoEditorLanguageClientWrapper, UserConfig } from 'monaco-editor-wrapper';
|
|
11
10
|
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory';
|
|
12
11
|
|
|
13
12
|
export const configureMonacoWorkers = () => {
|
|
@@ -20,11 +19,7 @@ export const configureMonacoWorkers = () => {
|
|
|
20
19
|
});
|
|
21
20
|
};
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
"$schema": "http://json.schemastore.org/coffeelint",
|
|
25
|
-
"line_endings": {"value": "windows"}
|
|
26
|
-
}`;
|
|
27
|
-
const codeOrg = `{
|
|
22
|
+
const text = `{
|
|
28
23
|
"$schema": "http://json.schemastore.org/coffeelint",
|
|
29
24
|
"line_endings": {"value": "unix"}
|
|
30
25
|
}`;
|
|
@@ -39,10 +34,13 @@ export const jsonClientUserConfig: UserConfig = {
|
|
|
39
34
|
},
|
|
40
35
|
editorAppConfig: {
|
|
41
36
|
$type: 'extended',
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
codeResources: {
|
|
38
|
+
main: {
|
|
39
|
+
text,
|
|
40
|
+
fileExt: 'json'
|
|
41
|
+
}
|
|
42
|
+
},
|
|
44
43
|
useDiffEditor: false,
|
|
45
|
-
codeOriginal: codeOrg,
|
|
46
44
|
userConfiguration: {
|
|
47
45
|
json: JSON.stringify({
|
|
48
46
|
'workbench.colorTheme': 'Default Dark Modern',
|
|
@@ -53,6 +51,7 @@ export const jsonClientUserConfig: UserConfig = {
|
|
|
53
51
|
}
|
|
54
52
|
},
|
|
55
53
|
languageClientConfig: {
|
|
54
|
+
languageId: 'json',
|
|
56
55
|
options: {
|
|
57
56
|
$type: 'WebSocketUrl',
|
|
58
57
|
url: 'ws://localhost:30000/sampleServer',
|
|
@@ -73,16 +72,16 @@ export const jsonClientUserConfig: UserConfig = {
|
|
|
73
72
|
};
|
|
74
73
|
|
|
75
74
|
export const runJsonWrapper = () => {
|
|
75
|
+
const wrapper = new MonacoEditorLanguageClientWrapper();
|
|
76
|
+
const htmlElement = document.getElementById('monaco-editor-root');
|
|
77
|
+
|
|
76
78
|
try {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
document.querySelector('#button-swap')?.addEventListener('click', () => {
|
|
82
|
-
swapEditors(jsonClientUserConfig, htmlElement, codeMain, codeOrg);
|
|
79
|
+
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
80
|
+
await wrapper.dispose();
|
|
81
|
+
await wrapper.initAndStart(jsonClientUserConfig, htmlElement);
|
|
83
82
|
});
|
|
84
83
|
document.querySelector('#button-dispose')?.addEventListener('click', async () => {
|
|
85
|
-
|
|
84
|
+
await wrapper.dispose();
|
|
86
85
|
});
|
|
87
86
|
} catch (e) {
|
|
88
87
|
console.error(e);
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Copyright (c) 2024 TypeFox and others.
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
|
-
import { resolve } from 'path';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
6
|
import { runJsonServer } from './main.js';
|
|
7
|
-
import { getLocalDirectory } from '../../
|
|
7
|
+
import { getLocalDirectory } from '../../common/node/server-commons.js';
|
|
8
8
|
|
|
9
9
|
const baseDir = resolve(getLocalDirectory(import.meta.url));
|
|
10
10
|
const relativeDir = '../../../dist/json/server/json-server.js';
|
package/src/json/server/main.ts
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Copyright (c) 2024 TypeFox and others.
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
|
-
|
|
6
|
-
import { resolve } from 'path';
|
|
7
|
-
import {
|
|
5
|
+
|
|
6
|
+
import { resolve } from 'node:path';
|
|
7
|
+
import { runLanguageServer } from '../../common/node/language-server-runner.js';
|
|
8
|
+
import { LanguageName } from '../../common/node/server-commons.js';
|
|
8
9
|
|
|
9
10
|
export const runJsonServer = (baseDir: string, relativeDir: string) => {
|
|
10
11
|
const processRunPath = resolve(baseDir, relativeDir);
|
|
@@ -9,9 +9,9 @@ import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-ov
|
|
|
9
9
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
10
10
|
import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services';
|
|
11
11
|
import { UserConfig } from 'monaco-editor-wrapper';
|
|
12
|
-
import { getTextContent } from '../../../common/example-apps-common.js';
|
|
13
12
|
import { LangiumMonarchContent } from './langium.monarch.js';
|
|
14
13
|
import { loadLangiumWorker } from '../wrapperLangium.js';
|
|
14
|
+
import { getTextContent } from '../../../common/client/app-utils.js';
|
|
15
15
|
|
|
16
16
|
export const setupLangiumClientClassic = async (): Promise<UserConfig> => {
|
|
17
17
|
const code = await getTextContent(new URL('./src/langium/langium-dsl/content/example.langium', window.location.href));
|
|
@@ -44,19 +44,27 @@ export const setupLangiumClientClassic = async (): Promise<UserConfig> => {
|
|
|
44
44
|
},
|
|
45
45
|
editorAppConfig: {
|
|
46
46
|
$type: 'classic',
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
codeResources: {
|
|
48
|
+
main: {
|
|
49
|
+
text: code,
|
|
50
|
+
fileExt: 'langium',
|
|
51
|
+
enforceLanguageId: 'langium'
|
|
52
|
+
}
|
|
53
|
+
},
|
|
49
54
|
useDiffEditor: false,
|
|
50
|
-
theme: 'vs-dark',
|
|
51
55
|
editorOptions: {
|
|
52
56
|
'semanticHighlighting.enabled': true,
|
|
53
|
-
wordBasedSuggestions: 'off'
|
|
57
|
+
wordBasedSuggestions: 'off',
|
|
58
|
+
theme: 'vs-dark'
|
|
54
59
|
},
|
|
55
|
-
|
|
56
|
-
|
|
60
|
+
languageDef: {
|
|
61
|
+
monarchLanguage: LangiumMonarchContent,
|
|
62
|
+
languageExtensionConfig: { id: 'langium' },
|
|
63
|
+
}
|
|
57
64
|
}
|
|
58
65
|
},
|
|
59
66
|
languageClientConfig: {
|
|
67
|
+
languageId: 'langium',
|
|
60
68
|
options: {
|
|
61
69
|
$type: 'WorkerDirect',
|
|
62
70
|
worker: langiumWorker
|
|
@@ -8,8 +8,9 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-
|
|
|
8
8
|
import '../../../../resources/vsix/GitHub.github-vscode-theme-6.3.4.vsix';
|
|
9
9
|
import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services';
|
|
10
10
|
import { UserConfig } from 'monaco-editor-wrapper';
|
|
11
|
-
import {
|
|
11
|
+
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
|
|
12
12
|
import { loadLangiumWorker } from '../wrapperLangium.js';
|
|
13
|
+
import { getTextContent } from '../../../common/client/app-utils.js';
|
|
13
14
|
|
|
14
15
|
export const setupLangiumClientExtended = async (): Promise<UserConfig> => {
|
|
15
16
|
const code = await getTextContent(new URL('./src/langium/langium-dsl/content/example.langium', window.location.href));
|
|
@@ -22,6 +23,9 @@ export const setupLangiumClientExtended = async (): Promise<UserConfig> => {
|
|
|
22
23
|
extensionFilesOrContents.set('/langium-grammar.json', langiumTextmateGrammar);
|
|
23
24
|
|
|
24
25
|
const langiumWorker = loadLangiumWorker();
|
|
26
|
+
const reader = new BrowserMessageReader(langiumWorker);
|
|
27
|
+
const writer = new BrowserMessageWriter(langiumWorker);
|
|
28
|
+
|
|
25
29
|
return {
|
|
26
30
|
wrapperConfig: {
|
|
27
31
|
serviceConfig: {
|
|
@@ -33,8 +37,12 @@ export const setupLangiumClientExtended = async (): Promise<UserConfig> => {
|
|
|
33
37
|
},
|
|
34
38
|
editorAppConfig: {
|
|
35
39
|
$type: 'extended',
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
codeResources: {
|
|
41
|
+
main: {
|
|
42
|
+
text: code,
|
|
43
|
+
fileExt: 'langium'
|
|
44
|
+
}
|
|
45
|
+
},
|
|
38
46
|
useDiffEditor: false,
|
|
39
47
|
extensions: [{
|
|
40
48
|
config: {
|
|
@@ -70,9 +78,13 @@ export const setupLangiumClientExtended = async (): Promise<UserConfig> => {
|
|
|
70
78
|
}
|
|
71
79
|
},
|
|
72
80
|
languageClientConfig: {
|
|
81
|
+
languageId: 'langium',
|
|
73
82
|
options: {
|
|
74
83
|
$type: 'WorkerDirect',
|
|
75
84
|
worker: langiumWorker
|
|
85
|
+
},
|
|
86
|
+
connectionProvider: {
|
|
87
|
+
get: async () => ({ reader, writer }),
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
90
|
};
|
|
@@ -8,17 +8,26 @@ import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-serv
|
|
|
8
8
|
import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override';
|
|
9
9
|
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services';
|
|
10
10
|
import { UserConfig } from 'monaco-editor-wrapper';
|
|
11
|
-
import { getTextContent } from '../../../common/example-apps-common.js';
|
|
12
|
-
|
|
13
|
-
export const createLangiumGlobalConfig = async (worker: Worker, messagePort?: MessagePort): Promise<UserConfig> => {
|
|
14
|
-
const code = await getTextContent(new URL('./src/langium/statemachine/content/example.statemachine', window.location.href));
|
|
15
11
|
|
|
12
|
+
export const createLangiumGlobalConfig = async (params: {
|
|
13
|
+
text?: string,
|
|
14
|
+
worker: Worker,
|
|
15
|
+
messagePort?: MessagePort
|
|
16
|
+
}): Promise<UserConfig> => {
|
|
16
17
|
const extensionFilesOrContents = new Map<string, string | URL>();
|
|
17
18
|
const statemachineLanguageConfig = new URL('./src/langium/statemachine/config/language-configuration.json', window.location.href);
|
|
18
19
|
const responseStatemachineTm = new URL('./src/langium/statemachine/syntaxes/statemachine.tmLanguage.json', window.location.href);
|
|
19
20
|
extensionFilesOrContents.set('/statemachine-configuration.json', statemachineLanguageConfig);
|
|
20
21
|
extensionFilesOrContents.set('/statemachine-grammar.json', responseStatemachineTm);
|
|
21
22
|
|
|
23
|
+
let main;
|
|
24
|
+
if (params.text) {
|
|
25
|
+
main = {
|
|
26
|
+
text: params.text,
|
|
27
|
+
fileExt: 'statemachine'
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
22
31
|
return {
|
|
23
32
|
wrapperConfig: {
|
|
24
33
|
serviceConfig: {
|
|
@@ -31,8 +40,9 @@ export const createLangiumGlobalConfig = async (worker: Worker, messagePort?: Me
|
|
|
31
40
|
},
|
|
32
41
|
editorAppConfig: {
|
|
33
42
|
$type: 'extended',
|
|
34
|
-
|
|
35
|
-
|
|
43
|
+
codeResources: {
|
|
44
|
+
main
|
|
45
|
+
},
|
|
36
46
|
useDiffEditor: false,
|
|
37
47
|
extensions: [{
|
|
38
48
|
config: {
|
|
@@ -68,10 +78,11 @@ export const createLangiumGlobalConfig = async (worker: Worker, messagePort?: Me
|
|
|
68
78
|
}
|
|
69
79
|
},
|
|
70
80
|
languageClientConfig: {
|
|
81
|
+
languageId: 'statemachine',
|
|
71
82
|
options: {
|
|
72
83
|
$type: 'WorkerDirect',
|
|
73
|
-
worker,
|
|
74
|
-
messagePort
|
|
84
|
+
worker: params.worker,
|
|
85
|
+
messagePort: params.messagePort
|
|
75
86
|
}
|
|
76
87
|
}
|
|
77
88
|
};
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
import React from 'react';
|
|
7
7
|
import ReactDOM from 'react-dom/client';
|
|
8
8
|
import { MonacoEditorReactComp } from '@typefox/monaco-editor-react';
|
|
9
|
+
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory';
|
|
10
|
+
import { getTextContent } from '../../common/client/app-utils.js';
|
|
9
11
|
import { createLangiumGlobalConfig } from './config/wrapperStatemachineConfig.js';
|
|
10
12
|
import { loadStatemachineWorkerRegular } from './main.js';
|
|
11
|
-
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory';
|
|
12
13
|
|
|
13
14
|
export const configureMonacoWorkers = () => {
|
|
14
15
|
useWorkerFactory({
|
|
@@ -18,7 +19,11 @@ export const configureMonacoWorkers = () => {
|
|
|
18
19
|
|
|
19
20
|
export const runStatemachineReact = async () => {
|
|
20
21
|
try {
|
|
21
|
-
const
|
|
22
|
+
const text = await getTextContent(new URL('./src/langium/statemachine/content/example.statemachine', window.location.href));
|
|
23
|
+
const langiumGlobalConfig = await createLangiumGlobalConfig({
|
|
24
|
+
text,
|
|
25
|
+
worker: loadStatemachineWorkerRegular()
|
|
26
|
+
});
|
|
22
27
|
const comp = <MonacoEditorReactComp
|
|
23
28
|
userConfig={langiumGlobalConfig}
|
|
24
29
|
style={{
|
|
@@ -27,7 +32,7 @@ export const runStatemachineReact = async () => {
|
|
|
27
32
|
}}
|
|
28
33
|
/>;
|
|
29
34
|
|
|
30
|
-
const htmlElement = document.getElementById('root');
|
|
35
|
+
const htmlElement = document.getElementById('monaco-editor-root');
|
|
31
36
|
ReactDOM.createRoot(htmlElement!).render(comp);
|
|
32
37
|
} catch (e) {
|
|
33
38
|
console.error(e);
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import * as vscode from 'vscode';
|
|
7
|
+
import { createModelReference } from 'vscode/monaco';
|
|
7
8
|
import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
|
|
8
|
-
import { createLangiumGlobalConfig } from './config/wrapperStatemachineConfig.js';
|
|
9
9
|
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory';
|
|
10
|
+
import { createLangiumGlobalConfig } from './config/wrapperStatemachineConfig.js';
|
|
11
|
+
import { getTextContent } from '../../common/client/app-utils.js';
|
|
10
12
|
|
|
11
13
|
const wrapper = new MonacoEditorLanguageClientWrapper();
|
|
12
14
|
const wrapper2 = new MonacoEditorLanguageClientWrapper();
|
|
@@ -23,11 +25,24 @@ const startEditor = async () => {
|
|
|
23
25
|
return;
|
|
24
26
|
}
|
|
25
27
|
|
|
28
|
+
const text = await getTextContent(new URL('./src/langium/statemachine/content/example.statemachine', window.location.href));
|
|
29
|
+
|
|
26
30
|
// init first worker regularly
|
|
27
31
|
const stateMachineWorkerRegular = loadStatemachineWorkerRegular();
|
|
28
|
-
|
|
32
|
+
|
|
33
|
+
// the configuration does not contain any text content
|
|
34
|
+
const langiumGlobalConfig = await createLangiumGlobalConfig({
|
|
35
|
+
worker: stateMachineWorkerRegular
|
|
36
|
+
});
|
|
29
37
|
await wrapper.initAndStart(langiumGlobalConfig, document.getElementById('monaco-editor-root'));
|
|
30
38
|
|
|
39
|
+
// here the modelReference is created manually and given to the updateEditorModels of the wrapper
|
|
40
|
+
const uri = vscode.Uri.parse('/workspace/statemachineUri.statemachine');
|
|
41
|
+
const modelRef = await createModelReference(uri, text);
|
|
42
|
+
wrapper.updateEditorModels({
|
|
43
|
+
modelRef
|
|
44
|
+
});
|
|
45
|
+
|
|
31
46
|
// init second worker with port for client and worker
|
|
32
47
|
const stateMachineWorkerPort = loadStatemachinWorkerPort();
|
|
33
48
|
// use callback to receive message back from worker independent of the message channel the LSP is using
|
|
@@ -39,7 +54,11 @@ const startEditor = async () => {
|
|
|
39
54
|
port: channel.port2
|
|
40
55
|
}, [channel.port2]);
|
|
41
56
|
|
|
42
|
-
const langiumGlobalConfig2 = await createLangiumGlobalConfig(
|
|
57
|
+
const langiumGlobalConfig2 = await createLangiumGlobalConfig({
|
|
58
|
+
text,
|
|
59
|
+
worker: stateMachineWorkerPort,
|
|
60
|
+
messagePort: channel.port1
|
|
61
|
+
});
|
|
43
62
|
await wrapper2.initAndStart(langiumGlobalConfig2, document.getElementById('monaco-editor-root2'));
|
|
44
63
|
|
|
45
64
|
vscode.commands.getCommands().then((x) => {
|
package/src/node.ts
CHANGED
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
/* server side export only */
|
|
7
|
-
export * from './common/server-commons.js';
|
|
8
|
-
export * from './common/language-server-runner.js';
|
|
7
|
+
export * from './common/node/server-commons.js';
|
|
8
|
+
export * from './common/node/language-server-runner.js';
|
|
9
9
|
export * from './json/server/json-server.js';
|
|
10
10
|
export * from './json/server/main.js';
|
|
11
11
|
export * from './python/server/main.js';
|
|
12
|
-
export * from './utils/fs-utils.js';
|
|
@@ -4,16 +4,19 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import * as vscode from 'vscode';
|
|
7
|
+
import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override';
|
|
7
8
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
8
9
|
import '@codingame/monaco-vscode-python-default-extension';
|
|
9
10
|
import { UserConfig } from 'monaco-editor-wrapper';
|
|
11
|
+
import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services';
|
|
10
12
|
import { MonacoLanguageClient } from 'monaco-languageclient';
|
|
11
13
|
|
|
12
|
-
export const createUserConfig = (code: string): UserConfig => {
|
|
14
|
+
export const createUserConfig = (workspaceRoot: string, code: string, codeUri: string): UserConfig => {
|
|
13
15
|
return {
|
|
14
16
|
languageClientConfig: {
|
|
17
|
+
languageId: 'python',
|
|
18
|
+
name: 'Python Language Server Example',
|
|
15
19
|
options: {
|
|
16
|
-
name: 'Python Language Server Example',
|
|
17
20
|
$type: 'WebSocket',
|
|
18
21
|
host: 'localhost',
|
|
19
22
|
port: 30001,
|
|
@@ -40,46 +43,32 @@ export const createUserConfig = (code: string): UserConfig => {
|
|
|
40
43
|
workspaceFolder: {
|
|
41
44
|
index: 0,
|
|
42
45
|
name: 'workspace',
|
|
43
|
-
uri: vscode.Uri.parse(
|
|
46
|
+
uri: vscode.Uri.parse(workspaceRoot)
|
|
44
47
|
},
|
|
45
48
|
},
|
|
46
49
|
},
|
|
47
50
|
wrapperConfig: {
|
|
48
51
|
serviceConfig: {
|
|
49
52
|
userServices: {
|
|
53
|
+
...getEditorServiceOverride(useOpenEditorStub),
|
|
50
54
|
...getKeybindingsServiceOverride()
|
|
51
55
|
},
|
|
52
56
|
debugLogging: true
|
|
53
57
|
},
|
|
54
58
|
editorAppConfig: {
|
|
55
59
|
$type: 'extended',
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
name: 'python-client',
|
|
61
|
-
publisher: 'monaco-languageclient-project',
|
|
62
|
-
version: '1.0.0',
|
|
63
|
-
engines: {
|
|
64
|
-
vscode: '^1.85.0'
|
|
65
|
-
},
|
|
66
|
-
contributes: {
|
|
67
|
-
languages: [{
|
|
68
|
-
id: 'python',
|
|
69
|
-
extensions: ['.py', 'pyi'],
|
|
70
|
-
aliases: ['python'],
|
|
71
|
-
mimetypes: ['application/python'],
|
|
72
|
-
}],
|
|
73
|
-
}
|
|
60
|
+
codeResources: {
|
|
61
|
+
main: {
|
|
62
|
+
text: code,
|
|
63
|
+
uri: codeUri
|
|
74
64
|
}
|
|
75
|
-
}
|
|
65
|
+
},
|
|
76
66
|
userConfiguration: {
|
|
77
67
|
json: JSON.stringify({
|
|
78
68
|
'workbench.colorTheme': 'Default Dark Modern'
|
|
79
69
|
})
|
|
80
70
|
},
|
|
81
|
-
useDiffEditor: false
|
|
82
|
-
code
|
|
71
|
+
useDiffEditor: false
|
|
83
72
|
}
|
|
84
73
|
},
|
|
85
74
|
loggerConfig: {
|