Skip to content

Commit

Permalink
refactor: split extension point instead of creating them all in singl…
Browse files Browse the repository at this point in the history
…e file
  • Loading branch information
Loïc Mangeonjean committed Apr 16, 2024
1 parent 2819ccd commit dfdca60
Showing 1 changed file with 268 additions and 0 deletions.
268 changes: 268 additions & 0 deletions vscode-paches/0050-refactor-split-workbench-contribution.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,268 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= <loic@coderpad.io>
Date: Tue, 16 Apr 2024 15:06:48 +0200
Subject: [PATCH] refactor: split workbench contribution

---
.../api/browser/extensionHost.contribution.ts | 30 -------------------
.../api/browser/statusBarExtensionPoint.ts | 16 +++++++++-
.../common/jsonValidationExtensionPoint.ts | 15 ++++++++++
.../languageConfigurationExtensionPoint.ts | 15 ++++++++++
.../themes/common/colorExtensionPoint.ts | 15 ++++++++++
.../themes/common/iconExtensionPoint.ts | 15 ++++++++++
.../tokenClassificationExtensionPoint.ts | 12 ++++++++
src/vs/workbench/workbench.common.main.ts | 6 ++++
8 files changed, 93 insertions(+), 31 deletions(-)

diff --git a/src/vs/workbench/api/browser/extensionHost.contribution.ts b/src/vs/workbench/api/browser/extensionHost.contribution.ts
index 1fc190391ff..dd5b1a22022 100644
--- a/src/vs/workbench/api/browser/extensionHost.contribution.ts
+++ b/src/vs/workbench/api/browser/extensionHost.contribution.ts
@@ -3,17 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

-import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions';
-import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
-
-// --- other interested parties
-import { JSONValidationExtensionPoint } from 'vs/workbench/api/common/jsonValidationExtensionPoint';
-import { ColorExtensionPoint } from 'vs/workbench/services/themes/common/colorExtensionPoint';
-import { IconExtensionPoint } from 'vs/workbench/services/themes/common/iconExtensionPoint';
-import { TokenClassificationExtensionPoints } from 'vs/workbench/services/themes/common/tokenClassificationExtensionPoint';
-import { LanguageConfigurationFileHandler } from 'vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint';
-import { StatusBarItemsExtensionPoint } from 'vs/workbench/api/browser/statusBarExtensionPoint';
-
// --- mainThread participants
import './mainThreadLocalization';
import './mainThreadBulkEdits';
@@ -89,22 +78,3 @@ import './mainThreadProfileContentHandlers';
import './mainThreadAiRelatedInformation';
import './mainThreadAiEmbeddingVector';
import './mainThreadIssueReporter';
-
-export class ExtensionPoints implements IWorkbenchContribution {
-
- static readonly ID = 'workbench.contrib.extensionPoints';
-
- constructor(
- @IInstantiationService private readonly instantiationService: IInstantiationService
- ) {
- // Classes that handle extension points...
- this.instantiationService.createInstance(JSONValidationExtensionPoint);
- this.instantiationService.createInstance(ColorExtensionPoint);
- this.instantiationService.createInstance(IconExtensionPoint);
- this.instantiationService.createInstance(TokenClassificationExtensionPoints);
- this.instantiationService.createInstance(LanguageConfigurationFileHandler);
- this.instantiationService.createInstance(StatusBarItemsExtensionPoint);
- }
-}
-
-registerWorkbenchContribution2(ExtensionPoints.ID, ExtensionPoints, WorkbenchPhase.BlockStartup);
diff --git a/src/vs/workbench/api/browser/statusBarExtensionPoint.ts b/src/vs/workbench/api/browser/statusBarExtensionPoint.ts
index b692381eaa2..9420ceebbf6 100644
--- a/src/vs/workbench/api/browser/statusBarExtensionPoint.ts
+++ b/src/vs/workbench/api/browser/statusBarExtensionPoint.ts
@@ -6,7 +6,7 @@
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
import { localize } from 'vs/nls';
-import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
+import { IInstantiationService, createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
import { ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { IStatusbarService, StatusbarAlignment as MainThreadStatusBarAlignment, IStatusbarEntryAccessor, IStatusbarEntry, StatusbarAlignment, IStatusbarEntryPriority, StatusbarEntryKind } from 'vs/workbench/services/statusbar/browser/statusbar';
@@ -22,6 +22,7 @@ import { Iterable } from 'vs/base/common/iterator';
import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions';
import { asStatusBarItemIdentifier } from 'vs/workbench/api/common/extHostTypes';
import { STATUS_BAR_ERROR_ITEM_BACKGROUND, STATUS_BAR_WARNING_ITEM_BACKGROUND } from 'vs/workbench/common/theme';
+import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions';


// --- service
@@ -307,3 +308,16 @@ export class StatusBarItemsExtensionPoint {
});
}
}
+
+class StatusBarItemsExtensionPointWorkbenchContribution implements IWorkbenchContribution {
+
+ static readonly ID = 'workbench.contrib.statusBarItemsExtensionPoint';
+
+ constructor(
+ @IInstantiationService private readonly instantiationService: IInstantiationService
+ ) {
+ this.instantiationService.createInstance(StatusBarItemsExtensionPoint);
+ }
+}
+
+registerWorkbenchContribution2(StatusBarItemsExtensionPointWorkbenchContribution.ID, StatusBarItemsExtensionPointWorkbenchContribution, WorkbenchPhase.BlockStartup);
diff --git a/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts b/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts
index 1b82d305f19..aae5859f0b4 100644
--- a/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts
+++ b/src/vs/workbench/api/common/jsonValidationExtensionPoint.ts
@@ -13,6 +13,8 @@ import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
import { Registry } from 'vs/platform/registry/common/platform';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { MarkdownString } from 'vs/base/common/htmlContent';
+import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions';
+import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';

