-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: split extension point instead of creating them all in singl…
…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.
There are no files selected for viewing
268 changes: 268 additions & 0 deletions
268
vscode-paches/0050-refactor-split-workbench-contribution.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|