monaco-languageclient-examples 2025.6.3 → 2025.8.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 +3 -2
- package/dist/appPlayground/common.d.ts +2 -2
- package/dist/appPlayground/common.d.ts.map +1 -1
- package/dist/appPlayground/common.js +3 -2
- package/dist/appPlayground/common.js.map +1 -1
- package/dist/appPlayground/config.d.ts +2 -4
- package/dist/appPlayground/config.d.ts.map +1 -1
- package/dist/appPlayground/config.js +63 -65
- package/dist/appPlayground/config.js.map +1 -1
- package/dist/appPlayground/launcher.js +1 -1
- package/dist/appPlayground/launcher.js.map +1 -1
- package/dist/appPlayground/main.d.ts.map +1 -1
- package/dist/appPlayground/main.js +4 -5
- package/dist/appPlayground/main.js.map +1 -1
- package/dist/appPlayground/reactLauncher.js +1 -1
- package/dist/appPlayground/reactLauncher.js.map +1 -1
- package/dist/appPlayground/reactMain.d.ts.map +1 -1
- package/dist/appPlayground/reactMain.js +3 -2
- package/dist/appPlayground/reactMain.js.map +1 -1
- package/dist/bare/client.d.ts.map +1 -1
- package/dist/bare/client.js +15 -12
- package/dist/bare/client.js.map +1 -1
- package/dist/browser/main.d.ts.map +1 -1
- package/dist/browser/main.js +27 -28
- package/dist/browser/main.js.map +1 -1
- package/dist/clangd/client/config.d.ts +3 -10
- package/dist/clangd/client/config.d.ts.map +1 -1
- package/dist/clangd/client/config.js +85 -85
- package/dist/clangd/client/config.js.map +1 -1
- package/dist/clangd/client/main.d.ts.map +1 -1
- package/dist/clangd/client/main.js +9 -12
- package/dist/clangd/client/main.js.map +1 -1
- package/dist/clangd/worker/clangd-server.js.map +1 -1
- package/dist/common/client/utils.d.ts +1 -8
- package/dist/common/client/utils.d.ts.map +1 -1
- package/dist/common/client/utils.js +3 -0
- package/dist/common/client/utils.js.map +1 -1
- package/dist/debugger/client/debugger.d.ts +1 -1
- package/dist/debugger/client/debugger.d.ts.map +1 -1
- package/dist/eclipse.jdt.ls/client/main.d.ts +1 -1
- package/dist/eclipse.jdt.ls/client/main.d.ts.map +1 -1
- package/dist/eclipse.jdt.ls/client/main.js +74 -4
- package/dist/eclipse.jdt.ls/client/main.js.map +1 -1
- package/dist/eclipse.jdt.ls/config.d.ts +5 -2
- package/dist/eclipse.jdt.ls/config.d.ts.map +1 -1
- package/dist/eclipse.jdt.ls/config.js +1 -2
- package/dist/eclipse.jdt.ls/config.js.map +1 -1
- package/dist/groovy/client/main.d.ts +1 -1
- package/dist/groovy/client/main.d.ts.map +1 -1
- package/dist/groovy/client/main.js +63 -4
- package/dist/groovy/client/main.js.map +1 -1
- package/dist/groovy/config.d.ts +5 -2
- package/dist/groovy/config.d.ts.map +1 -1
- package/dist/groovy/config.js +1 -2
- package/dist/groovy/config.js.map +1 -1
- package/dist/json/client/wrapperWs.d.ts +5 -0
- package/dist/json/client/wrapperWs.d.ts.map +1 -0
- package/dist/json/client/wrapperWs.js +87 -0
- package/dist/json/client/wrapperWs.js.map +1 -0
- package/dist/json/server/main.js.map +1 -1
- package/dist/langium/langium-dsl/config/classicConfig.d.ts +2 -2
- package/dist/langium/langium-dsl/config/classicConfig.d.ts.map +1 -1
- package/dist/langium/langium-dsl/config/classicConfig.js +45 -53
- package/dist/langium/langium-dsl/config/classicConfig.js.map +1 -1
- package/dist/langium/langium-dsl/config/extendedConfig.d.ts +2 -2
- package/dist/langium/langium-dsl/config/extendedConfig.d.ts.map +1 -1
- package/dist/langium/langium-dsl/config/extendedConfig.js +40 -40
- package/dist/langium/langium-dsl/config/extendedConfig.js.map +1 -1
- package/dist/langium/langium-dsl/wrapperLangium.d.ts.map +1 -1
- package/dist/langium/langium-dsl/wrapperLangium.js +16 -23
- package/dist/langium/langium-dsl/wrapperLangium.js.map +1 -1
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts +4 -4
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts.map +1 -1
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.js +41 -40
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.js.map +1 -1
- package/dist/langium/statemachine/launcher.js +1 -1
- package/dist/langium/statemachine/launcher.js.map +1 -1
- package/dist/langium/statemachine/ls/generated/ast.d.ts +127 -22
- package/dist/langium/statemachine/ls/generated/ast.d.ts.map +1 -1
- package/dist/langium/statemachine/ls/generated/ast.js +112 -97
- package/dist/langium/statemachine/ls/generated/ast.js.map +1 -1
- package/dist/langium/statemachine/ls/generated/grammar.d.ts +2 -2
- package/dist/langium/statemachine/ls/generated/grammar.d.ts.map +1 -1
- package/dist/langium/statemachine/ls/generated/grammar.js +43 -41
- package/dist/langium/statemachine/ls/generated/grammar.js.map +1 -1
- package/dist/langium/statemachine/ls/generated/module.d.ts +3 -3
- package/dist/langium/statemachine/ls/generated/module.d.ts.map +1 -1
- package/dist/langium/statemachine/ls/generated/module.js +6 -6
- package/dist/langium/statemachine/ls/generated/module.js.map +1 -1
- package/dist/langium/statemachine/ls/statemachine-module.js +2 -2
- package/dist/langium/statemachine/ls/statemachine-module.js.map +1 -1
- package/dist/langium/statemachine/main-react.js +3 -2
- 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 +27 -38
- package/dist/langium/statemachine/main.js.map +1 -1
- package/dist/multi/config.d.ts +1 -1
- package/dist/multi/config.d.ts.map +1 -1
- package/dist/multi/config.js +1 -0
- package/dist/multi/config.js.map +1 -1
- package/dist/multi/twoLanguageClients.d.ts.map +1 -1
- package/dist/multi/twoLanguageClients.js +49 -45
- package/dist/multi/twoLanguageClients.js.map +1 -1
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +3 -3
- package/dist/node.js.map +1 -1
- package/dist/python/client/config.d.ts +3 -7
- package/dist/python/client/config.d.ts.map +1 -1
- package/dist/python/client/config.js +97 -93
- package/dist/python/client/config.js.map +1 -1
- package/dist/python/client/main.d.ts.map +1 -1
- package/dist/python/client/main.js +10 -16
- package/dist/python/client/main.js.map +1 -1
- package/dist/python/client/reactPython.d.ts.map +1 -1
- package/dist/python/client/reactPython.js +9 -8
- package/dist/python/client/reactPython.js.map +1 -1
- package/dist/ts/wrapperTs.d.ts.map +1 -1
- package/dist/ts/wrapperTs.js +45 -50
- package/dist/ts/wrapperTs.js.map +1 -1
- package/json.html +1 -1
- package/package.json +45 -44
- package/src/appPlayground/common.ts +3 -3
- package/src/appPlayground/config.ts +65 -69
- package/src/appPlayground/launcher.ts +1 -2
- package/src/appPlayground/main.ts +5 -8
- package/src/appPlayground/reactLauncher.ts +1 -2
- package/src/appPlayground/reactMain.tsx +4 -4
- package/src/bare/client.ts +16 -15
- package/src/browser/main.ts +27 -29
- package/src/clangd/client/config.ts +87 -97
- package/src/clangd/client/main.ts +10 -14
- package/src/clangd/worker/clangd-server.ts +2 -2
- package/src/common/client/utils.ts +2 -7
- package/src/debugger/client/debugger.ts +1 -1
- package/src/eclipse.jdt.ls/client/main.ts +78 -4
- package/src/eclipse.jdt.ls/config.ts +2 -6
- package/src/groovy/client/main.ts +65 -4
- package/src/groovy/config.ts +2 -6
- package/src/json/client/wrapperWs.ts +90 -0
- package/src/json/server/main.ts +1 -1
- package/src/langium/langium-dsl/config/classicConfig.ts +48 -64
- package/src/langium/langium-dsl/config/extendedConfig.ts +42 -49
- package/src/langium/langium-dsl/wrapperLangium.ts +15 -25
- package/src/langium/statemachine/config/wrapperStatemachineConfig.ts +45 -48
- package/src/langium/statemachine/launcher.ts +1 -1
- package/src/langium/statemachine/ls/generated/ast.ts +131 -111
- package/src/langium/statemachine/ls/generated/grammar.ts +43 -41
- package/src/langium/statemachine/ls/generated/module.ts +6 -6
- package/src/langium/statemachine/ls/statemachine-module.ts +2 -2
- package/src/langium/statemachine/ls/statemachine.langium +20 -5
- package/src/langium/statemachine/main-react.tsx +4 -4
- package/src/langium/statemachine/main.ts +27 -43
- package/src/multi/config.ts +3 -3
- package/src/multi/twoLanguageClients.ts +52 -48
- package/src/node.ts +3 -3
- package/src/python/client/config.ts +99 -101
- package/src/python/client/main.ts +11 -20
- package/src/python/client/reactPython.tsx +10 -11
- package/src/ts/wrapperTs.ts +45 -52
- package/two_langauge_clients.html +1 -0
- package/dist/common/client/extendedClient.d.ts +0 -9
- package/dist/common/client/extendedClient.d.ts.map +0 -1
- package/dist/common/client/extendedClient.js +0 -97
- package/dist/common/client/extendedClient.js.map +0 -1
- package/dist/json/client/client.d.ts +0 -3
- package/dist/json/client/client.d.ts.map +0 -1
- package/dist/json/client/client.js +0 -13
- package/dist/json/client/client.js.map +0 -1
- package/dist/json/client/config.d.ts +0 -3
- package/dist/json/client/config.d.ts.map +0 -1
- package/dist/json/client/config.js +0 -11
- package/dist/json/client/config.js.map +0 -1
- package/src/common/client/extendedClient.ts +0 -111
- package/src/json/client/client.ts +0 -14
- package/src/json/client/config.ts +0 -13
package/src/groovy/config.ts
CHANGED
|
@@ -2,12 +2,8 @@
|
|
|
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 type { ExampleLsConfig } from '../common/client/extendedClient.js';
|
|
7
|
-
|
|
8
|
-
export const groovyConfig: ExampleLsConfig = {
|
|
5
|
+
export const groovyConfig = {
|
|
9
6
|
port: 30002,
|
|
10
7
|
path: '/groovy',
|
|
11
|
-
basePath: '/home/gradle/mlc/packages/examples/resources/groovy'
|
|
12
|
-
documentSelector: 'groovy'
|
|
8
|
+
basePath: '/home/gradle/mlc/packages/examples/resources/groovy'
|
|
13
9
|
};
|
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
7
|
+
// this is required syntax highlighting
|
|
8
|
+
import '@codingame/monaco-vscode-json-default-extension';
|
|
9
|
+
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
10
|
+
import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
|
|
11
|
+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
|
|
12
|
+
|
|
13
|
+
const text = `{
|
|
14
|
+
"$schema": "http://json.schemastore.org/coffeelint",
|
|
15
|
+
"line_endings": {"value": "unix"}
|
|
16
|
+
}`;
|
|
17
|
+
|
|
18
|
+
export const buildJsonClientUserConfig = (htmlContainer?: HTMLElement): WrapperConfig => {
|
|
19
|
+
return {
|
|
20
|
+
$type: 'extended',
|
|
21
|
+
htmlContainer,
|
|
22
|
+
logLevel: LogLevel.Debug,
|
|
23
|
+
vscodeApiConfig: {
|
|
24
|
+
serviceOverrides: {
|
|
25
|
+
...getKeybindingsServiceOverride(),
|
|
26
|
+
},
|
|
27
|
+
userConfiguration: {
|
|
28
|
+
json: JSON.stringify({
|
|
29
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
30
|
+
'editor.guides.bracketPairsHorizontal': 'active',
|
|
31
|
+
'editor.lightbulb.enabled': 'On',
|
|
32
|
+
'editor.wordBasedSuggestions': 'off',
|
|
33
|
+
'editor.experimental.asyncTokenization': true
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
editorAppConfig: {
|
|
38
|
+
codeResources: {
|
|
39
|
+
modified: {
|
|
40
|
+
text,
|
|
41
|
+
uri: '/workspace/test.json',
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
45
|
+
},
|
|
46
|
+
languageClientConfigs: {
|
|
47
|
+
configs: {
|
|
48
|
+
json: {
|
|
49
|
+
clientOptions: {
|
|
50
|
+
documentSelector: ['json']
|
|
51
|
+
},
|
|
52
|
+
connection: {
|
|
53
|
+
options: {
|
|
54
|
+
$type: 'WebSocketUrl',
|
|
55
|
+
url: 'ws://localhost:30000/sampleServer',
|
|
56
|
+
startOptions: {
|
|
57
|
+
onCall: () => {
|
|
58
|
+
console.log('Connected to socket.');
|
|
59
|
+
},
|
|
60
|
+
reportStatus: true
|
|
61
|
+
},
|
|
62
|
+
stopOptions: {
|
|
63
|
+
onCall: () => {
|
|
64
|
+
console.log('Disconnected from socket.');
|
|
65
|
+
},
|
|
66
|
+
reportStatus: true
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const runJsonWrapper = () => {
|
|
77
|
+
const wrapper = new MonacoEditorLanguageClientWrapper();
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
81
|
+
const config = buildJsonClientUserConfig(document.getElementById('monaco-editor-root')!);
|
|
82
|
+
await wrapper.initAndStart(config);
|
|
83
|
+
});
|
|
84
|
+
document.querySelector('#button-dispose')?.addEventListener('click', async () => {
|
|
85
|
+
await wrapper.dispose();
|
|
86
|
+
});
|
|
87
|
+
} catch (e) {
|
|
88
|
+
console.error(e);
|
|
89
|
+
}
|
|
90
|
+
};
|
package/src/json/server/main.ts
CHANGED
|
@@ -36,7 +36,7 @@ export const startMockHttpServerForSavingCodeFromEditor = () => {
|
|
|
36
36
|
app.post('/save-code', (req, res) => {
|
|
37
37
|
const { code } = req.body;
|
|
38
38
|
console.log('Received code:', code);
|
|
39
|
-
res.json({ success: true, message: code
|
|
39
|
+
res.json({ success: true, message: code});
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
const PORT = 3003;
|
|
@@ -6,83 +6,67 @@
|
|
|
6
6
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
7
7
|
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
8
8
|
import { MessageTransports } from 'vscode-languageclient';
|
|
9
|
-
import type { Logger } from 'monaco-languageclient/
|
|
10
|
-
import
|
|
11
|
-
import type {
|
|
12
|
-
import { defineDefaultWorkerLoaders
|
|
9
|
+
import type { Logger } from 'monaco-languageclient/tools';
|
|
10
|
+
import { useWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
11
|
+
import type { WrapperConfig } from 'monaco-editor-wrapper';
|
|
12
|
+
import { defineDefaultWorkerLoaders } from 'monaco-editor-wrapper/workers/workerLoaders';
|
|
13
13
|
import { LangiumMonarchContent } from './langium.monarch.js';
|
|
14
14
|
import code from '../../../../resources/langium/langium-dsl/example.langium?raw';
|
|
15
|
-
import type { ExampleAppConfig } from '../../../common/client/utils.js';
|
|
16
|
-
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
17
15
|
|
|
18
|
-
export const setupLangiumClientClassic = (params: {
|
|
16
|
+
export const setupLangiumClientClassic = async (params: {
|
|
19
17
|
worker: Worker
|
|
20
18
|
messageTransports?: MessageTransports,
|
|
21
|
-
}):
|
|
22
|
-
|
|
19
|
+
}): Promise<WrapperConfig> => {
|
|
23
20
|
const workerLoaders = defineDefaultWorkerLoaders();
|
|
24
21
|
workerLoaders.TextMateWorker = undefined;
|
|
25
|
-
|
|
26
|
-
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
22
|
+
return {
|
|
27
23
|
$type: 'classic',
|
|
28
|
-
logLevel: LogLevel.Debug,
|
|
29
24
|
htmlContainer: document.getElementById('monaco-editor-root')!,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
'workbench.colorTheme': 'GitHub Dark High Contrast',
|
|
36
|
-
'editor.guides.bracketPairsHorizontal': 'active',
|
|
37
|
-
'editor.wordBasedSuggestions': 'off',
|
|
38
|
-
'editor.experimental.asyncTokenization': true,
|
|
39
|
-
'vitest.disableWorkspaceWarning': true
|
|
40
|
-
})
|
|
41
|
-
},
|
|
42
|
-
monacoWorkerFactory: (logger?: Logger) => {
|
|
43
|
-
useWorkerFactory({
|
|
44
|
-
workerLoaders,
|
|
45
|
-
logger
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
const languageClientConfig: LanguageClientConfig = {
|
|
51
|
-
clientOptions: {
|
|
52
|
-
documentSelector: ['langium']
|
|
25
|
+
logLevel: LogLevel.Debug,
|
|
26
|
+
vscodeApiConfig: {
|
|
27
|
+
serviceOverrides: {
|
|
28
|
+
...getKeybindingsServiceOverride()
|
|
29
|
+
}
|
|
53
30
|
},
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
31
|
+
editorAppConfig: {
|
|
32
|
+
codeResources: {
|
|
33
|
+
modified: {
|
|
34
|
+
text: code,
|
|
35
|
+
uri: '/workspace/grammar.langium',
|
|
36
|
+
enforceLanguageId: 'langium'
|
|
37
|
+
}
|
|
58
38
|
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
39
|
+
editorOptions: {
|
|
40
|
+
'semanticHighlighting.enabled': true,
|
|
41
|
+
wordBasedSuggestions: 'off',
|
|
42
|
+
theme: 'vs-dark'
|
|
43
|
+
},
|
|
44
|
+
languageDef: {
|
|
45
|
+
monarchLanguage: LangiumMonarchContent,
|
|
46
|
+
languageExtensionConfig: { id: 'langium' }
|
|
47
|
+
},
|
|
48
|
+
monacoWorkerFactory: (logger?: Logger) => {
|
|
49
|
+
useWorkerFactory({
|
|
50
|
+
workerLoaders,
|
|
51
|
+
logger
|
|
52
|
+
});
|
|
70
53
|
}
|
|
71
54
|
},
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
55
|
+
languageClientConfigs: {
|
|
56
|
+
configs: {
|
|
57
|
+
langium: {
|
|
58
|
+
clientOptions: {
|
|
59
|
+
documentSelector: ['langium']
|
|
60
|
+
},
|
|
61
|
+
connection: {
|
|
62
|
+
options: {
|
|
63
|
+
$type: 'WorkerDirect',
|
|
64
|
+
worker: params.worker
|
|
65
|
+
},
|
|
66
|
+
messageTransports: params.messageTransports
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
80
70
|
}
|
|
81
71
|
};
|
|
82
|
-
|
|
83
|
-
return {
|
|
84
|
-
editorAppConfig,
|
|
85
|
-
vscodeApiConfig,
|
|
86
|
-
languageClientConfig
|
|
87
|
-
};
|
|
88
72
|
};
|
|
@@ -7,42 +7,39 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-
|
|
|
7
7
|
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
8
8
|
import '../../../../resources/vsix/github-vscode-theme.vsix';
|
|
9
9
|
import { MessageTransports } from 'vscode-languageclient';
|
|
10
|
-
import type {
|
|
11
|
-
import
|
|
12
|
-
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
10
|
+
import type { WrapperConfig } from 'monaco-editor-wrapper';
|
|
11
|
+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
|
|
13
12
|
import langiumLanguageConfig from './langium.configuration.json?raw';
|
|
14
13
|
import langiumTextmateGrammar from './langium.tmLanguage.json?raw';
|
|
15
14
|
import text from '../../../../resources/langium/langium-dsl//example.langium?raw';
|
|
16
|
-
import type { ExampleAppConfig } from '../../../common/client/utils.js';
|
|
17
|
-
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
18
15
|
|
|
19
|
-
export const setupLangiumClientExtended = (params: {
|
|
16
|
+
export const setupLangiumClientExtended = async (params: {
|
|
20
17
|
worker: Worker
|
|
21
18
|
messageTransports?: MessageTransports,
|
|
22
|
-
}):
|
|
19
|
+
}): Promise<WrapperConfig> => {
|
|
23
20
|
|
|
24
21
|
const extensionFilesOrContents = new Map<string, string | URL>();
|
|
25
22
|
// vite build is easier with string content
|
|
26
23
|
extensionFilesOrContents.set('/langium-configuration.json', langiumLanguageConfig);
|
|
27
24
|
extensionFilesOrContents.set('/langium-grammar.json', langiumTextmateGrammar);
|
|
28
|
-
|
|
29
|
-
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
25
|
+
return {
|
|
30
26
|
$type: 'extended',
|
|
31
|
-
logLevel: LogLevel.Debug,
|
|
32
27
|
htmlContainer: document.getElementById('monaco-editor-root')!,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
logLevel: LogLevel.Debug,
|
|
29
|
+
vscodeApiConfig: {
|
|
30
|
+
serviceOverrides: {
|
|
31
|
+
...getKeybindingsServiceOverride()
|
|
32
|
+
},
|
|
33
|
+
userConfiguration: {
|
|
34
|
+
json: JSON.stringify({
|
|
35
|
+
'workbench.colorTheme': 'GitHub Dark High Contrast',
|
|
36
|
+
'editor.guides.bracketPairsHorizontal': 'active',
|
|
37
|
+
'editor.wordBasedSuggestions': 'off',
|
|
38
|
+
'editor.experimental.asyncTokenization': true,
|
|
39
|
+
'vitest.disableWorkspaceWarning': true
|
|
40
|
+
})
|
|
41
|
+
}
|
|
44
42
|
},
|
|
45
|
-
monacoWorkerFactory: configureDefaultWorkerFactory,
|
|
46
43
|
extensions: [{
|
|
47
44
|
config: {
|
|
48
45
|
name: 'langium-example',
|
|
@@ -66,35 +63,31 @@ export const setupLangiumClientExtended = (params: {
|
|
|
66
63
|
}
|
|
67
64
|
},
|
|
68
65
|
filesOrContents: extensionFilesOrContents
|
|
69
|
-
}]
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
connection: {
|
|
77
|
-
options: {
|
|
78
|
-
$type: 'WorkerDirect',
|
|
79
|
-
worker: params.worker
|
|
66
|
+
}],
|
|
67
|
+
editorAppConfig: {
|
|
68
|
+
codeResources: {
|
|
69
|
+
modified: {
|
|
70
|
+
text,
|
|
71
|
+
uri: '/workspace/grammar.langium'
|
|
72
|
+
}
|
|
80
73
|
},
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
74
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
75
|
+
},
|
|
76
|
+
languageClientConfigs: {
|
|
77
|
+
configs: {
|
|
78
|
+
langium: {
|
|
79
|
+
clientOptions: {
|
|
80
|
+
documentSelector: ['langium']
|
|
81
|
+
},
|
|
82
|
+
connection: {
|
|
83
|
+
options: {
|
|
84
|
+
$type: 'WorkerDirect',
|
|
85
|
+
worker: params.worker
|
|
86
|
+
},
|
|
87
|
+
messageTransports: params.messageTransports
|
|
88
|
+
}
|
|
89
|
+
}
|
|
91
90
|
}
|
|
92
91
|
}
|
|
93
92
|
};
|
|
94
|
-
|
|
95
|
-
return {
|
|
96
|
-
editorAppConfig,
|
|
97
|
-
vscodeApiConfig,
|
|
98
|
-
languageClientConfig
|
|
99
|
-
};
|
|
100
93
|
};
|
|
@@ -4,19 +4,16 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
|
|
7
|
-
import {
|
|
8
|
-
import { EditorApp } from 'monaco-languageclient/editorApp';
|
|
7
|
+
import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
|
|
9
8
|
import { setupLangiumClientExtended } from './config/extendedConfig.js';
|
|
10
9
|
import { setupLangiumClientClassic } from './config/classicConfig.js';
|
|
11
|
-
import {
|
|
10
|
+
import { delayExecution, disableElement } from '../../common/client/utils.js';
|
|
12
11
|
import text from '../../../resources/langium/langium-dsl/example.langium?raw';
|
|
13
12
|
import workerUrl from './worker/langium-server?worker&url';
|
|
14
|
-
import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
|
|
15
|
-
import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
|
|
16
13
|
|
|
17
14
|
export const runLangiumDslWrapper = async (extendedMode: boolean) => {
|
|
18
15
|
try {
|
|
19
|
-
let
|
|
16
|
+
let wrapper: MonacoEditorLanguageClientWrapper | undefined;
|
|
20
17
|
|
|
21
18
|
const loadLangiumWorker = () => {
|
|
22
19
|
console.log(`Langium worker URL: ${workerUrl}`);
|
|
@@ -27,7 +24,7 @@ export const runLangiumDslWrapper = async (extendedMode: boolean) => {
|
|
|
27
24
|
};
|
|
28
25
|
|
|
29
26
|
const checkStarted = () => {
|
|
30
|
-
if (
|
|
27
|
+
if (wrapper?.isStarted() ?? false) {
|
|
31
28
|
alert('Editor was already started!\nPlease reload the page to test the alternative editor.');
|
|
32
29
|
return true;
|
|
33
30
|
}
|
|
@@ -45,32 +42,24 @@ export const runLangiumDslWrapper = async (extendedMode: boolean) => {
|
|
|
45
42
|
console.log('Received message from worker:', message);
|
|
46
43
|
});
|
|
47
44
|
|
|
48
|
-
let appConfig: ExampleAppConfig;
|
|
49
45
|
if (extendedMode) {
|
|
50
|
-
|
|
46
|
+
const config = await setupLangiumClientExtended({
|
|
51
47
|
worker,
|
|
52
48
|
messageTransports: { reader, writer }
|
|
53
49
|
});
|
|
50
|
+
wrapper = new MonacoEditorLanguageClientWrapper();
|
|
51
|
+
await wrapper.initAndStart(config);
|
|
54
52
|
} else {
|
|
55
|
-
|
|
53
|
+
const config = await setupLangiumClientClassic({
|
|
56
54
|
worker,
|
|
57
55
|
messageTransports: { reader, writer }
|
|
58
56
|
});
|
|
57
|
+
wrapper = new MonacoEditorLanguageClientWrapper();
|
|
58
|
+
await wrapper.initAndStart(config);
|
|
59
59
|
}
|
|
60
|
-
// perform global init
|
|
61
|
-
const apiWrapper = new MonacoVscodeApiWrapper(appConfig.vscodeApiConfig);
|
|
62
|
-
await apiWrapper.init();
|
|
63
|
-
|
|
64
|
-
// init language client
|
|
65
|
-
const lcWrapper = new LanguageClientWrapper(appConfig.languageClientConfig);
|
|
66
|
-
await lcWrapper.start();
|
|
67
|
-
|
|
68
|
-
// run editorApp
|
|
69
|
-
editorApp = new EditorApp(appConfig.editorAppConfig);
|
|
70
|
-
await editorApp.start(appConfig.vscodeApiConfig.htmlContainer!);
|
|
71
60
|
|
|
72
61
|
await delayExecution(1000);
|
|
73
|
-
await
|
|
62
|
+
await wrapper.updateCodeResources({
|
|
74
63
|
modified: {
|
|
75
64
|
text: `// modified file\n\n${text}`,
|
|
76
65
|
uri: '/workspace/mod.langium',
|
|
@@ -80,9 +69,10 @@ export const runLangiumDslWrapper = async (extendedMode: boolean) => {
|
|
|
80
69
|
};
|
|
81
70
|
|
|
82
71
|
const disposeEditor = async () => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
72
|
+
if (!wrapper) return;
|
|
73
|
+
wrapper.reportStatus();
|
|
74
|
+
await wrapper.dispose();
|
|
75
|
+
wrapper = undefined;
|
|
86
76
|
disableElement('button-start', false);
|
|
87
77
|
};
|
|
88
78
|
|
|
@@ -6,62 +6,65 @@
|
|
|
6
6
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
7
7
|
import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override';
|
|
8
8
|
import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override';
|
|
9
|
+
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services';
|
|
9
10
|
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
10
11
|
import { MessageTransports } from 'vscode-languageclient';
|
|
11
|
-
import {
|
|
12
|
-
import
|
|
13
|
-
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
14
|
-
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
15
|
-
import type { CodeContent, EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
12
|
+
import type { CodeContent, LanguageClientConfigs, WrapperConfig } from 'monaco-editor-wrapper';
|
|
13
|
+
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
|
|
16
14
|
|
|
17
15
|
// cannot be imported with assert as json contains comments
|
|
18
16
|
import statemachineLanguageConfig from './language-configuration.json?raw';
|
|
19
17
|
import responseStatemachineTm from '../syntaxes/statemachine.tmLanguage.json?raw';
|
|
20
|
-
import type { ExampleAppConfig } from '../../../common/client/utils.js';
|
|
21
18
|
|
|
22
19
|
export const createLangiumGlobalConfig = (params: {
|
|
23
20
|
languageServerId: string,
|
|
21
|
+
useLanguageClient: boolean,
|
|
24
22
|
codeContent: CodeContent,
|
|
25
|
-
worker
|
|
23
|
+
worker?: Worker,
|
|
26
24
|
messagePort?: MessagePort,
|
|
27
25
|
messageTransports?: MessageTransports,
|
|
28
26
|
htmlContainer: HTMLElement
|
|
29
|
-
}):
|
|
27
|
+
}): WrapperConfig => {
|
|
30
28
|
const extensionFilesOrContents = new Map<string, string | URL>();
|
|
31
29
|
extensionFilesOrContents.set(`/${params.languageServerId}-statemachine-configuration.json`, statemachineLanguageConfig);
|
|
32
30
|
extensionFilesOrContents.set(`/${params.languageServerId}-statemachine-grammar.json`, responseStatemachineTm);
|
|
33
31
|
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
32
|
+
const languageClientConfigs: LanguageClientConfigs | undefined = params.useLanguageClient && params.worker ? {
|
|
33
|
+
configs: {
|
|
34
|
+
statemachine: {
|
|
35
|
+
clientOptions: {
|
|
36
|
+
documentSelector: ['statemachine']
|
|
37
|
+
},
|
|
38
|
+
connection: {
|
|
39
|
+
options: {
|
|
40
|
+
$type: 'WorkerDirect',
|
|
41
|
+
worker: params.worker,
|
|
42
|
+
messagePort: params.messagePort,
|
|
43
|
+
},
|
|
44
|
+
messageTransports: params.messageTransports
|
|
45
|
+
}
|
|
46
|
+
}
|
|
45
47
|
}
|
|
46
|
-
};
|
|
48
|
+
} : undefined;
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
return {
|
|
49
51
|
$type: 'extended',
|
|
50
52
|
htmlContainer: params.htmlContainer,
|
|
51
53
|
logLevel: LogLevel.Debug,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
54
|
+
vscodeApiConfig: {
|
|
55
|
+
serviceOverrides: {
|
|
56
|
+
...getKeybindingsServiceOverride(),
|
|
57
|
+
...getLifecycleServiceOverride(),
|
|
58
|
+
...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
|
|
59
|
+
},
|
|
60
|
+
userConfiguration: {
|
|
61
|
+
json: JSON.stringify({
|
|
62
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
63
|
+
'editor.guides.bracketPairsHorizontal': 'active',
|
|
64
|
+
'editor.wordBasedSuggestions': 'off',
|
|
65
|
+
'editor.experimental.asyncTokenization': true
|
|
66
|
+
})
|
|
67
|
+
},
|
|
65
68
|
},
|
|
66
69
|
extensions: [{
|
|
67
70
|
config: {
|
|
@@ -86,19 +89,13 @@ export const createLangiumGlobalConfig = (params: {
|
|
|
86
89
|
}
|
|
87
90
|
},
|
|
88
91
|
filesOrContents: extensionFilesOrContents
|
|
89
|
-
}]
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
return {
|
|
100
|
-
editorAppConfig,
|
|
101
|
-
vscodeApiConfig,
|
|
102
|
-
languageClientConfig
|
|
92
|
+
}],
|
|
93
|
+
editorAppConfig: {
|
|
94
|
+
codeResources: {
|
|
95
|
+
modified: params.codeContent
|
|
96
|
+
},
|
|
97
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
98
|
+
},
|
|
99
|
+
languageClientConfigs
|
|
103
100
|
};
|
|
104
101
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import { initLocaleLoader } from 'monaco-
|
|
6
|
+
import { initLocaleLoader } from 'monaco-editor-wrapper/vscode/locale';
|
|
7
7
|
await initLocaleLoader();
|
|
8
8
|
|
|
9
9
|
const { runStatemachineWrapper } = await import('./main.js');
|