interface IJSONValidationExtensionPoint {
fileMatch: string | string[];
@@ -133,3 +135,16 @@ Registry.as<IExtensionFeaturesRegistry>(Extensions.ExtensionFeaturesRegistry).re
},
renderer: new SyncDescriptor(JSONValidationDataRenderer),
});
+
+class JSONValidationExtensionPointWorkbenchContribution implements IWorkbenchContribution {
+
+ static readonly ID = 'workbench.contrib.jsonValidationExtensionPoint';
+
+ constructor(
+ @IInstantiationService private readonly instantiationService: IInstantiationService
+ ) {
+ this.instantiationService.createInstance(JSONValidationExtensionPoint);
+ }
+}
+
+registerWorkbenchContribution2(JSONValidationExtensionPointWorkbenchContribution.ID, JSONValidationExtensionPointWorkbenchContribution, WorkbenchPhase.BlockStartup);
diff --git a/src/vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint.ts b/src/vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint.ts
index e3d1fcd1064..4b2c9641e2a 100644
--- a/src/vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint.ts
+++ b/src/vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint.ts
@@ -18,6 +18,8 @@ import { getParseErrorMessage } from 'vs/base/common/jsonErrorMessages';
import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader';
import { hash } from 'vs/base/common/hash';
import { Disposable } from 'vs/base/common/lifecycle';
+import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions';
+import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';

interface IRegExp {
pattern: string;
@@ -834,3 +836,16 @@ const schema: IJSONSchema = {
};
const schemaRegistry = Registry.as<IJSONContributionRegistry>(Extensions.JSONContribution);
schemaRegistry.registerSchema(schemaId, schema);
+
+class LanguageConfigurationWorkbenchContribution implements IWorkbenchContribution {
+
+ static readonly ID = 'workbench.contrib.languageConfigurationExtensionPoint';
+
+ constructor(
+ @IInstantiationService private readonly instantiationService: IInstantiationService
+ ) {
+ this.instantiationService.createInstance(LanguageConfigurationFileHandler);
+ }
+}
+
+registerWorkbenchContribution2(LanguageConfigurationWorkbenchContribution.ID, LanguageConfigurationWorkbenchContribution, WorkbenchPhase.BlockStartup);
diff --git a/src/vs/workbench/services/themes/common/colorExtensionPoint.ts b/src/vs/workbench/services/themes/common/colorExtensionPoint.ts
index 235e0ed2948..1e7165b62f6 100644
--- a/src/vs/workbench/services/themes/common/colorExtensionPoint.ts
+++ b/src/vs/workbench/services/themes/common/colorExtensionPoint.ts
@@ -13,6 +13,8 @@ import { Extensions, IExtensionFeatureTableRenderer, IExtensionFeaturesRegistry,
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
import { MarkdownString } from 'vs/base/common/htmlContent';
+import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
+import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions';

interface IColorExtensionPoint {
id: string;
@@ -208,3 +210,16 @@ Registry.as<IExtensionFeaturesRegistry>(Extensions.ExtensionFeaturesRegistry).re
},
renderer: new SyncDescriptor(ColorDataRenderer),
});
+
+class ColorExtensionPointWorkbenchContribution implements IWorkbenchContribution {
+
+ static readonly ID = 'workbench.contrib.colorExtensionPoint';
+
+ constructor(
+ @IInstantiationService private readonly instantiationService: IInstantiationService
+ ) {
+ this.instantiationService.createInstance(ColorExtensionPoint);
+ }
+}
+
+registerWorkbenchContribution2(ColorExtensionPointWorkbenchContribution.ID, ColorExtensionPointWorkbenchContribution, WorkbenchPhase.BlockStartup);
diff --git a/src/vs/workbench/services/themes/common/iconExtensionPoint.ts b/src/vs/workbench/services/themes/common/iconExtensionPoint.ts
index 23becff8428..6bfef797984 100644
--- a/src/vs/workbench/services/themes/common/iconExtensionPoint.ts
+++ b/src/vs/workbench/services/themes/common/iconExtensionPoint.ts
@@ -11,6 +11,8 @@ import { ThemeIcon } from 'vs/base/common/themables';
import * as resources from 'vs/base/common/resources';
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
import { extname, posix } from 'vs/base/common/path';
+import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
+import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions';

