@@ -14,12 +14,14 @@ We can remove this once upstream supports all language packs.
14
14
one but is worse because it does not handle non-existent or empty files.
15
15
7. Replace some caching and Node requires because code-server does not restart
16
16
when changing the language unlike native Code.
17
+ 8. Make language extensions installable like normal rather than using the
18
+ special set/clear language actions.
17
19
18
20
Index: code-server/lib/vscode/src/vs/server/node/serverServices.ts
19
21
===================================================================
20
22
--- code-server.orig/lib/vscode/src/vs/server/node/serverServices.ts
21
23
+++ code-server/lib/vscode/src/vs/server/node/serverServices.ts
22
- @@ -220 ,6 +220 ,9 @@ export async function setupServerService
24
+ @@ -234 ,6 +234 ,9 @@ export async function setupServerService
23
25
const channel = new ExtensionManagementChannel(extensionManagementService, (ctx: RemoteAgentConnectionContext) => getUriTransformer(ctx.remoteAuthority));
24
26
socketServer.registerChannel('extensions', channel);
25
27
@@ -138,7 +140,7 @@ Index: code-server/lib/vscode/src/vs/server/node/remoteLanguagePacks.ts
138
140
===================================================================
139
141
--- code-server.orig/lib/vscode/src/vs/server/node/remoteLanguagePacks.ts
140
142
+++ code-server/lib/vscode/src/vs/server/node/remoteLanguagePacks.ts
141
- @@ -30 ,6 +30 ,12 @@ export function getNLSConfiguration(lang
143
+ @@ -32 ,6 +32 ,12 @@ export function getNLSConfiguration(lang
142
144
if (InternalNLSConfiguration.is(value)) {
143
145
value._languagePackSupport = true;
144
146
}
@@ -151,7 +153,7 @@ Index: code-server/lib/vscode/src/vs/server/node/remoteLanguagePacks.ts
151
153
return value;
152
154
});
153
155
_cache.set(key, result);
154
- @@ -44 ,3 +50 ,43 @@ export namespace InternalNLSConfiguratio
156
+ @@ -46 ,3 +52 ,43 @@ export namespace InternalNLSConfiguratio
155
157
return candidate && typeof candidate._languagePackId === 'string';
156
158
}
157
159
}
@@ -248,6 +250,15 @@ Index: code-server/lib/vscode/src/vs/workbench/workbench.web.main.ts
248
250
===================================================================
249
251
--- code-server.orig/lib/vscode/src/vs/workbench/workbench.web.main.ts
250
252
+++ code-server/lib/vscode/src/vs/workbench/workbench.web.main.ts
253
+ @@ -52,7 +52,7 @@ import 'vs/workbench/services/dialogs/br
254
+ import 'vs/workbench/services/host/browser/browserHostService';
255
+ import 'vs/workbench/services/lifecycle/browser/lifecycleService';
256
+ import 'vs/workbench/services/clipboard/browser/clipboardService';
257
+ - import 'vs/workbench/services/localization/browser/localeService';
258
+ + import 'vs/workbench/services/localization/electron-sandbox/localeService';
259
+ import 'vs/workbench/services/path/browser/pathService';
260
+ import 'vs/workbench/services/themes/browser/browserHostColorSchemeService';
261
+ import 'vs/workbench/services/encryption/browser/encryptionService';
251
262
@@ -119,8 +119,9 @@ import 'vs/workbench/contrib/logs/browse
252
263
// Explorer
253
264
import 'vs/workbench/contrib/files/browser/files.web.contribution';
@@ -264,9 +275,9 @@ Index: code-server/lib/vscode/src/vs/platform/languagePacks/browser/languagePack
264
275
===================================================================
265
276
--- code-server.orig/lib/vscode/src/vs/platform/languagePacks/browser/languagePacks.ts
266
277
+++ code-server/lib/vscode/src/vs/platform/languagePacks/browser/languagePacks.ts
267
- @@ -6,18 +6,24 @@
278
+ @@ -5,18 +5,24 @@
279
+
268
280
import { CancellationTokenSource } from 'vs/base/common/cancellation';
269
- import { Language } from 'vs/base/common/platform';
270
281
import { URI } from 'vs/base/common/uri';
271
282
+ import { ProxyChannel } from 'vs/base/parts/ipc/common/ipc';
272
283
import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement';
@@ -289,20 +300,20 @@ Index: code-server/lib/vscode/src/vs/platform/languagePacks/browser/languagePack
289
300
+ this.languagePackService = ProxyChannel.toService<ILanguagePackService>(remoteAgentService.getConnection()!.getChannel('languagePacks'))
290
301
}
291
302
292
- async getBuiltInExtensionTranslationsUri(id: string): Promise<URI | undefined> {
293
- @@ -73 ,6 +79 ,6 @@ export class WebLanguagePacksService ext
303
+ async getBuiltInExtensionTranslationsUri(id: string, language: string ): Promise<URI | undefined> {
304
+ @@ -72 ,6 +78 ,6 @@ export class WebLanguagePacksService ext
294
305
295
306
// Web doesn't have a concept of language packs, so we just return an empty array
296
307
getInstalledLanguages(): Promise<ILanguagePackItem[]> {
297
308
- return Promise.resolve([]);
298
309
+ return this.languagePackService.getInstalledLanguages()
299
310
}
300
311
}
301
- Index: code-server/lib/vscode/src/vs/workbench/contrib /localization/electron-sandbox/localeService.ts
312
+ Index: code-server/lib/vscode/src/vs/workbench/services /localization/electron-sandbox/localeService.ts
302
313
===================================================================
303
- --- code-server.orig/lib/vscode/src/vs/workbench/contrib /localization/electron-sandbox/localeService.ts
304
- +++ code-server/lib/vscode/src/vs/workbench/contrib /localization/electron-sandbox/localeService.ts
305
- @@ -41 ,7 +41 ,8 @@ export class NativeLocaleService impleme
314
+ --- code-server.orig/lib/vscode/src/vs/workbench/services /localization/electron-sandbox/localeService.ts
315
+ +++ code-server/lib/vscode/src/vs/workbench/services /localization/electron-sandbox/localeService.ts
316
+ @@ -51 ,7 +51 ,8 @@ class NativeLocaleService implements ILo
306
317
@IProductService private readonly productService: IProductService
307
318
) { }
308
319
@@ -312,7 +323,7 @@ Index: code-server/lib/vscode/src/vs/workbench/contrib/localization/electron-san
312
323
try {
313
324
const content = await this.textFileService.read(this.environmentService.argvResource, { encoding: 'utf8' });
314
325
315
- @@ -68 ,9 +69 ,6 @@ export class NativeLocaleService impleme
326
+ @@ -78 ,9 +79 ,6 @@ class NativeLocaleService implements ILo
316
327
}
317
328
318
329
private async writeLocaleValue(locale: string | undefined): Promise<boolean> {
@@ -322,3 +333,70 @@ Index: code-server/lib/vscode/src/vs/workbench/contrib/localization/electron-san
322
333
await this.jsonEditingService.write(this.environmentService.argvResource, [{ path: ['locale'], value: locale }], true);
323
334
return true;
324
335
}
336
+ Index: code-server/lib/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
337
+ ===================================================================
338
+ --- code-server.orig/lib/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
339
+ +++ code-server/lib/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
340
+ @@ -318,9 +318,6 @@ export abstract class AbstractInstallAct
341
+ if (this.extension.isBuiltin) {
342
+ return;
343
+ }
344
+ - if (this.extensionsWorkbenchService.canSetLanguage(this.extension)) {
345
+ - return;
346
+ - }
347
+ if (this.extension.state === ExtensionState.Uninstalled && await this.extensionsWorkbenchService.canInstall(this.extension)) {
348
+ this.enabled = this.installPreReleaseVersion ? this.extension.hasPreReleaseVersion : this.extension.hasReleaseVersion;
349
+ this.updateLabel();
350
+ @@ -697,7 +694,7 @@ export abstract class InstallInOtherServ
351
+ }
352
+
353
+ if (isLanguagePackExtension(this.extension.local.manifest)) {
354
+ - return true;
355
+ + return false;
356
+ }
357
+
358
+ // Prefers to run on UI
359
+ @@ -1785,17 +1782,6 @@ export class SetLanguageAction extends E
360
+ update(): void {
361
+ this.enabled = false;
362
+ this.class = SetLanguageAction.DisabledClass;
363
+ - if (!this.extension) {
364
+ - return;
365
+ - }
366
+ - if (!this.extensionsWorkbenchService.canSetLanguage(this.extension)) {
367
+ - return;
368
+ - }
369
+ - if (this.extension.gallery && language === getLocale(this.extension.gallery)) {
370
+ - return;
371
+ - }
372
+ - this.enabled = true;
373
+ - this.class = SetLanguageAction.EnabledClass;
374
+ }
375
+
376
+ override async run(): Promise<any> {
377
+ @@ -1812,7 +1798,6 @@ export class ClearLanguageAction extends
378
+ private static readonly DisabledClass = `${ClearLanguageAction.EnabledClass} disabled`;
379
+
380
+ constructor(
381
+ - @IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService,
382
+ @ILocaleService private readonly localeService: ILocaleService,
383
+ ) {
384
+ super(ClearLanguageAction.ID, ClearLanguageAction.TITLE.value, ClearLanguageAction.DisabledClass, false);
385
+ @@ -1822,17 +1807,6 @@ export class ClearLanguageAction extends
386
+ update(): void {
387
+ this.enabled = false;
388
+ this.class = ClearLanguageAction.DisabledClass;
389
+ - if (!this.extension) {
390
+ - return;
391
+ - }
392
+ - if (!this.extensionsWorkbenchService.canSetLanguage(this.extension)) {
393
+ - return;
394
+ - }
395
+ - if (this.extension.gallery && language !== getLocale(this.extension.gallery)) {
396
+ - return;
397
+ - }
398
+ - this.enabled = true;
399
+ - this.class = ClearLanguageAction.EnabledClass;
400
+ }
401
+
402
+ override async run(): Promise<any> {
0 commit comments