monaco-languageclient-examples 2025.8.3 → 2025.8.4
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 +4 -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 +4 -2
- package/dist/appPlayground/config.d.ts.map +1 -1
- package/dist/appPlayground/config.js +65 -63
- 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 +5 -4
- 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 +2 -3
- 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 +12 -9
- 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 +8 -1
- package/dist/common/client/utils.d.ts.map +1 -1
- package/dist/common/client/utils.js +0 -3
- 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 +0 -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 +93 -97
- 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 +5 -6
- package/src/appPlayground/common.ts +3 -3
- package/src/appPlayground/config.ts +69 -65
- package/src/appPlayground/launcher.ts +2 -1
- package/src/appPlayground/main.ts +8 -5
- package/src/appPlayground/reactLauncher.ts +2 -1
- package/src/appPlayground/reactMain.tsx +4 -4
- 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 +14 -10
- package/src/common/client/extendedClient.ts +111 -0
- package/src/common/client/utils.ts +7 -2
- 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 +0 -3
- package/src/python/client/config.ts +101 -99
- 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
|
@@ -10,6 +10,7 @@ import { InMemoryFileSystemProvider, registerFileSystemOverlay, type IFileWriteO
|
|
|
10
10
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
11
11
|
import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override';
|
|
12
12
|
import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override';
|
|
13
|
+
import getOutlineServiceOverride from '@codingame/monaco-vscode-outline-service-override';
|
|
13
14
|
import getRemoteAgentServiceOverride from '@codingame/monaco-vscode-remote-agent-service-override';
|
|
14
15
|
import getSearchServiceOverride from '@codingame/monaco-vscode-search-service-override';
|
|
15
16
|
import getSecretStorageServiceOverride from '@codingame/monaco-vscode-secret-storage-service-override';
|
|
@@ -17,7 +18,6 @@ import getStorageServiceOverride from '@codingame/monaco-vscode-storage-service-
|
|
|
17
18
|
import getBannerServiceOverride from '@codingame/monaco-vscode-view-banner-service-override';
|
|
18
19
|
import getStatusBarServiceOverride from '@codingame/monaco-vscode-view-status-bar-service-override';
|
|
19
20
|
import getTitleBarServiceOverride from '@codingame/monaco-vscode-view-title-bar-service-override';
|
|
20
|
-
import getOutlineServiceOverride from '@codingame/monaco-vscode-outline-service-override';
|
|
21
21
|
import * as vscode from 'vscode';
|
|
22
22
|
|
|
23
23
|
// this is required syntax highlighting
|
|
@@ -27,16 +27,17 @@ import '@codingame/monaco-vscode-typescript-language-features-default-extension'
|
|
|
27
27
|
|
|
28
28
|
import '../../resources/vsix/open-collaboration-tools.vsix';
|
|
29
29
|
|
|
30
|
-
import type
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
30
|
+
import { defaultHtmlAugmentationInstructions, defaultViewsInit, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
31
|
+
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
32
|
+
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscodeApiLocales';
|
|
33
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
34
34
|
import helloTsCode from '../../resources/appPlayground/hello.ts?raw';
|
|
35
35
|
import testerTsCode from '../../resources/appPlayground/tester.ts?raw';
|
|
36
36
|
import { createDefaultWorkspaceContent } from '../common/client/utils.js';
|
|
37
37
|
|
|
38
38
|
export type ConfigResult = {
|
|
39
|
-
|
|
39
|
+
vscodeApiConfig: MonacoVscodeApiConfig;
|
|
40
|
+
editorAppConfig: EditorAppConfig
|
|
40
41
|
workspaceFileUri: vscode.Uri;
|
|
41
42
|
helloTsUri: vscode.Uri;
|
|
42
43
|
testerTsUri: vscode.Uri;
|
|
@@ -45,69 +46,65 @@ export type ConfigResult = {
|
|
|
45
46
|
export const configure = async (htmlContainer?: HTMLElement): Promise<ConfigResult> => {
|
|
46
47
|
const workspaceFileUri = vscode.Uri.file('/workspace.code-workspace');
|
|
47
48
|
|
|
48
|
-
const
|
|
49
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
49
50
|
$type: 'extended',
|
|
50
|
-
id: 'AAP',
|
|
51
51
|
logLevel: LogLevel.Debug,
|
|
52
52
|
htmlContainer,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
53
|
+
serviceOverrides: {
|
|
54
|
+
...getKeybindingsServiceOverride(),
|
|
55
|
+
...getLifecycleServiceOverride(),
|
|
56
|
+
...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
|
|
57
|
+
...getBannerServiceOverride(),
|
|
58
|
+
...getStatusBarServiceOverride(),
|
|
59
|
+
...getTitleBarServiceOverride(),
|
|
60
|
+
...getExplorerServiceOverride(),
|
|
61
|
+
...getRemoteAgentServiceOverride(),
|
|
62
|
+
...getEnvironmentServiceOverride(),
|
|
63
|
+
...getSecretStorageServiceOverride(),
|
|
64
|
+
...getStorageServiceOverride(),
|
|
65
|
+
...getSearchServiceOverride(),
|
|
66
|
+
...getOutlineServiceOverride()
|
|
67
|
+
},
|
|
68
|
+
viewsConfig: {
|
|
69
|
+
viewServiceType: 'ViewsService',
|
|
70
|
+
htmlAugmentationInstructions: defaultHtmlAugmentationInstructions,
|
|
71
|
+
viewsInitFunc: defaultViewsInit
|
|
72
|
+
},
|
|
73
|
+
workspaceConfig: {
|
|
74
|
+
enableWorkspaceTrust: true,
|
|
75
|
+
windowIndicator: {
|
|
76
|
+
label: 'mlc-app-playground',
|
|
77
|
+
tooltip: '',
|
|
78
|
+
command: ''
|
|
74
79
|
},
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
command: ''
|
|
81
|
-
},
|
|
82
|
-
workspaceProvider: {
|
|
83
|
-
trusted: true,
|
|
84
|
-
async open() {
|
|
85
|
-
window.open(window.location.href);
|
|
86
|
-
return true;
|
|
87
|
-
},
|
|
88
|
-
workspace: {
|
|
89
|
-
workspaceUri: workspaceFileUri
|
|
90
|
-
}
|
|
80
|
+
workspaceProvider: {
|
|
81
|
+
trusted: true,
|
|
82
|
+
async open() {
|
|
83
|
+
window.open(window.location.href);
|
|
84
|
+
return true;
|
|
91
85
|
},
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
},
|
|
95
|
-
productConfiguration: {
|
|
96
|
-
nameShort: 'mlc-app-playground',
|
|
97
|
-
nameLong: 'mlc-app-playground'
|
|
86
|
+
workspace: {
|
|
87
|
+
workspaceUri: workspaceFileUri
|
|
98
88
|
}
|
|
99
89
|
},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
'workbench.colorTheme': 'Default Dark Modern',
|
|
103
|
-
'editor.wordBasedSuggestions': 'off',
|
|
104
|
-
'typescript.tsserver.web.projectWideIntellisense.enabled': true,
|
|
105
|
-
'typescript.tsserver.web.projectWideIntellisense.suppressSemanticErrors': false,
|
|
106
|
-
'editor.guides.bracketPairsHorizontal': true,
|
|
107
|
-
'oct.serverUrl': 'https://api.open-collab.tools/',
|
|
108
|
-
'editor.experimental.asyncTokenization': false
|
|
109
|
-
})
|
|
90
|
+
configurationDefaults: {
|
|
91
|
+
'window.title': 'mlc-app-playground${separator}${dirty}${activeEditorShort}'
|
|
110
92
|
},
|
|
93
|
+
productConfiguration: {
|
|
94
|
+
nameShort: 'mlc-app-playground',
|
|
95
|
+
nameLong: 'mlc-app-playground'
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
userConfiguration: {
|
|
99
|
+
json: JSON.stringify({
|
|
100
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
101
|
+
'editor.wordBasedSuggestions': 'off',
|
|
102
|
+
'typescript.tsserver.web.projectWideIntellisense.enabled': true,
|
|
103
|
+
'typescript.tsserver.web.projectWideIntellisense.suppressSemanticErrors': false,
|
|
104
|
+
'editor.guides.bracketPairsHorizontal': true,
|
|
105
|
+
'oct.serverUrl': 'https://api.open-collab.tools/',
|
|
106
|
+
'editor.experimental.asyncTokenization': false
|
|
107
|
+
})
|
|
111
108
|
},
|
|
112
109
|
extensions: [{
|
|
113
110
|
config: {
|
|
@@ -119,9 +116,15 @@ export const configure = async (htmlContainer?: HTMLElement): Promise<ConfigResu
|
|
|
119
116
|
}
|
|
120
117
|
}
|
|
121
118
|
}],
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
119
|
+
advanced: {
|
|
120
|
+
enableExtHostWorker: true,
|
|
121
|
+
},
|
|
122
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const editorAppConfig: EditorAppConfig = {
|
|
126
|
+
$type: vscodeApiConfig.$type,
|
|
127
|
+
id: 'AAP',
|
|
125
128
|
};
|
|
126
129
|
|
|
127
130
|
const workspaceUri = vscode.Uri.file('/workspace');
|
|
@@ -143,7 +146,8 @@ export const configure = async (htmlContainer?: HTMLElement): Promise<ConfigResu
|
|
|
143
146
|
registerFileSystemOverlay(1, fileSystemProvider);
|
|
144
147
|
|
|
145
148
|
return {
|
|
146
|
-
|
|
149
|
+
vscodeApiConfig,
|
|
150
|
+
editorAppConfig,
|
|
147
151
|
workspaceFileUri,
|
|
148
152
|
helloTsUri,
|
|
149
153
|
testerTsUri
|
|
@@ -3,7 +3,8 @@
|
|
|
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
8
|
await initLocaleLoader();
|
|
8
9
|
|
|
9
10
|
const { runApplicationPlayground } = await import('./main.js');
|
|
@@ -3,16 +3,19 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
|
|
7
6
|
import { configure } from './config.js';
|
|
8
7
|
import { configurePostStart } from './common.js';
|
|
9
8
|
import { disableElement } from '../common/client/utils.js';
|
|
10
|
-
|
|
11
|
-
const wrapper = new MonacoEditorLanguageClientWrapper();
|
|
9
|
+
import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
|
|
12
10
|
|
|
13
11
|
export const runApplicationPlayground = async () => {
|
|
14
12
|
disableElement('button-start', true);
|
|
13
|
+
|
|
15
14
|
const configResult = await configure(document.body);
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
|
|
16
|
+
// perform global init
|
|
17
|
+
const apiWrapper = new MonacoVscodeApiWrapper(configResult.vscodeApiConfig);
|
|
18
|
+
await apiWrapper.init();
|
|
19
|
+
|
|
20
|
+
await configurePostStart(apiWrapper, configResult);
|
|
18
21
|
};
|
|
@@ -3,7 +3,8 @@
|
|
|
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
8
|
await initLocaleLoader();
|
|
8
9
|
|
|
9
10
|
const { runApplicationPlaygroundReact } = await import('./reactMain.js');
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
import React from 'react';
|
|
7
7
|
import ReactDOM from 'react-dom/client';
|
|
8
|
-
import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
|
|
9
8
|
import { MonacoEditorReactComp } from '@typefox/monaco-editor-react';
|
|
10
9
|
import { configure } from './config.js';
|
|
11
10
|
import { configurePostStart } from './common.js';
|
|
@@ -18,9 +17,10 @@ export const runApplicationPlaygroundReact = async () => {
|
|
|
18
17
|
return (
|
|
19
18
|
<div style={{ 'backgroundColor': '#1f1f1f' }}>
|
|
20
19
|
<MonacoEditorReactComp
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
vscodeApiConfig={configResult.vscodeApiConfig}
|
|
21
|
+
editorAppConfig={configResult.editorAppConfig}
|
|
22
|
+
onVscodeApiInitDone={async (apiWrapper) => {
|
|
23
|
+
await configurePostStart(apiWrapper, configResult);
|
|
24
24
|
}}
|
|
25
25
|
onError={(e) => {
|
|
26
26
|
console.error(e);
|
package/src/bare/client.ts
CHANGED
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
+
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
6
7
|
import * as monaco from '@codingame/monaco-vscode-editor-api';
|
|
7
|
-
import { initServices } from 'monaco-languageclient/vscode/services';
|
|
8
8
|
import getTextmateServiceOverride from '@codingame/monaco-vscode-textmate-service-override';
|
|
9
9
|
import getThemeServiceOverride from '@codingame/monaco-vscode-theme-service-override';
|
|
10
|
-
import {
|
|
10
|
+
import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
11
11
|
// monaco-editor does not supply json highlighting with the json worker,
|
|
12
12
|
// that's why we use the textmate extension from VSCode
|
|
13
13
|
import '@codingame/monaco-vscode-json-default-extension';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { LanguageClientWrapper, type LanguageClientConfig } from 'monaco-editor-wrapper';
|
|
14
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
15
|
+
import { LanguageClientWrapper, type LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
17
16
|
|
|
18
17
|
export const runClient = async () => {
|
|
19
|
-
const logger = new ConsoleLogger(LogLevel.Debug);
|
|
20
18
|
const htmlContainer = document.getElementById('monaco-editor-root')!;
|
|
21
|
-
|
|
19
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
20
|
+
$type: 'classic',
|
|
21
|
+
logLevel: LogLevel.Debug,
|
|
22
22
|
serviceOverrides: {
|
|
23
23
|
...getTextmateServiceOverride(),
|
|
24
24
|
...getThemeServiceOverride()
|
|
@@ -28,9 +28,11 @@ export const runClient = async () => {
|
|
|
28
28
|
'editor.experimental.asyncTokenization': true
|
|
29
29
|
})
|
|
30
30
|
},
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const apiWrapper = new MonacoVscodeApiWrapper(vscodeApiConfig);
|
|
35
|
+
await apiWrapper.init();
|
|
34
36
|
|
|
35
37
|
// register the JSON language with Monaco
|
|
36
38
|
monaco.languages.register({
|
|
@@ -40,8 +42,6 @@ export const runClient = async () => {
|
|
|
40
42
|
mimetypes: ['application/json']
|
|
41
43
|
});
|
|
42
44
|
|
|
43
|
-
configureDefaultWorkerFactory(logger);
|
|
44
|
-
|
|
45
45
|
// create monaco editor
|
|
46
46
|
monaco.editor.create(htmlContainer, {
|
|
47
47
|
value: `{
|
|
@@ -64,10 +64,9 @@ export const runClient = async () => {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
|
-
const languageClientWrapper = new LanguageClientWrapper(
|
|
67
|
+
const languageClientWrapper = new LanguageClientWrapper(
|
|
68
68
|
languageClientConfig,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
apiWrapper.getLogger()
|
|
70
|
+
);
|
|
72
71
|
await languageClientWrapper.start();
|
|
73
72
|
};
|
package/src/browser/main.ts
CHANGED
|
@@ -11,8 +11,9 @@ import { getLanguageService, TextDocument } from 'vscode-json-languageservice';
|
|
|
11
11
|
import { createConverter as createCodeConverter } from 'vscode-languageclient/lib/common/codeConverter.js';
|
|
12
12
|
import { createConverter as createProtocolConverter } from 'vscode-languageclient/lib/common/protocolConverter.js';
|
|
13
13
|
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
14
|
-
import {
|
|
15
|
-
import { configureDefaultWorkerFactory } from 'monaco-
|
|
14
|
+
import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
15
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
16
|
+
import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
16
17
|
|
|
17
18
|
export const runBrowserEditor = async () => {
|
|
18
19
|
const codeConverter = createCodeConverter();
|
|
@@ -27,35 +28,36 @@ export const runBrowserEditor = async () => {
|
|
|
27
28
|
}`;
|
|
28
29
|
const codeUri = '/workspace/model.json';
|
|
29
30
|
|
|
30
|
-
const
|
|
31
|
-
const jsonClientUserConfig: WrapperConfig = {
|
|
31
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
32
32
|
$type: 'extended',
|
|
33
33
|
htmlContainer,
|
|
34
34
|
logLevel: LogLevel.Debug,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
})
|
|
46
|
-
}
|
|
35
|
+
serviceOverrides: {
|
|
36
|
+
...getKeybindingsServiceOverride(),
|
|
37
|
+
},
|
|
38
|
+
userConfiguration: {
|
|
39
|
+
json: JSON.stringify({
|
|
40
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
41
|
+
'editor.guides.bracketPairsHorizontal': 'active',
|
|
42
|
+
'editor.lightbulb.enabled': 'On',
|
|
43
|
+
'editor.experimental.asyncTokenization': true
|
|
44
|
+
})
|
|
47
45
|
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
47
|
+
};
|
|
48
|
+
const editorAppConfig: EditorAppConfig = {
|
|
49
|
+
$type: vscodeApiConfig.$type,
|
|
50
|
+
codeResources: {
|
|
51
|
+
modified: {
|
|
52
|
+
text: code,
|
|
53
|
+
uri: codeUri
|
|
54
|
+
}
|
|
56
55
|
}
|
|
57
56
|
};
|
|
58
|
-
|
|
57
|
+
const apiWrapper = new MonacoVscodeApiWrapper(vscodeApiConfig);
|
|
58
|
+
await apiWrapper.init();
|
|
59
|
+
|
|
60
|
+
const editorApp = new EditorApp(editorAppConfig);
|
|
59
61
|
|
|
60
62
|
vscode.workspace.onDidOpenTextDocument((_event) => {
|
|
61
63
|
mainVscodeDocument = _event;
|
|
@@ -155,9 +157,9 @@ export const runBrowserEditor = async () => {
|
|
|
155
157
|
diagnosticCollection.clear();
|
|
156
158
|
};
|
|
157
159
|
|
|
158
|
-
await
|
|
160
|
+
await editorApp.start(htmlContainer);
|
|
159
161
|
|
|
160
|
-
|
|
162
|
+
editorApp.getTextModels().modified?.onDidChangeContent(() => {
|
|
161
163
|
validate();
|
|
162
164
|
});
|
|
163
165
|
};
|
|
@@ -3,113 +3,91 @@
|
|
|
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 getEnvironmentServiceOverride from '@codingame/monaco-vscode-environment-service-override';
|
|
8
|
+
import getExplorerServiceOverride from '@codingame/monaco-vscode-explorer-service-override';
|
|
7
9
|
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
8
10
|
import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override';
|
|
11
|
+
import getRemoteAgentServiceOverride from '@codingame/monaco-vscode-remote-agent-service-override';
|
|
12
|
+
import getSecretStorageServiceOverride from '@codingame/monaco-vscode-secret-storage-service-override';
|
|
9
13
|
import getBannerServiceOverride from '@codingame/monaco-vscode-view-banner-service-override';
|
|
10
14
|
import getStatusBarServiceOverride from '@codingame/monaco-vscode-view-status-bar-service-override';
|
|
11
15
|
import getTitleBarServiceOverride from '@codingame/monaco-vscode-view-title-bar-service-override';
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import type { WrapperConfig } from 'monaco-editor-wrapper';
|
|
18
|
-
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
|
|
19
|
-
import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
|
|
16
|
+
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
17
|
+
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
18
|
+
import { defaultHtmlAugmentationInstructions, defaultViewsInit, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
19
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
20
|
+
import { Uri } from 'vscode';
|
|
20
21
|
import { ClangdWorkerHandler } from './workerHandler.js';
|
|
21
22
|
|
|
22
|
-
export
|
|
23
|
+
export type ClangdAppConfig = {
|
|
24
|
+
languageClientConfig: LanguageClientConfig;
|
|
25
|
+
vscodeApiConfig: MonacoVscodeApiConfig;
|
|
26
|
+
editorAppConfig: EditorAppConfig;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const createClangdAppConfig = async (config: {
|
|
23
30
|
htmlContainer: HTMLElement,
|
|
24
31
|
workspaceUri: Uri,
|
|
25
32
|
workspaceFileUri: Uri,
|
|
26
33
|
clangdWorkerHandler: ClangdWorkerHandler,
|
|
27
34
|
lsMessageLocalPort: MessagePort
|
|
28
|
-
}): Promise<
|
|
29
|
-
|
|
35
|
+
}): Promise<ClangdAppConfig> => {
|
|
36
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
30
37
|
$type: 'extended',
|
|
31
38
|
htmlContainer: config.htmlContainer,
|
|
32
39
|
logLevel: LogLevel.Debug,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
},
|
|
44
|
-
restartOptions: {
|
|
45
|
-
retries: 5,
|
|
46
|
-
timeout: 1000,
|
|
47
|
-
keepWorker: true
|
|
48
|
-
},
|
|
49
|
-
clientOptions: {
|
|
50
|
-
documentSelector: ['cpp'],
|
|
51
|
-
workspaceFolder: {
|
|
52
|
-
index: 0,
|
|
53
|
-
name: 'workspace',
|
|
54
|
-
uri: config.workspaceUri
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
40
|
+
serviceOverrides: {
|
|
41
|
+
...getKeybindingsServiceOverride(),
|
|
42
|
+
...getLifecycleServiceOverride(),
|
|
43
|
+
...getBannerServiceOverride(),
|
|
44
|
+
...getStatusBarServiceOverride(),
|
|
45
|
+
...getTitleBarServiceOverride(),
|
|
46
|
+
...getExplorerServiceOverride(),
|
|
47
|
+
...getRemoteAgentServiceOverride(),
|
|
48
|
+
...getEnvironmentServiceOverride(),
|
|
49
|
+
...getSecretStorageServiceOverride()
|
|
59
50
|
},
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
},
|
|
72
|
-
viewsConfig: {
|
|
73
|
-
viewServiceType: 'ViewsService',
|
|
74
|
-
htmlAugmentationInstructions: defaultHtmlAugmentationInstructions,
|
|
75
|
-
viewsInitFunc: defaultViewsInit
|
|
51
|
+
viewsConfig: {
|
|
52
|
+
viewServiceType: 'ViewsService',
|
|
53
|
+
htmlAugmentationInstructions: defaultHtmlAugmentationInstructions,
|
|
54
|
+
viewsInitFunc: defaultViewsInit
|
|
55
|
+
},
|
|
56
|
+
workspaceConfig: {
|
|
57
|
+
enableWorkspaceTrust: true,
|
|
58
|
+
windowIndicator: {
|
|
59
|
+
label: 'mlc-clangd-example',
|
|
60
|
+
tooltip: '',
|
|
61
|
+
command: ''
|
|
76
62
|
},
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
command: ''
|
|
83
|
-
},
|
|
84
|
-
workspaceProvider: {
|
|
85
|
-
trusted: true,
|
|
86
|
-
async open() {
|
|
87
|
-
window.open(window.location.href);
|
|
88
|
-
return true;
|
|
89
|
-
},
|
|
90
|
-
workspace: {
|
|
91
|
-
workspaceUri: config.workspaceFileUri
|
|
92
|
-
},
|
|
63
|
+
workspaceProvider: {
|
|
64
|
+
trusted: true,
|
|
65
|
+
async open() {
|
|
66
|
+
window.open(window.location.href);
|
|
67
|
+
return true;
|
|
93
68
|
},
|
|
94
|
-
|
|
95
|
-
|
|
69
|
+
workspace: {
|
|
70
|
+
workspaceUri: config.workspaceFileUri
|
|
96
71
|
},
|
|
97
|
-
productConfiguration: {
|
|
98
|
-
nameShort: 'mlc-clangd-example',
|
|
99
|
-
nameLong: 'mlc-clangd-example'
|
|
100
|
-
}
|
|
101
72
|
},
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
'editor.quickSuggestionsDelay': 200,
|
|
109
|
-
'editor.experimental.asyncTokenization': false
|
|
110
|
-
})
|
|
73
|
+
configurationDefaults: {
|
|
74
|
+
'window.title': 'mlc-clangd-exampled${separator}${dirty}${activeEditorShort}'
|
|
75
|
+
},
|
|
76
|
+
productConfiguration: {
|
|
77
|
+
nameShort: 'mlc-clangd-example',
|
|
78
|
+
nameLong: 'mlc-clangd-example'
|
|
111
79
|
}
|
|
112
80
|
},
|
|
81
|
+
userConfiguration: {
|
|
82
|
+
json: JSON.stringify({
|
|
83
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
84
|
+
'editor.wordBasedSuggestions': 'off',
|
|
85
|
+
'editor.guides.bracketPairsHorizontal': true,
|
|
86
|
+
'editor.inlayHints.enabled': 'offUnlessPressed',
|
|
87
|
+
'editor.quickSuggestionsDelay': 200,
|
|
88
|
+
'editor.experimental.asyncTokenization': false
|
|
89
|
+
})
|
|
90
|
+
},
|
|
113
91
|
extensions: [{
|
|
114
92
|
config: {
|
|
115
93
|
name: 'mlc-clangd-example',
|
|
@@ -120,8 +98,40 @@ export const createWrapperConfig = async (config: {
|
|
|
120
98
|
}
|
|
121
99
|
}
|
|
122
100
|
}],
|
|
123
|
-
|
|
124
|
-
|
|
101
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const languageClientConfig: LanguageClientConfig = {
|
|
105
|
+
name: 'Clangd WASM Language Server',
|
|
106
|
+
connection: {
|
|
107
|
+
options: {
|
|
108
|
+
$type: 'WorkerDirect',
|
|
109
|
+
worker: await config.clangdWorkerHandler.createWorker(),
|
|
110
|
+
messagePort: config.lsMessageLocalPort
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
restartOptions: {
|
|
114
|
+
retries: 5,
|
|
115
|
+
timeout: 1000,
|
|
116
|
+
keepWorker: true
|
|
117
|
+
},
|
|
118
|
+
clientOptions: {
|
|
119
|
+
documentSelector: ['cpp'],
|
|
120
|
+
workspaceFolder: {
|
|
121
|
+
index: 0,
|
|
122
|
+
name: 'workspace',
|
|
123
|
+
uri: config.workspaceUri
|
|
124
|
+
}
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
|
+
|
|
128
|
+
const editorAppConfig: EditorAppConfig = {
|
|
129
|
+
$type: vscodeApiConfig.$type
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
return {
|
|
133
|
+
vscodeApiConfig,
|
|
134
|
+
languageClientConfig,
|
|
135
|
+
editorAppConfig
|
|
136
|
+
};
|
|
127
137
|
};
|