monaco-languageclient-examples 2025.6.1 → 2025.6.3
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 +8 -0
- package/dist/appPlayground/common.d.ts +2 -2
- package/dist/appPlayground/common.d.ts.map +1 -1
- package/dist/appPlayground/common.js +2 -3
- package/dist/appPlayground/common.js.map +1 -1
- package/dist/appPlayground/config.d.ts +7 -5
- package/dist/appPlayground/config.d.ts.map +1 -1
- package/dist/appPlayground/config.js +91 -78
- 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 +6 -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 -4
- package/dist/appPlayground/reactMain.js.map +1 -1
- package/dist/bare/client.d.ts.map +1 -1
- package/dist/bare/client.js +12 -15
- package/dist/bare/client.js.map +1 -1
- package/dist/browser/main.d.ts.map +1 -1
- package/dist/browser/main.js +28 -27
- package/dist/browser/main.js.map +1 -1
- package/dist/clangd/client/config.d.ts +10 -3
- 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 +14 -11
- package/dist/clangd/client/main.js.map +1 -1
- package/dist/common/client/extendedClient.d.ts +9 -0
- package/dist/common/client/extendedClient.d.ts.map +1 -0
- package/dist/common/client/extendedClient.js +97 -0
- package/dist/common/client/extendedClient.js.map +1 -0
- package/dist/common/client/utils.d.ts +9 -4
- package/dist/common/client/utils.d.ts.map +1 -1
- package/dist/common/client/utils.js +3 -7
- 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 +4 -74
- package/dist/eclipse.jdt.ls/client/main.js.map +1 -1
- package/dist/eclipse.jdt.ls/config.d.ts +2 -5
- package/dist/eclipse.jdt.ls/config.d.ts.map +1 -1
- package/dist/eclipse.jdt.ls/config.js +2 -1
- 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 +4 -63
- package/dist/groovy/client/main.js.map +1 -1
- package/dist/groovy/config.d.ts +2 -5
- package/dist/groovy/config.d.ts.map +1 -1
- package/dist/groovy/config.js +2 -1
- package/dist/groovy/config.js.map +1 -1
- package/dist/json/client/client.d.ts +3 -0
- package/dist/json/client/client.d.ts.map +1 -0
- package/dist/json/client/client.js +13 -0
- package/dist/json/client/client.js.map +1 -0
- package/dist/json/client/config.d.ts +3 -0
- package/dist/json/client/config.d.ts.map +1 -0
- package/dist/json/client/config.js +11 -0
- package/dist/json/client/config.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 +53 -45
- 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 +23 -16
- 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 +40 -41
- 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/main-react.js +2 -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 +38 -27
- 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 +0 -1
- package/dist/multi/config.js.map +1 -1
- package/dist/multi/twoLanguageClients.d.ts.map +1 -1
- package/dist/multi/twoLanguageClients.js +45 -49
- package/dist/multi/twoLanguageClients.js.map +1 -1
- package/dist/node.d.ts +0 -3
- 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 +7 -3
- package/dist/python/client/config.d.ts.map +1 -1
- package/dist/python/client/config.js +108 -112
- 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 +16 -10
- 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 +8 -9
- package/dist/python/client/reactPython.js.map +1 -1
- package/dist/ts/wrapperTs.d.ts.map +1 -1
- package/dist/ts/wrapperTs.js +50 -45
- package/dist/ts/wrapperTs.js.map +1 -1
- package/json.html +1 -1
- package/package.json +41 -41
- package/src/appPlayground/common.ts +3 -3
- package/src/appPlayground/config.ts +97 -81
- package/src/appPlayground/launcher.ts +2 -1
- package/src/appPlayground/main.ts +9 -6
- package/src/appPlayground/reactLauncher.ts +2 -1
- package/src/appPlayground/reactMain.tsx +5 -5
- package/src/bare/client.ts +15 -16
- package/src/browser/main.ts +29 -27
- package/src/clangd/client/config.ts +97 -87
- package/src/clangd/client/main.ts +16 -12
- package/src/common/client/extendedClient.ts +111 -0
- package/src/common/client/utils.ts +18 -18
- package/src/debugger/client/debugger.ts +1 -1
- package/src/eclipse.jdt.ls/client/main.ts +4 -78
- package/src/eclipse.jdt.ls/config.ts +6 -2
- package/src/groovy/client/main.ts +4 -65
- package/src/groovy/config.ts +6 -2
- package/src/json/client/client.ts +14 -0
- package/src/json/client/config.ts +13 -0
- package/src/json/server/main.ts +1 -1
- package/src/langium/langium-dsl/config/classicConfig.ts +64 -48
- package/src/langium/langium-dsl/config/extendedConfig.ts +49 -42
- package/src/langium/langium-dsl/wrapperLangium.ts +25 -15
- package/src/langium/statemachine/config/wrapperStatemachineConfig.ts +48 -45
- package/src/langium/statemachine/launcher.ts +1 -1
- package/src/langium/statemachine/main-react.tsx +4 -4
- package/src/langium/statemachine/main.ts +43 -27
- package/src/multi/config.ts +3 -3
- package/src/multi/twoLanguageClients.ts +48 -52
- package/src/node.ts +3 -3
- package/src/python/client/config.ts +116 -114
- package/src/python/client/main.ts +20 -11
- package/src/python/client/reactPython.tsx +11 -10
- package/src/ts/wrapperTs.ts +52 -45
- package/two_langauge_clients.html +0 -1
- package/dist/json/client/wrapperWs.d.ts +0 -5
- package/dist/json/client/wrapperWs.d.ts.map +0 -1
- package/dist/json/client/wrapperWs.js +0 -87
- package/dist/json/client/wrapperWs.js.map +0 -1
- package/src/json/client/wrapperWs.ts +0 -90
|
@@ -6,65 +6,62 @@
|
|
|
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';
|
|
10
9
|
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
11
10
|
import { MessageTransports } from 'vscode-languageclient';
|
|
12
|
-
import
|
|
13
|
-
import {
|
|
11
|
+
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscodeApiLocales';
|
|
12
|
+
import type { MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
13
|
+
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
14
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
15
|
+
import type { CodeContent, EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
14
16
|
|
|
15
17
|
// cannot be imported with assert as json contains comments
|
|
16
18
|
import statemachineLanguageConfig from './language-configuration.json?raw';
|
|
17
19
|
import responseStatemachineTm from '../syntaxes/statemachine.tmLanguage.json?raw';
|
|
20
|
+
import type { ExampleAppConfig } from '../../../common/client/utils.js';
|
|
18
21
|
|
|
19
22
|
export const createLangiumGlobalConfig = (params: {
|
|
20
23
|
languageServerId: string,
|
|
21
|
-
useLanguageClient: boolean,
|
|
22
24
|
codeContent: CodeContent,
|
|
23
|
-
worker
|
|
25
|
+
worker: Worker,
|
|
24
26
|
messagePort?: MessagePort,
|
|
25
27
|
messageTransports?: MessageTransports,
|
|
26
28
|
htmlContainer: HTMLElement
|
|
27
|
-
}):
|
|
29
|
+
}): ExampleAppConfig => {
|
|
28
30
|
const extensionFilesOrContents = new Map<string, string | URL>();
|
|
29
31
|
extensionFilesOrContents.set(`/${params.languageServerId}-statemachine-configuration.json`, statemachineLanguageConfig);
|
|
30
32
|
extensionFilesOrContents.set(`/${params.languageServerId}-statemachine-grammar.json`, responseStatemachineTm);
|
|
31
33
|
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
},
|
|
44
|
-
messageTransports: params.messageTransports
|
|
45
|
-
}
|
|
46
|
-
}
|
|
34
|
+
const languageClientConfig: LanguageClientConfig = {
|
|
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
|
|
47
45
|
}
|
|
48
|
-
}
|
|
46
|
+
};
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
51
49
|
$type: 'extended',
|
|
52
50
|
htmlContainer: params.htmlContainer,
|
|
53
51
|
logLevel: LogLevel.Debug,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
},
|
|
52
|
+
serviceOverrides: {
|
|
53
|
+
...getKeybindingsServiceOverride(),
|
|
54
|
+
...getLifecycleServiceOverride(),
|
|
55
|
+
...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
|
|
56
|
+
},
|
|
57
|
+
monacoWorkerFactory: configureDefaultWorkerFactory,
|
|
58
|
+
userConfiguration: {
|
|
59
|
+
json: JSON.stringify({
|
|
60
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
61
|
+
'editor.guides.bracketPairsHorizontal': 'active',
|
|
62
|
+
'editor.wordBasedSuggestions': 'off',
|
|
63
|
+
'editor.experimental.asyncTokenization': true
|
|
64
|
+
})
|
|
68
65
|
},
|
|
69
66
|
extensions: [{
|
|
70
67
|
config: {
|
|
@@ -89,13 +86,19 @@ export const createLangiumGlobalConfig = (params: {
|
|
|
89
86
|
}
|
|
90
87
|
},
|
|
91
88
|
filesOrContents: extensionFilesOrContents
|
|
92
|
-
}]
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
89
|
+
}]
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const editorAppConfig: EditorAppConfig = {
|
|
93
|
+
$type: vscodeApiConfig.$type,
|
|
94
|
+
codeResources: {
|
|
95
|
+
modified: params.codeContent
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
return {
|
|
100
|
+
editorAppConfig,
|
|
101
|
+
vscodeApiConfig,
|
|
102
|
+
languageClientConfig
|
|
100
103
|
};
|
|
101
104
|
};
|
|
@@ -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-languageclient/vscodeApiLocales';
|
|
7
7
|
await initLocaleLoader();
|
|
8
8
|
|
|
9
9
|
const { runStatemachineWrapper } = await import('./main.js');
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import React, { StrictMode, useEffect, useState } from 'react';
|
|
7
7
|
import ReactDOM from 'react-dom/client';
|
|
8
8
|
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
|
|
9
|
-
import type { TextContents } from 'monaco-
|
|
9
|
+
import type { TextContents } from 'monaco-languageclient/editorApp';
|
|
10
10
|
import { MonacoEditorReactComp } from '@typefox/monaco-editor-react';
|
|
11
11
|
import { createLangiumGlobalConfig } from './config/wrapperStatemachineConfig.js';
|
|
12
12
|
import { loadStatemachineWorkerRegular } from './main.js';
|
|
@@ -20,9 +20,8 @@ export const runStatemachineReact = async () => {
|
|
|
20
20
|
reader.listen((message) => {
|
|
21
21
|
console.log('Received message from worker:', message);
|
|
22
22
|
});
|
|
23
|
-
const
|
|
23
|
+
const appConfig = createLangiumGlobalConfig({
|
|
24
24
|
languageServerId: 'react',
|
|
25
|
-
useLanguageClient: true,
|
|
26
25
|
codeContent: {
|
|
27
26
|
text,
|
|
28
27
|
uri: '/workspace/example.statemachine'
|
|
@@ -62,7 +61,8 @@ export const runStatemachineReact = async () => {
|
|
|
62
61
|
<div style={{ 'height': height }} >
|
|
63
62
|
<MonacoEditorReactComp
|
|
64
63
|
style={{ 'height': '100%' }}
|
|
65
|
-
|
|
64
|
+
vscodeApiConfig={appConfig.vscodeApiConfig}
|
|
65
|
+
editorAppConfig={appConfig.editorAppConfig}
|
|
66
66
|
onTextChanged={onTextChanged}
|
|
67
67
|
/>
|
|
68
68
|
<b>Debug:</b><br />{testState}
|
|
@@ -5,22 +5,26 @@
|
|
|
5
5
|
|
|
6
6
|
import * as vscode from 'vscode';
|
|
7
7
|
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
|
|
8
|
-
import {
|
|
8
|
+
import { EditorApp } from 'monaco-languageclient/editorApp';
|
|
9
9
|
import { createLangiumGlobalConfig } from './config/wrapperStatemachineConfig.js';
|
|
10
10
|
import workerUrl from './worker/statemachine-server?worker&url';
|
|
11
11
|
import workerPortUrl from './worker/statemachine-server-port?worker&url';
|
|
12
12
|
import text from '../../../resources/langium/statemachine/example.statemachine?raw';
|
|
13
13
|
import textMod from '../../../resources/langium/statemachine/example-mod.statemachine?raw';
|
|
14
|
-
import {
|
|
14
|
+
import { disableElement } from '../../common/client/utils.js';
|
|
15
|
+
import { delayExecution } from 'monaco-languageclient/common';
|
|
16
|
+
import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
|
|
17
|
+
import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
let editorApp: EditorApp | undefined;
|
|
20
|
+
let editorApp2: EditorApp | undefined;
|
|
21
|
+
let lcWrapper: LanguageClientWrapper;
|
|
18
22
|
|
|
19
23
|
const startEditor = async () => {
|
|
20
24
|
disableElement('button-start', true);
|
|
21
25
|
disableElement('button-dispose', false);
|
|
22
26
|
|
|
23
|
-
if (
|
|
27
|
+
if (editorApp?.isStarted() === true || editorApp2?.isStarted() === true) {
|
|
24
28
|
alert('Editor was already started!');
|
|
25
29
|
return;
|
|
26
30
|
}
|
|
@@ -43,39 +47,49 @@ const startEditor = async () => {
|
|
|
43
47
|
});
|
|
44
48
|
|
|
45
49
|
// the configuration does not contain any text content
|
|
46
|
-
const
|
|
50
|
+
const appConfig = createLangiumGlobalConfig({
|
|
47
51
|
languageServerId: 'first',
|
|
48
52
|
codeContent: {
|
|
49
53
|
text,
|
|
50
54
|
uri: '/workspace/example.statemachine'
|
|
51
55
|
},
|
|
52
|
-
useLanguageClient: true,
|
|
53
56
|
worker: stateMachineWorkerPort,
|
|
54
57
|
messagePort: channel.port1,
|
|
55
58
|
messageTransports: { reader, writer },
|
|
56
59
|
htmlContainer: document.getElementById('monaco-editor-root')!
|
|
57
60
|
});
|
|
58
|
-
|
|
61
|
+
editorApp = new EditorApp(appConfig.editorAppConfig);
|
|
59
62
|
|
|
60
|
-
|
|
63
|
+
// perform global init
|
|
64
|
+
const apiWrapper = new MonacoVscodeApiWrapper(appConfig.vscodeApiConfig);
|
|
65
|
+
await apiWrapper.init();
|
|
66
|
+
|
|
67
|
+
// init language client
|
|
68
|
+
lcWrapper = new LanguageClientWrapper(appConfig.languageClientConfig);
|
|
69
|
+
await lcWrapper.start();
|
|
70
|
+
|
|
71
|
+
// run editorApp
|
|
72
|
+
await editorApp.start(appConfig.vscodeApiConfig.htmlContainer!);
|
|
73
|
+
|
|
74
|
+
editorApp.updateCodeResources({
|
|
61
75
|
modified: {
|
|
62
76
|
text,
|
|
63
77
|
uri: '/workspace/statemachine-mod.statemachine'
|
|
64
78
|
}
|
|
65
79
|
});
|
|
66
80
|
|
|
67
|
-
// start the second
|
|
81
|
+
// start the second editorApp without any languageclient config
|
|
68
82
|
// => they share the language server and both text contents have different uris
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
await
|
|
83
|
+
const appConfig2 = appConfig;
|
|
84
|
+
appConfig2.editorAppConfig.codeResources!.modified = {
|
|
85
|
+
text: textMod,
|
|
86
|
+
uri: '/workspace/example-mod.statemachine'
|
|
87
|
+
};
|
|
88
|
+
appConfig2.vscodeApiConfig.htmlContainer = document.getElementById('monaco-editor-root2')!;
|
|
89
|
+
editorApp2 = new EditorApp(appConfig2.editorAppConfig);
|
|
90
|
+
|
|
91
|
+
// run editorApp
|
|
92
|
+
await editorApp2.start(appConfig2.vscodeApiConfig.htmlContainer);
|
|
79
93
|
|
|
80
94
|
vscode.commands.getCommands().then((x) => {
|
|
81
95
|
console.log('Currently registered # of vscode commands: ' + x.length);
|
|
@@ -83,7 +97,7 @@ const startEditor = async () => {
|
|
|
83
97
|
|
|
84
98
|
await delayExecution(1000);
|
|
85
99
|
|
|
86
|
-
|
|
100
|
+
editorApp.updateCodeResources({
|
|
87
101
|
modified: {
|
|
88
102
|
text: `// modified file\n\n${text}`,
|
|
89
103
|
uri: '/workspace/statemachine-mod2.statemachine'
|
|
@@ -95,13 +109,15 @@ const disposeEditor = async () => {
|
|
|
95
109
|
disableElement('button-start', false);
|
|
96
110
|
disableElement('button-dispose', true);
|
|
97
111
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
lcWrapper.dispose();
|
|
113
|
+
|
|
114
|
+
editorApp?.reportStatus();
|
|
115
|
+
await editorApp?.dispose();
|
|
116
|
+
console.log(editorApp?.reportStatus().join('\n'));
|
|
101
117
|
|
|
102
|
-
|
|
103
|
-
await
|
|
104
|
-
console.log(
|
|
118
|
+
editorApp2?.reportStatus();
|
|
119
|
+
await editorApp2?.dispose();
|
|
120
|
+
console.log(editorApp2?.reportStatus().join('\n'));
|
|
105
121
|
};
|
|
106
122
|
|
|
107
123
|
export const runStatemachineWrapper = async () => {
|
package/src/multi/config.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import * as vscode from 'vscode';
|
|
7
|
-
import {
|
|
8
|
-
import type {
|
|
7
|
+
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
8
|
+
import type { BaseLanguageClient } from 'vscode-languageclient/browser.js';
|
|
9
9
|
|
|
10
10
|
export const createJsonLanguageClientConfig: () => LanguageClientConfig = () => {
|
|
11
11
|
return {
|
|
@@ -38,7 +38,7 @@ export const createPythonLanguageClientConfig: () => LanguageClientConfig = () =
|
|
|
38
38
|
authorization: 'UserAuth'
|
|
39
39
|
},
|
|
40
40
|
startOptions: {
|
|
41
|
-
onCall: (languageClient?:
|
|
41
|
+
onCall: (languageClient?: BaseLanguageClient) => {
|
|
42
42
|
setTimeout(() => {
|
|
43
43
|
['pyright.restartserver', 'pyright.organizeimports'].forEach((cmdName) => {
|
|
44
44
|
vscode.commands.registerCommand(cmdName, (...args: unknown[]) => {
|
|
@@ -9,10 +9,12 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-
|
|
|
9
9
|
import '@codingame/monaco-vscode-json-default-extension';
|
|
10
10
|
import '@codingame/monaco-vscode-python-default-extension';
|
|
11
11
|
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
12
|
-
import {
|
|
13
|
-
import { configureDefaultWorkerFactory } from 'monaco-
|
|
12
|
+
import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
13
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
14
14
|
import { disableElement } from '../common/client/utils.js';
|
|
15
15
|
import { createJsonLanguageClientConfig, createPythonLanguageClientConfig } from './config.js';
|
|
16
|
+
import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
17
|
+
import { LanguageClientsManager } from 'monaco-languageclient/lcwrapper';
|
|
16
18
|
|
|
17
19
|
export const runMultipleLanguageClientsExample = async () => {
|
|
18
20
|
disableElement('button-flip', true);
|
|
@@ -31,64 +33,63 @@ print("Hello Moon!")
|
|
|
31
33
|
let currentText = textJson;
|
|
32
34
|
let currenFileExt = 'json';
|
|
33
35
|
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
+
const htmlContainer = document.getElementById('monaco-editor-root')!;
|
|
37
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
36
38
|
$type: 'extended',
|
|
37
|
-
htmlContainer
|
|
39
|
+
htmlContainer,
|
|
38
40
|
logLevel: LogLevel.Debug,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
...getKeybindingsServiceOverride()
|
|
42
|
-
},
|
|
43
|
-
userConfiguration: {
|
|
44
|
-
json: JSON.stringify({
|
|
45
|
-
'workbench.colorTheme': 'Default Dark Modern',
|
|
46
|
-
'editor.wordBasedSuggestions': 'off',
|
|
47
|
-
'editor.experimental.asyncTokenization': true
|
|
48
|
-
})
|
|
49
|
-
}
|
|
41
|
+
serviceOverrides: {
|
|
42
|
+
...getKeybindingsServiceOverride()
|
|
50
43
|
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
44
|
+
userConfiguration: {
|
|
45
|
+
json: JSON.stringify({
|
|
46
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
47
|
+
'editor.wordBasedSuggestions': 'off',
|
|
48
|
+
'editor.experimental.asyncTokenization': true
|
|
49
|
+
})
|
|
59
50
|
},
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const editorAppConfig: EditorAppConfig = {
|
|
55
|
+
$type: vscodeApiConfig.$type,
|
|
56
|
+
id: '42',
|
|
57
|
+
codeResources: {
|
|
58
|
+
modified: {
|
|
59
|
+
text: currentText,
|
|
60
|
+
uri: `/workspace/example.${currenFileExt}`
|
|
64
61
|
}
|
|
65
62
|
}
|
|
66
63
|
};
|
|
67
64
|
|
|
68
|
-
|
|
65
|
+
// perform global init
|
|
66
|
+
const apiWrapper = new MonacoVscodeApiWrapper(vscodeApiConfig);
|
|
67
|
+
await apiWrapper.init();
|
|
68
|
+
|
|
69
|
+
const lcManager = new LanguageClientsManager();
|
|
70
|
+
const languageClientConfigs = {
|
|
71
|
+
configs: {
|
|
72
|
+
json: createJsonLanguageClientConfig(),
|
|
73
|
+
python: createPythonLanguageClientConfig()
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const editorApp = new EditorApp(editorAppConfig);
|
|
69
78
|
|
|
70
79
|
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
71
80
|
try {
|
|
72
81
|
disableElement('button-start', true);
|
|
73
82
|
disableElement('button-flip', false);
|
|
74
|
-
disableElement('checkbox-extlc', true);
|
|
75
|
-
|
|
76
|
-
const externalLc = (document.getElementById('checkbox-extlc') as HTMLInputElement).checked;
|
|
77
|
-
wrapperConfig.languageClientConfigs!.automaticallyInit = !externalLc;
|
|
78
|
-
wrapperConfig.languageClientConfigs!.automaticallyStart = !externalLc;
|
|
79
|
-
wrapperConfig.languageClientConfigs!.automaticallyDispose = !externalLc;
|
|
80
83
|
|
|
81
|
-
await
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
await editorApp.start(htmlContainer);
|
|
85
|
+
if (editorAppConfig.codeResources?.modified !== undefined) {
|
|
86
|
+
editorAppConfig.codeResources.modified.text = currentText;
|
|
87
|
+
editorAppConfig.codeResources.modified.uri = `/workspace/example.${currenFileExt}`;
|
|
85
88
|
}
|
|
86
89
|
|
|
87
|
-
// init language clients after start
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
await wrapper.startLanguageClients();
|
|
91
|
-
}
|
|
90
|
+
// init and start language clients after start
|
|
91
|
+
await lcManager.setConfigs(languageClientConfigs);
|
|
92
|
+
await lcManager.start();
|
|
92
93
|
} catch (e) {
|
|
93
94
|
console.error(e);
|
|
94
95
|
}
|
|
@@ -98,18 +99,13 @@ print("Hello Moon!")
|
|
|
98
99
|
disableElement('button-dispose', true);
|
|
99
100
|
disableElement('button-start', false);
|
|
100
101
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
await wrapper.dispose();
|
|
104
|
-
|
|
105
|
-
if (externalLc) {
|
|
106
|
-
wrapper.disposeLanguageClients();
|
|
107
|
-
}
|
|
102
|
+
await editorApp.dispose();
|
|
103
|
+
await lcManager.dispose();
|
|
108
104
|
});
|
|
109
105
|
document.querySelector('#button-flip')?.addEventListener('click', async () => {
|
|
110
106
|
currentText = currentText === textJson ? textPython : textJson;
|
|
111
107
|
currenFileExt = currenFileExt === 'json' ? 'py' : 'json';
|
|
112
|
-
|
|
108
|
+
editorApp.updateCodeResources({
|
|
113
109
|
modified: {
|
|
114
110
|
text: currentText,
|
|
115
111
|
uri: `/workspace/example.${currenFileExt}`
|
package/src/node.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
/* server side export only */
|
|
7
7
|
export * from './common/node/server-commons.js';
|
|
8
8
|
export * from './common/node/language-server-runner.js';
|
|
9
|
-
export * from './json/server/json-server.js';
|
|
10
|
-
export * from './json/server/main.js';
|
|
11
|
-
export * from './python/server/main.js';
|
|
9
|
+
// export * from './json/server/json-server.js';
|
|
10
|
+
// export * from './json/server/main.js';
|
|
11
|
+
// export * from './python/server/main.js';
|