@@ -14,6 +14,8 @@ 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
===================================================================
@@ -322,3 +324,76 @@ Index: code-server/lib/vscode/src/vs/workbench/services/localization/electron-sa
322
324
await this.jsonEditingService.write(this.environmentService.argvResource, [{ path: ['locale'], value: locale }], true);
323
325
return true;
324
326
}
327
+ Index: code-server/lib/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
328
+ ===================================================================
329
+ --- code-server.orig/lib/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
330
+ +++ code-server/lib/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
331
+ @@ -318,9 +318,6 @@ export abstract class AbstractInstallAct
332
+ if (this.extension.isBuiltin) {
333
+ return;
334
+ }
335
+ - if (this.extensionsWorkbenchService.canSetLanguage(this.extension)) {
336
+ - return;
337
+ - }
338
+ if (this.extension.state === ExtensionState.Uninstalled && await this.extensionsWorkbenchService.canInstall(this.extension)) {
339
+ this.enabled = this.installPreReleaseVersion ? this.extension.hasPreReleaseVersion : this.extension.hasReleaseVersion;
340
+ this.updateLabel();
341
+ @@ -1775,9 +1772,7 @@ export class SetLanguageAction extends E
342
+ private static readonly EnabledClass = `${ExtensionAction.LABEL_ACTION_CLASS} language`;
343
+ private static readonly DisabledClass = `${SetLanguageAction.EnabledClass} disabled`;
344
+
345
+ - constructor(
346
+ - @IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService,
347
+ - ) {
348
+ + constructor() {
349
+ super(SetLanguageAction.ID, SetLanguageAction.TITLE.value, SetLanguageAction.DisabledClass, false);
350
+ this.update();
351
+ }
352
+ @@ -1785,17 +1780,6 @@ export class SetLanguageAction extends E
353
+ update(): void {
354
+ this.enabled = false;
355
+ this.class = SetLanguageAction.DisabledClass;
356
+ - if (!this.extension) {
357
+ - return;
358
+ - }
359
+ - if (!this.extensionsWorkbenchService.canSetLanguage(this.extension)) {
360
+ - return;
361
+ - }
362
+ - if (this.extension.gallery && language === getLocale(this.extension.gallery)) {
363
+ - return;
364
+ - }
365
+ - this.enabled = true;
366
+ - this.class = SetLanguageAction.EnabledClass;
367
+ }
368
+
369
+ override async run(): Promise<any> {
370
+ @@ -1811,10 +1795,7 @@ export class ClearLanguageAction extends
371
+ private static readonly EnabledClass = `${ExtensionAction.LABEL_ACTION_CLASS} language`;
372
+ private static readonly DisabledClass = `${ClearLanguageAction.EnabledClass} disabled`;
373
+
374
+ - constructor(
375
+ - @IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService,
376
+ - @ILocaleService private readonly localeService: ILocaleService,
377
+ - ) {
378
+ + constructor() {
379
+ super(ClearLanguageAction.ID, ClearLanguageAction.TITLE.value, ClearLanguageAction.DisabledClass, false);
380
+ this.update();
381
+ }
382
+ @@ -1822,17 +1803,6 @@ export class ClearLanguageAction extends
383
+ update(): void {
384
+ this.enabled = false;
385
+ this.class = ClearLanguageAction.DisabledClass;
386
+ - if (!this.extension) {
387
+ - return;
388
+ - }
389
+ - if (!this.extensionsWorkbenchService.canSetLanguage(this.extension)) {
390
+ - return;
391
+ - }
392
+ - if (this.extension.gallery && language !== getLocale(this.extension.gallery)) {
393
+ - return;
394
+ - }
395
+ - this.enabled = true;
396
+ - this.class = ClearLanguageAction.EnabledClass;
397
+ }
398
+
399
+ override async run(): Promise<any> {
0 commit comments