interface IIconExtensionPoint {
[id: string]: {
@@ -142,3 +144,16 @@ const formatMap: Record<string, string> = {
function getFontId(description: IExtensionDescription, fontPath: string) {
return posix.join(description.identifier.value, fontPath);
}
+
+class ColorExtensionPointWorkbenchContribution implements IWorkbenchContribution {
+
+ static readonly ID = 'workbench.contrib.iconExtensionPoint';
+
+ constructor(
+ @IInstantiationService private readonly instantiationService: IInstantiationService
+ ) {
+ this.instantiationService.createInstance(IconExtensionPoint);
+ }
+}
+
+registerWorkbenchContribution2(ColorExtensionPointWorkbenchContribution.ID, ColorExtensionPointWorkbenchContribution, WorkbenchPhase.BlockStartup);
diff --git a/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts b/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts
index 49abd845677..33357dc7a36 100644
--- a/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts
+++ b/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint.ts
@@ -6,6 +6,8 @@
import * as nls from 'vs/nls';
import { ExtensionsRegistry, ExtensionMessageCollector } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { getTokenClassificationRegistry, ITokenClassificationRegistry, typeAndModifierIdPattern } from 'vs/platform/theme/common/tokenClassificationRegistry';
+import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
+import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions';

interface ITokenTypeExtensionPoint {
id: string;
@@ -225,5 +227,15 @@ export class TokenClassificationExtensionPoints {
}
}

+class TokenClassificationExtensionPointWorkbenchContribution implements IWorkbenchContribution {

+ static readonly ID = 'workbench.contrib.tokenClassificationExtensionPoint';

+ constructor(
+ @IInstantiationService private readonly instantiationService: IInstantiationService
+ ) {
+ this.instantiationService.createInstance(TokenClassificationExtensionPoints);
+ }
+}
+
+registerWorkbenchContribution2(TokenClassificationExtensionPointWorkbenchContribution.ID, TokenClassificationExtensionPointWorkbenchContribution, WorkbenchPhase.BlockStartup);
diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts
index 351f7cc5cda..af1c305bac3 100644
--- a/src/vs/workbench/workbench.common.main.ts
+++ b/src/vs/workbench/workbench.common.main.ts
@@ -35,6 +35,12 @@ import 'vs/workbench/browser/actions/widgetNavigationCommands';
import 'vs/workbench/services/actions/common/menusExtensionPoint';
import 'vs/workbench/api/common/configurationExtensionPoint';
import 'vs/workbench/api/browser/viewsExtensionPoint';
+import 'vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint';
+import 'vs/workbench/api/common/jsonValidationExtensionPoint';
+import 'vs/workbench/services/themes/common/colorExtensionPoint';
+import 'vs/workbench/services/themes/common/iconExtensionPoint';
+import 'vs/workbench/services/themes/common/tokenClassificationExtensionPoint';
+import 'vs/workbench/api/browser/statusBarExtensionPoint';

//#endregion

--
2.34.1

0 comments on commit dfdca60

Please sign in to comment.