Skip to content

Commit 4c08ba7

Browse files
authored
Adapt to monaco-vscode-api-1.79.1 (#501)
* Added warning when required services are not configured. Update registerFeatures * Remove unnecessary optimizeDeps
1 parent 58fe441 commit 4c08ba7

19 files changed

Lines changed: 112 additions & 97 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ The following table describes which version of **monaco-languageclient** and **m
7878

7979
| monaco-languageclient | monaco-vscode-api | monaco-editor | comment |
8080
| :---- | :---- | :--- | :--- |
81-
| 6.1.0 | 1.79.0 | 0.38.0 | Released 2023-06-0x |
81+
| 6.1.0 | 1.79.1 | 0.38.0 | Released 2023-06-0x |
8282
| 6.0.3 | 1.78.8 | 0.37.1 | Released 2023-05-31 |
8383
| 6.0.2 | 1.78.6 | 0.37.1 | Released 2023-05-24 |
8484
| 6.0.1 | 1.78.6 | 0.37.1 | Released 2023-05-12 |

package-lock.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/client/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ All notable changes to this npm module are documented in this file.
55
## [6.1.0] - 2023-06-0x
66

77
- Updated to `monaco-vscode-api` version `1.79.0` and `monaco-editor` version `0.38.0` [#493](https://github.com/TypeFox/monaco-languageclient/issues/493)
8+
- Updated to `monaco-vscode-api` version `1.79.1` [#501](https://github.com/TypeFox/monaco-languageclient/pull/501)
89
- `initService` creates `window.MonacoEnvironment` if not yet available
910

1011
## [6.0.3] - 2023-05-31

packages/client/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "monaco-languageclient",
3-
"version": "6.1.0-next.0",
3+
"version": "6.1.0-next.1",
44
"description": "Monaco Language client implementation",
55
"author": {
66
"name": "TypeFox GmbH",
@@ -49,13 +49,13 @@
4949
],
5050
"dependencies": {
5151
"monaco-editor": "~0.38.0",
52-
"vscode": "npm:@codingame/monaco-vscode-api@~1.79.0",
52+
"vscode": "npm:@codingame/monaco-vscode-api@~1.79.1",
5353
"vscode-jsonrpc": "~8.1.0",
5454
"vscode-languageclient": "~8.1.0"
5555
},
5656
"peerDependencies": {
5757
"monaco-editor": "~0.38.0",
58-
"vscode": "npm:@codingame/monaco-vscode-api@~1.79.0"
58+
"vscode": "npm:@codingame/monaco-vscode-api@~1.79.1"
5959
},
6060
"peerDependenciesMeta": {
6161
"monaco-editor": {
@@ -67,7 +67,7 @@
6767
},
6868
"scripts": {
6969
"postinstall": "monaco-treemending",
70-
"clean": "npx shx rm -fr lib *.tsbuildinfo",
70+
"clean": "shx rm -fr lib *.tsbuildinfo",
7171
"compile": "tsc --build tsconfig.src.json",
7272
"build:msg": "echo Building monaco-languageclient:",
7373
"build": "npm run build:msg && npm run clean && npm run compile"

packages/client/src/monaco-language-client.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,7 @@ export class MonacoLanguageClient extends BaseLanguageClient {
124124
this.registerFeature(new WillSaveFeature(this));
125125
this.registerFeature(new WillSaveWaitUntilFeature(this));
126126
this.registerFeature(new DidSaveTextDocumentFeature(this));
127-
}
128-
129-
/**
130-
* These are all contained in BaseLanguageClient#registerBuiltinFeatures but not registered
131-
* in MonacoLanguageClient. This method is not called!
132-
*/
133-
public registerNotUsedFeatures() {
134-
// theses feature will become supported once https://github.com/CodinGame/monaco-vscode-api/pull/110 is ready
127+
// enabled since monaco-vscode-api 1.79.0 (PR https://github.com/CodinGame/monaco-vscode-api/pull/110)
135128
this.registerFeature(new WorkspaceSymbolFeature(this));
136129
this.registerFeature(new DidCreateFilesFeature(this));
137130
this.registerFeature(new DidRenameFilesFeature(this));
@@ -142,7 +135,13 @@ export class MonacoLanguageClient extends BaseLanguageClient {
142135
this.registerFeature(new CallHierarchyFeature(this));
143136
this.registerFeature(new TypeHierarchyFeature(this));
144137
this.registerFeature(new InlineValueFeature(this));
138+
}
145139

140+
/**
141+
* These are all contained in BaseLanguageClient#registerBuiltinFeatures but not registered
142+
* in MonacoLanguageClient. This method is not called!
143+
*/
144+
public registerNotUsedFeatures() {
146145
// these will stay unsupported for now
147146
this.registerFeature(new ProgressFeature(this));
148147
this.registerFeature(new NotebookDocumentSyncFeature(this));

packages/client/src/monaco-vscode-api-services.ts

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { editor, Environment, Uri } from 'monaco-editor/esm/vs/editor/editor.api.js';
77
import { initialize as initializeMonacoService } from 'vscode/services';
88
import { initialize as initializeVscodeExtensions } from 'vscode/extensions';
9-
import type { OpenEditor } from 'vscode/service-override/modelEditor';
9+
import type { OpenEditor } from 'vscode/service-override/editor';
1010

1111
interface MonacoEnvironmentEnhanced extends Environment {
1212
vscodeApiInitialised: boolean;
@@ -15,13 +15,13 @@ interface MonacoEnvironmentEnhanced extends Environment {
1515
export type InitializeServiceConfig = {
1616
enableDialogService?: boolean;
1717
enableNotificationService?: boolean;
18-
enableModelEditorService?: boolean;
19-
modelEditorServiceConfig?: {
20-
useDefaultFunction: boolean;
18+
enableModelService?: boolean;
19+
configureEditorOrViewsServiceConfig?: {
20+
enableViewsService: boolean;
21+
useDefaultOpenEditorFunction: boolean;
2122
openEditorFunc?: OpenEditor
2223
};
23-
enableConfigurationService?: boolean
24-
configurationServiceConfig?: {
24+
configureConfigurationServiceConfig?: {
2525
defaultWorkspaceUri: string;
2626
};
2727
enableThemeService?: boolean;
@@ -32,7 +32,7 @@ export type InitializeServiceConfig = {
3232
enableDebugService?: boolean;
3333
enablePreferencesService?: boolean;
3434
enableSnippetsService?: boolean;
35-
enableViewsService?: boolean;
35+
enableQuickaccessService?: boolean;
3636
userServices?: editor.IEditorOverrideServices;
3737
debugLogging?: boolean;
3838
};
@@ -75,10 +75,24 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
7575
// files service is required
7676
addService('files', import('vscode/service-override/files'));
7777

78-
if (lc.enableModelEditorService === true && lc.modelEditorServiceConfig !== undefined) {
79-
addService('modelEditor', import('vscode/service-override/modelEditor'));
78+
if (lc.enableModelService === true) {
79+
addService('model', import('vscode/service-override/model'));
8080
}
81-
if (lc.enableConfigurationService === true && lc.configurationServiceConfig !== undefined) {
81+
if (lc.configureEditorOrViewsServiceConfig !== undefined) {
82+
if (lc.configureEditorOrViewsServiceConfig.enableViewsService) {
83+
addService('views', import('vscode/service-override/views'));
84+
} else {
85+
addService('editor', import('vscode/service-override/editor'));
86+
}
87+
}
88+
if (lc.enableQuickaccessService === true) {
89+
// quickaccess requires keybindings
90+
if (lc.enableKeybindingsService === undefined || lc.enableKeybindingsService === false) {
91+
throw new Error('"quickaccess" requires "keybindings" service. Please add it to the "initServices" config.');
92+
}
93+
addService('quickaccess', import('vscode/service-override/quickaccess'));
94+
}
95+
if (lc.configureConfigurationServiceConfig !== undefined) {
8296
addService('configuration', import('vscode/service-override/configuration'));
8397
}
8498
if (lc.enableDialogService === true) {
@@ -88,9 +102,11 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
88102
addService('notifications', import('vscode/service-override/notifications'));
89103
}
90104
if (lc.enableThemeService === true) {
91-
addService('theme', import('vscode/service-override/theme'));
92105
// theme requires textmate
93-
lc.enableTextmateService = true;
106+
if (lc.enableTextmateService === undefined || lc.enableTextmateService === false) {
107+
throw new Error('"theme" requires "textmate" service. Please add it to the "initServices" config.');
108+
}
109+
addService('theme', import('vscode/service-override/theme'));
94110
}
95111
if (lc.enableTextmateService === true) {
96112
addService('textmate', import('vscode/service-override/textmate'));
@@ -113,9 +129,6 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
113129
if (lc.enableSnippetsService === true) {
114130
addService('snippets', import('vscode/service-override/snippets'));
115131
}
116-
if (lc.enableViewsService === true) {
117-
addService('views', import('vscode/service-override/views'));
118-
}
119132

120133
const reportServiceLoading = (origin: string, services: editor.IEditorOverrideServices, debugLogging: boolean) => {
121134
for (const serviceName of Object.keys(services)) {
@@ -146,19 +159,18 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
146159
}
147160

148161
let services: editor.IEditorOverrideServices = {};
149-
if (serviceName === 'modelEditor' && lc.enableModelEditorService) {
150-
const defaultOpenEditorFunc: OpenEditor = async (model, options, sideBySide) => {
151-
console.log('Trying to open a model', model, options, sideBySide);
152-
return undefined;
153-
};
154-
155-
if (lc.modelEditorServiceConfig?.useDefaultFunction) {
162+
if (serviceName === 'editor' || serviceName === 'views') {
163+
if (lc.configureEditorOrViewsServiceConfig!.useDefaultOpenEditorFunction) {
164+
const defaultOpenEditorFunc: OpenEditor = async (model, options, sideBySide) => {
165+
console.log('Trying to open a model', model, options, sideBySide);
166+
return undefined;
167+
};
156168
services = loadedImport.default(defaultOpenEditorFunc);
157-
} else if (lc.modelEditorServiceConfig?.openEditorFunc) {
158-
services = loadedImport.default(lc.modelEditorServiceConfig.openEditorFunc);
169+
} else if (lc.configureEditorOrViewsServiceConfig?.openEditorFunc) {
170+
services = loadedImport.default(lc.configureEditorOrViewsServiceConfig.openEditorFunc);
159171
}
160-
} else if (serviceName === 'configuration' && lc.enableConfigurationService) {
161-
const uri = Uri.file(lc.configurationServiceConfig!.defaultWorkspaceUri);
172+
} else if (serviceName === 'configuration') {
173+
const uri = Uri.file(lc.configureConfigurationServiceConfig!.defaultWorkspaceUri);
162174
services = loadedImport.default(uri);
163175
} else {
164176
services = loadedImport.default();

packages/examples/main/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"langium": "~1.2.0",
2424
"langium-statemachine-dsl": "~1.2.0",
2525
"monaco-editor-workers": "0.38.0",
26-
"monaco-languageclient": "6.1.0-next.0",
26+
"monaco-languageclient": "6.1.0-next.1",
2727
"normalize-url": "~8.0.0",
2828
"react": "~18.2.0",
2929
"react-dom": "~18.2.0",
@@ -49,7 +49,7 @@
4949
"npm": "9.6.6"
5050
},
5151
"scripts": {
52-
"clean": "npx shx rm -fr dist *.tsbuildinfo",
52+
"clean": "shx rm -fr dist *.tsbuildinfo",
5353
"compile": "tsc --build tsconfig.src.json",
5454
"build:msg": "echo Building main examples:",
5555
"build:worker:vite": "vite --config vite.langium-worker.ts build",

packages/examples/main/src/browser/main.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
* ------------------------------------------------------------------------------------------ */
55
import { languages, workspace, TextDocument as VsCodeTextDocument } from 'vscode';
6-
7-
import { buildWorkerDefinition } from 'monaco-editor-workers';
8-
96
import { getLanguageService, TextDocument } from 'vscode-json-languageservice';
107
import { createConverter as createCodeConverter } from 'vscode-languageclient/lib/common/codeConverter.js';
118
import { createConverter as createProtocolConverter } from 'vscode-languageclient/lib/common/protocolConverter.js';
129
import { createDefaultJsonContent, createJsonEditor } from '../common.js';
1310

11+
import { buildWorkerDefinition } from 'monaco-editor-workers';
1412
buildWorkerDefinition('../../../node_modules/monaco-editor-workers/dist/workers/', new URL('', window.location.href).href, false);
1513

1614
const codeConverter = createCodeConverter();

packages/examples/main/src/client/main.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6-
import { buildWorkerDefinition } from 'monaco-editor-workers';
76
import { createDefaultJsonContent, createJsonEditor, createUrl, createWebSocket } from '../common.js';
8-
7+
import { buildWorkerDefinition } from 'monaco-editor-workers';
98
buildWorkerDefinition('../../../node_modules/monaco-editor-workers/dist/workers/', new URL('', window.location.href).href, false);
109

1110
const start = async () => {

packages/examples/main/src/common.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6-
import 'monaco-editor/esm/vs/editor/edcore.main.js';
6+
import 'monaco-editor/esm/vs/editor/editor.all.js';
7+
import 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';
8+
import 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';
79
import { editor, languages, Uri } from 'monaco-editor/esm/vs/editor/editor.api.js';
810
import { createConfiguredEditor, createModelReference, IReference, ITextFileEditorModel } from 'vscode/monaco';
11+
import 'vscode/default-extensions/theme-defaults';
12+
import 'vscode/default-extensions/json';
913
import { initServices, MonacoLanguageClient } from 'monaco-languageclient';
1014
import normalizeUrl from 'normalize-url';
1115
import { CloseAction, ErrorAction, MessageTransports } from 'vscode-languageclient';
1216
import { WebSocketMessageReader, WebSocketMessageWriter, toSocket } from 'vscode-ws-jsonrpc';
13-
import 'vscode/default-extensions/theme-defaults';
14-
import 'vscode/default-extensions/json';
1517

1618
export const createLanguageClient = (transports: MessageTransports): MonacoLanguageClient => {
1719
return new MonacoLanguageClient({
@@ -79,11 +81,15 @@ export const createJsonEditor = async (config: {
7981
if (config.init === true) {
8082
await initServices({
8183
enableThemeService: true,
82-
enableModelEditorService: true,
83-
modelEditorServiceConfig: {
84-
useDefaultFunction: true
84+
enableTextmateService: true,
85+
enableModelService: true,
86+
configureEditorOrViewsServiceConfig: {
87+
enableViewsService: false,
88+
useDefaultOpenEditorFunction: true
8589
},
8690
enableLanguagesService: true,
91+
enableKeybindingsService: true,
92+
enableQuickaccessService: true,
8793
debugLogging: true
8894
});
8995
}

0 commit comments

Comments
 (0)