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
|
@@ -3,37 +3,38 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
7
|
+
import getDebugServiceOverride from '@codingame/monaco-vscode-debug-service-override';
|
|
8
|
+
import getEnvironmentServiceOverride from '@codingame/monaco-vscode-environment-service-override';
|
|
9
|
+
import getExplorerServiceOverride from '@codingame/monaco-vscode-explorer-service-override';
|
|
10
|
+
import { RegisteredFileSystemProvider, RegisteredMemoryFile, registerFileSystemOverlay } from '@codingame/monaco-vscode-files-service-override';
|
|
7
11
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
8
12
|
import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override';
|
|
9
13
|
import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import getTitleBarServiceOverride from '@codingame/monaco-vscode-view-title-bar-service-override';
|
|
13
|
-
import getExplorerServiceOverride from '@codingame/monaco-vscode-explorer-service-override';
|
|
14
|
+
import getPreferencesServiceOverride from '@codingame/monaco-vscode-preferences-service-override';
|
|
15
|
+
import '@codingame/monaco-vscode-python-default-extension';
|
|
14
16
|
import getRemoteAgentServiceOverride from '@codingame/monaco-vscode-remote-agent-service-override';
|
|
15
|
-
import
|
|
17
|
+
import getSearchServiceOverride from '@codingame/monaco-vscode-search-service-override';
|
|
16
18
|
import getSecretStorageServiceOverride from '@codingame/monaco-vscode-secret-storage-service-override';
|
|
17
19
|
import getStorageServiceOverride from '@codingame/monaco-vscode-storage-service-override';
|
|
18
|
-
import getSearchServiceOverride from '@codingame/monaco-vscode-search-service-override';
|
|
19
|
-
import getDebugServiceOverride from '@codingame/monaco-vscode-debug-service-override';
|
|
20
20
|
import getTestingServiceOverride from '@codingame/monaco-vscode-testing-service-override';
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import '@codingame/monaco-vscode-
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/
|
|
21
|
+
import getBannerServiceOverride from '@codingame/monaco-vscode-view-banner-service-override';
|
|
22
|
+
import getStatusBarServiceOverride from '@codingame/monaco-vscode-view-status-bar-service-override';
|
|
23
|
+
import getTitleBarServiceOverride from '@codingame/monaco-vscode-view-title-bar-service-override';
|
|
24
|
+
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
25
|
+
import { createUrl } from 'monaco-languageclient/common';
|
|
26
|
+
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
27
|
+
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscodeApiLocales';
|
|
28
|
+
import { defaultHtmlAugmentationInstructions, defaultViewsInit, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
29
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
30
|
+
import * as vscode from 'vscode';
|
|
31
|
+
import type { BaseLanguageClient } from 'vscode-languageclient/browser.js';
|
|
28
32
|
import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
|
|
29
|
-
import
|
|
30
|
-
import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
|
|
31
|
-
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
|
|
32
|
-
import { createDefaultWorkspaceFile } from '../../common/client/utils.js';
|
|
33
|
-
import { provideDebuggerExtensionConfig } from '../../debugger/client/debugger.js';
|
|
33
|
+
import badPyCode from '../../../resources/python/bad.py?raw';
|
|
34
34
|
import helloPyCode from '../../../resources/python/hello.py?raw';
|
|
35
35
|
import hello2PyCode from '../../../resources/python/hello2.py?raw';
|
|
36
|
-
import
|
|
36
|
+
import { createDefaultWorkspaceContent } from '../../common/client/utils.js';
|
|
37
|
+
import { provideDebuggerExtensionConfig } from '../../debugger/client/debugger.js';
|
|
37
38
|
import { createDebugLaunchConfigFile, type ConfigParams, type FileDefinition } from '../../debugger/common/definitions.js';
|
|
38
39
|
|
|
39
40
|
export const createDefaultConfigParams = (homeDir: string, htmlContainer?: HTMLElement): ConfigParams => {
|
|
@@ -67,7 +68,7 @@ export const createDefaultConfigParams = (homeDir: string, htmlContainer?: HTMLE
|
|
|
67
68
|
fileSystemProvider.registerFile(new RegisteredMemoryFile(files.get('hello.py')!.uri, helloPyCode));
|
|
68
69
|
fileSystemProvider.registerFile(new RegisteredMemoryFile(files.get('hello2.py')!.uri, hello2PyCode));
|
|
69
70
|
fileSystemProvider.registerFile(new RegisteredMemoryFile(files.get('bad.py')!.uri, badPyCode));
|
|
70
|
-
fileSystemProvider.registerFile(
|
|
71
|
+
fileSystemProvider.registerFile(new RegisteredMemoryFile(configParams.workspaceFile, createDefaultWorkspaceContent(workspaceRoot)));
|
|
71
72
|
fileSystemProvider.registerFile(createDebugLaunchConfigFile(workspaceRoot, configParams.languageId));
|
|
72
73
|
registerFileSystemOverlay(1, fileSystemProvider);
|
|
73
74
|
|
|
@@ -75,11 +76,13 @@ export const createDefaultConfigParams = (homeDir: string, htmlContainer?: HTMLE
|
|
|
75
76
|
};
|
|
76
77
|
|
|
77
78
|
export type PythonAppConfig = {
|
|
78
|
-
|
|
79
|
+
languageClientConfig: LanguageClientConfig;
|
|
80
|
+
vscodeApiConfig: MonacoVscodeApiConfig;
|
|
81
|
+
editorAppConfig: EditorAppConfig;
|
|
79
82
|
configParams: ConfigParams;
|
|
80
83
|
}
|
|
81
84
|
|
|
82
|
-
export const
|
|
85
|
+
export const createPythonAppConfig = (): PythonAppConfig => {
|
|
83
86
|
const configParams = createDefaultConfigParams('/home/mlc', document.body);
|
|
84
87
|
|
|
85
88
|
const url = createUrl({
|
|
@@ -96,101 +99,65 @@ export const createWrapperConfig = (): PythonAppConfig => {
|
|
|
96
99
|
const reader = new WebSocketMessageReader(iWebSocket);
|
|
97
100
|
const writer = new WebSocketMessageWriter(iWebSocket);
|
|
98
101
|
|
|
99
|
-
const
|
|
102
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
100
103
|
$type: 'extended',
|
|
101
104
|
htmlContainer: configParams.htmlContainer,
|
|
102
105
|
logLevel: LogLevel.Debug,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}, 250);
|
|
120
|
-
},
|
|
121
|
-
reportStatus: true,
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
messageTransports: { reader, writer }
|
|
125
|
-
},
|
|
126
|
-
clientOptions: {
|
|
127
|
-
documentSelector: [configParams.languageId],
|
|
128
|
-
workspaceFolder: {
|
|
129
|
-
index: 0,
|
|
130
|
-
name: configParams.workspaceRoot,
|
|
131
|
-
uri: vscode.Uri.parse(configParams.workspaceRoot)
|
|
132
|
-
},
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
106
|
+
serviceOverrides: {
|
|
107
|
+
...getKeybindingsServiceOverride(),
|
|
108
|
+
...getLifecycleServiceOverride(),
|
|
109
|
+
...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
|
|
110
|
+
...getBannerServiceOverride(),
|
|
111
|
+
...getStatusBarServiceOverride(),
|
|
112
|
+
...getTitleBarServiceOverride(),
|
|
113
|
+
...getExplorerServiceOverride(),
|
|
114
|
+
...getRemoteAgentServiceOverride(),
|
|
115
|
+
...getEnvironmentServiceOverride(),
|
|
116
|
+
...getSecretStorageServiceOverride(),
|
|
117
|
+
...getStorageServiceOverride(),
|
|
118
|
+
...getSearchServiceOverride(),
|
|
119
|
+
...getDebugServiceOverride(),
|
|
120
|
+
...getTestingServiceOverride(),
|
|
121
|
+
...getPreferencesServiceOverride()
|
|
136
122
|
},
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
htmlAugmentationInstructions: defaultHtmlAugmentationInstructions,
|
|
158
|
-
viewsInitFunc: defaultViewsInit
|
|
159
|
-
},
|
|
160
|
-
userConfiguration: {
|
|
161
|
-
json: JSON.stringify({
|
|
162
|
-
'workbench.colorTheme': 'Default Dark Modern',
|
|
163
|
-
'editor.guides.bracketPairsHorizontal': 'active',
|
|
164
|
-
'editor.wordBasedSuggestions': 'off',
|
|
165
|
-
'editor.experimental.asyncTokenization': true,
|
|
166
|
-
'debug.toolBarLocation': 'docked'
|
|
167
|
-
})
|
|
123
|
+
viewsConfig: {
|
|
124
|
+
viewServiceType: 'ViewsService',
|
|
125
|
+
htmlAugmentationInstructions: defaultHtmlAugmentationInstructions,
|
|
126
|
+
viewsInitFunc: defaultViewsInit
|
|
127
|
+
},
|
|
128
|
+
userConfiguration: {
|
|
129
|
+
json: JSON.stringify({
|
|
130
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
131
|
+
'editor.guides.bracketPairsHorizontal': 'active',
|
|
132
|
+
'editor.wordBasedSuggestions': 'off',
|
|
133
|
+
'editor.experimental.asyncTokenization': true,
|
|
134
|
+
'debug.toolBarLocation': 'docked'
|
|
135
|
+
})
|
|
136
|
+
},
|
|
137
|
+
workspaceConfig: {
|
|
138
|
+
enableWorkspaceTrust: true,
|
|
139
|
+
windowIndicator: {
|
|
140
|
+
label: 'mlc-python-example',
|
|
141
|
+
tooltip: '',
|
|
142
|
+
command: ''
|
|
168
143
|
},
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
command: ''
|
|
175
|
-
},
|
|
176
|
-
workspaceProvider: {
|
|
177
|
-
trusted: true,
|
|
178
|
-
async open() {
|
|
179
|
-
window.open(window.location.href);
|
|
180
|
-
return true;
|
|
181
|
-
},
|
|
182
|
-
workspace: {
|
|
183
|
-
workspaceUri: configParams.workspaceFile
|
|
184
|
-
}
|
|
144
|
+
workspaceProvider: {
|
|
145
|
+
trusted: true,
|
|
146
|
+
async open() {
|
|
147
|
+
window.open(window.location.href);
|
|
148
|
+
return true;
|
|
185
149
|
},
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
},
|
|
189
|
-
productConfiguration: {
|
|
190
|
-
nameShort: 'mlc-python-example',
|
|
191
|
-
nameLong: 'mlc-python-example'
|
|
150
|
+
workspace: {
|
|
151
|
+
workspaceUri: configParams.workspaceFile
|
|
192
152
|
}
|
|
193
153
|
},
|
|
154
|
+
configurationDefaults: {
|
|
155
|
+
'window.title': 'mlc-python-example${separator}${dirty}${activeEditorShort}'
|
|
156
|
+
},
|
|
157
|
+
productConfiguration: {
|
|
158
|
+
nameShort: 'mlc-python-example',
|
|
159
|
+
nameLong: 'mlc-python-example'
|
|
160
|
+
}
|
|
194
161
|
},
|
|
195
162
|
extensions: [
|
|
196
163
|
{
|
|
@@ -205,13 +172,48 @@ export const createWrapperConfig = (): PythonAppConfig => {
|
|
|
205
172
|
},
|
|
206
173
|
provideDebuggerExtensionConfig(configParams)
|
|
207
174
|
],
|
|
208
|
-
|
|
209
|
-
|
|
175
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
const languageClientConfig: LanguageClientConfig = {
|
|
179
|
+
name: 'Python Language Server Example',
|
|
180
|
+
connection: {
|
|
181
|
+
options: {
|
|
182
|
+
$type: 'WebSocketDirect',
|
|
183
|
+
webSocket: webSocket,
|
|
184
|
+
startOptions: {
|
|
185
|
+
onCall: (languageClient?: BaseLanguageClient) => {
|
|
186
|
+
setTimeout(() => {
|
|
187
|
+
['pyright.restartserver', 'pyright.organizeimports'].forEach((cmdName) => {
|
|
188
|
+
vscode.commands.registerCommand(cmdName, (...args: unknown[]) => {
|
|
189
|
+
languageClient?.sendRequest('workspace/executeCommand', { command: cmdName, arguments: args });
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
}, 250);
|
|
193
|
+
},
|
|
194
|
+
reportStatus: true,
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
messageTransports: { reader, writer }
|
|
198
|
+
},
|
|
199
|
+
clientOptions: {
|
|
200
|
+
documentSelector: [configParams.languageId],
|
|
201
|
+
workspaceFolder: {
|
|
202
|
+
index: 0,
|
|
203
|
+
name: configParams.workspaceRoot,
|
|
204
|
+
uri: vscode.Uri.parse(configParams.workspaceRoot)
|
|
205
|
+
},
|
|
210
206
|
}
|
|
211
207
|
};
|
|
212
208
|
|
|
209
|
+
const editorAppConfig: EditorAppConfig = {
|
|
210
|
+
$type: vscodeApiConfig.$type
|
|
211
|
+
};
|
|
212
|
+
|
|
213
213
|
return {
|
|
214
|
-
|
|
214
|
+
vscodeApiConfig,
|
|
215
|
+
languageClientConfig,
|
|
216
|
+
editorAppConfig,
|
|
215
217
|
configParams: configParams
|
|
216
218
|
};
|
|
217
219
|
};
|
|
@@ -3,32 +3,41 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import * as vscode from 'vscode';
|
|
7
6
|
import { type RegisterLocalProcessExtensionResult } from '@codingame/monaco-vscode-api/extensions';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { EditorApp } from 'monaco-languageclient/editorApp';
|
|
8
|
+
import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
|
|
9
|
+
import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
|
|
10
|
+
import * as vscode from 'vscode';
|
|
10
11
|
import { configureDebugging } from '../../debugger/client/debugger.js';
|
|
12
|
+
import { createPythonAppConfig } from './config.js';
|
|
11
13
|
|
|
12
14
|
export const runPythonWrapper = async () => {
|
|
13
|
-
const appConfig =
|
|
14
|
-
|
|
15
|
+
const appConfig = createPythonAppConfig();
|
|
16
|
+
|
|
17
|
+
// perform global init
|
|
18
|
+
const apiWrapper = new MonacoVscodeApiWrapper(appConfig.vscodeApiConfig);
|
|
19
|
+
await apiWrapper.init();
|
|
20
|
+
|
|
21
|
+
const lcWrapper = new LanguageClientWrapper(appConfig.languageClientConfig);
|
|
15
22
|
|
|
16
|
-
|
|
23
|
+
const editorApp = new EditorApp(appConfig.editorAppConfig);
|
|
24
|
+
|
|
25
|
+
if (editorApp.isStarted()) {
|
|
17
26
|
console.warn('Editor was already started!');
|
|
18
27
|
} else {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const result = wrapper.getExtensionRegisterResult('mlc-python-example') as RegisterLocalProcessExtensionResult;
|
|
28
|
+
const result = apiWrapper.getExtensionRegisterResult('mlc-python-example') as RegisterLocalProcessExtensionResult;
|
|
22
29
|
result.setAsDefaultApi();
|
|
23
30
|
|
|
24
|
-
const initResult =
|
|
31
|
+
const initResult = apiWrapper.getExtensionRegisterResult('debugger-py-client') as RegisterLocalProcessExtensionResult | undefined;
|
|
25
32
|
if (initResult !== undefined) {
|
|
26
33
|
configureDebugging(await initResult.getApi(), appConfig.configParams);
|
|
27
34
|
}
|
|
28
35
|
|
|
36
|
+
await lcWrapper.start();
|
|
37
|
+
|
|
29
38
|
await vscode.commands.executeCommand('workbench.view.explorer');
|
|
30
39
|
await vscode.window.showTextDocument(appConfig.configParams.files.get('hello2.py')!.uri);
|
|
31
40
|
|
|
32
|
-
await
|
|
41
|
+
await editorApp.start(appConfig.vscodeApiConfig.htmlContainer!);
|
|
33
42
|
}
|
|
34
43
|
};
|
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import * as vscode from 'vscode';
|
|
7
6
|
import { type RegisterLocalProcessExtensionResult } from '@codingame/monaco-vscode-api/extensions';
|
|
7
|
+
import { MonacoEditorReactComp } from '@typefox/monaco-editor-react';
|
|
8
|
+
import type { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
|
|
8
9
|
import React from 'react';
|
|
9
10
|
import ReactDOM from 'react-dom/client';
|
|
10
|
-
import
|
|
11
|
-
import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
|
|
12
|
-
import { createWrapperConfig } from './config.js';
|
|
11
|
+
import * as vscode from 'vscode';
|
|
13
12
|
import { configureDebugging } from '../../debugger/client/debugger.js';
|
|
13
|
+
import { createPythonAppConfig } from './config.js';
|
|
14
14
|
|
|
15
15
|
export const runPythonReact = async () => {
|
|
16
|
-
const appConfig =
|
|
16
|
+
const appConfig = createPythonAppConfig();
|
|
17
17
|
|
|
18
|
-
const
|
|
19
|
-
const result =
|
|
18
|
+
const onVscodeApiInitDone = async (apiWrapper: MonacoVscodeApiWrapper) => {
|
|
19
|
+
const result = apiWrapper.getExtensionRegisterResult('mlc-python-example') as RegisterLocalProcessExtensionResult;
|
|
20
20
|
result.setAsDefaultApi();
|
|
21
21
|
|
|
22
|
-
const initResult =
|
|
22
|
+
const initResult = apiWrapper.getExtensionRegisterResult('debugger-py-client') as RegisterLocalProcessExtensionResult | undefined;
|
|
23
23
|
if (initResult !== undefined) {
|
|
24
24
|
configureDebugging(await initResult.getApi(), appConfig.configParams);
|
|
25
25
|
}
|
|
@@ -34,9 +34,10 @@ export const runPythonReact = async () => {
|
|
|
34
34
|
return (
|
|
35
35
|
<div style={{ 'backgroundColor': '#1f1f1f' }} >
|
|
36
36
|
<MonacoEditorReactComp
|
|
37
|
-
|
|
37
|
+
vscodeApiConfig={appConfig.vscodeApiConfig}
|
|
38
|
+
editorAppConfig={appConfig.editorAppConfig}
|
|
38
39
|
style={{ 'height': '100%' }}
|
|
39
|
-
|
|
40
|
+
onVscodeApiInitDone={onVscodeApiInitDone}
|
|
40
41
|
onError={(e) => {
|
|
41
42
|
console.error(e);
|
|
42
43
|
}} />
|
package/src/ts/wrapperTs.ts
CHANGED
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import
|
|
7
|
-
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
6
|
+
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
8
7
|
import '@codingame/monaco-vscode-javascript-default-extension';
|
|
8
|
+
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
9
9
|
import '@codingame/monaco-vscode-typescript-basics-default-extension';
|
|
10
10
|
import '@codingame/monaco-vscode-typescript-language-features-default-extension';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { configureDefaultWorkerFactory } from 'monaco-
|
|
11
|
+
import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
12
|
+
import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
13
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
14
|
+
import * as vscode from 'vscode';
|
|
14
15
|
import { disableElement } from '../common/client/utils.js';
|
|
15
16
|
|
|
16
17
|
export const runTsWrapper = async () => {
|
|
@@ -24,49 +25,55 @@ export const runTsWrapper = async () => {
|
|
|
24
25
|
return "Goodbye";
|
|
25
26
|
};`;
|
|
26
27
|
|
|
27
|
-
const
|
|
28
|
+
const htmlContainer = document.getElementById('monaco-editor-root')!;
|
|
29
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
28
30
|
$type: 'extended',
|
|
29
|
-
htmlContainer
|
|
31
|
+
htmlContainer,
|
|
30
32
|
logLevel: LogLevel.Debug,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
serviceOverrides: {
|
|
34
|
+
...getKeybindingsServiceOverride()
|
|
35
|
+
},
|
|
36
|
+
advanced: {
|
|
35
37
|
enableExtHostWorker: true,
|
|
36
|
-
userConfiguration: {
|
|
37
|
-
json: JSON.stringify({
|
|
38
|
-
'workbench.colorTheme': 'Default Dark Modern',
|
|
39
|
-
'typescript.tsserver.web.projectWideIntellisense.enabled': true,
|
|
40
|
-
'typescript.tsserver.web.projectWideIntellisense.suppressSemanticErrors': false,
|
|
41
|
-
'diffEditor.renderSideBySide': false,
|
|
42
|
-
'editor.lightbulb.enabled': 'on',
|
|
43
|
-
'editor.glyphMargin': true,
|
|
44
|
-
'editor.guides.bracketPairsHorizontal': true,
|
|
45
|
-
'editor.experimental.asyncTokenization': true
|
|
46
|
-
})
|
|
47
|
-
}
|
|
48
38
|
},
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
39
|
+
userConfiguration: {
|
|
40
|
+
json: JSON.stringify({
|
|
41
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
42
|
+
'typescript.tsserver.web.projectWideIntellisense.enabled': true,
|
|
43
|
+
'typescript.tsserver.web.projectWideIntellisense.suppressSemanticErrors': false,
|
|
44
|
+
'diffEditor.renderSideBySide': false,
|
|
45
|
+
'editor.lightbulb.enabled': 'on',
|
|
46
|
+
'editor.glyphMargin': true,
|
|
47
|
+
'editor.guides.bracketPairsHorizontal': true,
|
|
48
|
+
'editor.experimental.asyncTokenization': true
|
|
49
|
+
})
|
|
50
|
+
},
|
|
51
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const editorAppConfig: EditorAppConfig = {
|
|
55
|
+
$type: vscodeApiConfig.$type,
|
|
56
|
+
codeResources: {
|
|
57
|
+
modified: {
|
|
58
|
+
text: code,
|
|
59
|
+
uri: codeUri
|
|
59
60
|
},
|
|
60
|
-
|
|
61
|
+
original: {
|
|
62
|
+
text: codeOriginal,
|
|
63
|
+
uri: codeOriginalUri,
|
|
64
|
+
}
|
|
61
65
|
}
|
|
62
66
|
};
|
|
63
67
|
|
|
64
|
-
const
|
|
68
|
+
const apiWrapper = new MonacoVscodeApiWrapper(vscodeApiConfig);
|
|
69
|
+
await apiWrapper.init();
|
|
70
|
+
|
|
71
|
+
const editorApp = new EditorApp(editorAppConfig);
|
|
65
72
|
disableElement('button-swap-code', true);
|
|
66
73
|
|
|
67
74
|
try {
|
|
68
75
|
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
69
|
-
await
|
|
76
|
+
await editorApp.start(htmlContainer);
|
|
70
77
|
|
|
71
78
|
vscode.commands.getCommands().then((x) => {
|
|
72
79
|
console.log(`Found ${x.length} commands`);
|
|
@@ -74,13 +81,13 @@ export const runTsWrapper = async () => {
|
|
|
74
81
|
console.log(`Found command: ${finding}`);
|
|
75
82
|
});
|
|
76
83
|
|
|
77
|
-
|
|
84
|
+
editorApp.getEditor()?.focus();
|
|
78
85
|
await vscode.commands.executeCommand('actions.find');
|
|
79
86
|
});
|
|
80
87
|
document.querySelector('#button-swap-code')?.addEventListener('click', () => {
|
|
81
|
-
const codeResources =
|
|
88
|
+
const codeResources = editorApp.getConfig().codeResources;
|
|
82
89
|
if (codeResources?.modified?.uri === codeUri) {
|
|
83
|
-
|
|
90
|
+
editorApp.updateCodeResources({
|
|
84
91
|
modified: {
|
|
85
92
|
text: codeOriginal,
|
|
86
93
|
uri: codeOriginalUri
|
|
@@ -91,7 +98,7 @@ export const runTsWrapper = async () => {
|
|
|
91
98
|
}
|
|
92
99
|
});
|
|
93
100
|
} else {
|
|
94
|
-
|
|
101
|
+
editorApp.updateCodeResources({
|
|
95
102
|
modified: {
|
|
96
103
|
text: code,
|
|
97
104
|
uri: codeUri
|
|
@@ -105,14 +112,14 @@ export const runTsWrapper = async () => {
|
|
|
105
112
|
});
|
|
106
113
|
document.querySelector('#button-diff')?.addEventListener('click', async () => {
|
|
107
114
|
// ensure it is boolean value and not undefined
|
|
108
|
-
const useDiffEditor =
|
|
109
|
-
|
|
110
|
-
disableElement('button-swap-code', !
|
|
115
|
+
const useDiffEditor = editorAppConfig.useDiffEditor ?? false;
|
|
116
|
+
editorAppConfig.useDiffEditor = !useDiffEditor;
|
|
117
|
+
disableElement('button-swap-code', !editorAppConfig.useDiffEditor);
|
|
111
118
|
|
|
112
|
-
await
|
|
119
|
+
await editorApp.start(htmlContainer);
|
|
113
120
|
});
|
|
114
121
|
document.querySelector('#button-dispose')?.addEventListener('click', async () => {
|
|
115
|
-
await
|
|
122
|
+
await editorApp.dispose();
|
|
116
123
|
});
|
|
117
124
|
} catch (e) {
|
|
118
125
|
console.error(e);
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
<button type="button" id="button-start">Start</button>
|
|
16
16
|
<button type="button" id="button-dispose">Dispose</button>
|
|
17
17
|
<button type="button" id="button-flip">Flip Content</button>
|
|
18
|
-
<label>External Lanuguage Clients:</label><input type="checkbox" id="checkbox-extlc" />
|
|
19
18
|
</div>
|
|
20
19
|
<div id="monaco-editor-root" style="width:800px;height:600px;border:1px solid grey"></div>
|
|
21
20
|
<script type="module">
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import '@codingame/monaco-vscode-json-default-extension';
|
|
2
|
-
import { type WrapperConfig } from 'monaco-editor-wrapper';
|
|
3
|
-
export declare const buildJsonClientUserConfig: (htmlContainer?: HTMLElement) => WrapperConfig;
|
|
4
|
-
export declare const runJsonWrapper: () => void;
|
|
5
|
-
//# sourceMappingURL=wrapperWs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapperWs.d.ts","sourceRoot":"","sources":["../../../src/json/client/wrapperWs.ts"],"names":[],"mappings":"AAOA,OAAO,iDAAiD,CAAC;AAEzD,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ9F,eAAO,MAAM,yBAAyB,GAAI,gBAAgB,WAAW,KAAG,aAwDvE,CAAC;AAEF,eAAO,MAAM,cAAc,YAc1B,CAAC"}
|
|
@@ -1,87 +0,0 @@
|
|
|
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
|
-
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
6
|
-
// this is required syntax highlighting
|
|
7
|
-
import '@codingame/monaco-vscode-json-default-extension';
|
|
8
|
-
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
9
|
-
import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
|
|
10
|
-
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
|
|
11
|
-
const text = `{
|
|
12
|
-
"$schema": "http://json.schemastore.org/coffeelint",
|
|
13
|
-
"line_endings": {"value": "unix"}
|
|
14
|
-
}`;
|
|
15
|
-
export const buildJsonClientUserConfig = (htmlContainer) => {
|
|
16
|
-
return {
|
|
17
|
-
$type: 'extended',
|
|
18
|
-
htmlContainer,
|
|
19
|
-
logLevel: LogLevel.Debug,
|
|
20
|
-
vscodeApiConfig: {
|
|
21
|
-
serviceOverrides: {
|
|
22
|
-
...getKeybindingsServiceOverride(),
|
|
23
|
-
},
|
|
24
|
-
userConfiguration: {
|
|
25
|
-
json: JSON.stringify({
|
|
26
|
-
'workbench.colorTheme': 'Default Dark Modern',
|
|
27
|
-
'editor.guides.bracketPairsHorizontal': 'active',
|
|
28
|
-
'editor.lightbulb.enabled': 'On',
|
|
29
|
-
'editor.wordBasedSuggestions': 'off',
|
|
30
|
-
'editor.experimental.asyncTokenization': true
|
|
31
|
-
})
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
editorAppConfig: {
|
|
35
|
-
codeResources: {
|
|
36
|
-
modified: {
|
|
37
|
-
text,
|
|
38
|
-
uri: '/workspace/test.json',
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
42
|
-
},
|
|
43
|
-
languageClientConfigs: {
|
|
44
|
-
configs: {
|
|
45
|
-
json: {
|
|
46
|
-
clientOptions: {
|
|
47
|
-
documentSelector: ['json']
|
|
48
|
-
},
|
|
49
|
-
connection: {
|
|
50
|
-
options: {
|
|
51
|
-
$type: 'WebSocketUrl',
|
|
52
|
-
url: 'ws://localhost:30000/sampleServer',
|
|
53
|
-
startOptions: {
|
|
54
|
-
onCall: () => {
|
|
55
|
-
console.log('Connected to socket.');
|
|
56
|
-
},
|
|
57
|
-
reportStatus: true
|
|
58
|
-
},
|
|
59
|
-
stopOptions: {
|
|
60
|
-
onCall: () => {
|
|
61
|
-
console.log('Disconnected from socket.');
|
|
62
|
-
},
|
|
63
|
-
reportStatus: true
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
export const runJsonWrapper = () => {
|
|
73
|
-
const wrapper = new MonacoEditorLanguageClientWrapper();
|
|
74
|
-
try {
|
|
75
|
-
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
76
|
-
const config = buildJsonClientUserConfig(document.getElementById('monaco-editor-root'));
|
|
77
|
-
await wrapper.initAndStart(config);
|
|
78
|
-
});
|
|
79
|
-
document.querySelector('#button-dispose')?.addEventListener('click', async () => {
|
|
80
|
-
await wrapper.dispose();
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
catch (e) {
|
|
84
|
-
console.error(e);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
//# sourceMappingURL=wrapperWs.js.map
|