mirror of
https://github.com/Microsoft/vscode
synced 2024-09-19 18:48:00 +00:00
Change extension point registration to use a descriptor object
This commit is contained in:
parent
aa2b715832
commit
e2a42ca321
|
@ -74,7 +74,10 @@ export const viewsContainersContribution: IJSONSchema = {
|
|||
}
|
||||
};
|
||||
|
||||
export const viewsContainersExtensionPoint: IExtensionPoint<{ [loc: string]: IUserFriendlyViewsContainerDescriptor[] }> = ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: IUserFriendlyViewsContainerDescriptor[] }>('viewsContainers', [], viewsContainersContribution);
|
||||
export const viewsContainersExtensionPoint: IExtensionPoint<{ [loc: string]: IUserFriendlyViewsContainerDescriptor[] }> = ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: IUserFriendlyViewsContainerDescriptor[] }>({
|
||||
extensionPoint: 'viewsContainers',
|
||||
jsonSchema: viewsContainersContribution
|
||||
});
|
||||
|
||||
const TEST_VIEW_CONTAINER_ORDER = 6;
|
||||
|
||||
|
|
|
@ -82,7 +82,11 @@ const viewsContribution: IJSONSchema = {
|
|||
};
|
||||
|
||||
|
||||
const viewsExtensionPoint: IExtensionPoint<{ [loc: string]: IUserFriendlyViewDescriptor[] }> = ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: IUserFriendlyViewDescriptor[] }>('views', [viewsContainersExtensionPoint], viewsContribution);
|
||||
const viewsExtensionPoint: IExtensionPoint<{ [loc: string]: IUserFriendlyViewDescriptor[] }> = ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: IUserFriendlyViewDescriptor[] }>({
|
||||
extensionPoint: 'views',
|
||||
deps: [viewsContainersExtensionPoint],
|
||||
jsonSchema: viewsContribution
|
||||
});
|
||||
|
||||
class ViewsContainersExtensionHandler implements IWorkbenchContribution {
|
||||
|
||||
|
|
|
@ -11,7 +11,9 @@ import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
|||
import { inputsSchema } from 'vs/workbench/services/configurationResolver/common/configurationResolverSchema';
|
||||
|
||||
// debuggers extension point
|
||||
export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint<IDebuggerContribution[]>('debuggers', [], {
|
||||
export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint<IDebuggerContribution[]>({
|
||||
extensionPoint: 'debuggers',
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.debuggers', 'Contributes debug adapters.'),
|
||||
type: 'array',
|
||||
defaultSnippets: [{ body: [{ type: '', extensions: [] }] }],
|
||||
|
@ -99,6 +101,7 @@ export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerE
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export interface IRawBreakpointContribution {
|
||||
|
@ -106,7 +109,9 @@ export interface IRawBreakpointContribution {
|
|||
}
|
||||
|
||||
// breakpoints extension point #9037
|
||||
export const breakpointsExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint<IRawBreakpointContribution[]>('breakpoints', [], {
|
||||
export const breakpointsExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint<IRawBreakpointContribution[]>({
|
||||
extensionPoint: 'breakpoints',
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.breakpoints', 'Contributes breakpoints.'),
|
||||
type: 'array',
|
||||
defaultSnippets: [{ body: [{ language: '' }] }],
|
||||
|
@ -120,6 +125,7 @@ export const breakpointsExtPoint = extensionsRegistry.ExtensionsRegistry.registe
|
|||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// debug general schema
|
||||
|
|
|
@ -251,7 +251,9 @@ registerLocaleDefinitionSchema([platform.language]);
|
|||
const workbenchRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);
|
||||
workbenchRegistry.registerWorkbenchContribution(LocalizationWorkbenchContribution, LifecyclePhase.Eventually);
|
||||
|
||||
ExtensionsRegistry.registerExtensionPoint('localizations', [], {
|
||||
ExtensionsRegistry.registerExtensionPoint({
|
||||
extensionPoint: 'localizations',
|
||||
jsonSchema: {
|
||||
description: localize('vscode.extension.contributes.localizations', "Contributes localizations to the editor"),
|
||||
type: 'array',
|
||||
default: [],
|
||||
|
@ -296,4 +298,5 @@ ExtensionsRegistry.registerExtensionPoint('localizations', [], {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
|
@ -106,7 +106,11 @@ namespace snippetExt {
|
|||
}
|
||||
};
|
||||
|
||||
export const point = ExtensionsRegistry.registerExtensionPoint<snippetExt.ISnippetsExtensionPoint[]>('snippets', [languagesExtPoint], snippetExt.snippetsContribution);
|
||||
export const point = ExtensionsRegistry.registerExtensionPoint<snippetExt.ISnippetsExtensionPoint[]>({
|
||||
extensionPoint: 'snippets',
|
||||
deps: [languagesExtPoint],
|
||||
jsonSchema: snippetExt.snippetsContribution
|
||||
});
|
||||
}
|
||||
|
||||
function watch(service: IFileService, resource: URI, callback: (type: FileChangeType, resource: URI) => any): IDisposable {
|
||||
|
|
|
@ -1086,7 +1086,9 @@ export namespace Schemas {
|
|||
};
|
||||
}
|
||||
|
||||
let problemPatternExtPoint = ExtensionsRegistry.registerExtensionPoint<Config.NamedProblemPatterns>('problemPatterns', [], {
|
||||
const problemPatternExtPoint = ExtensionsRegistry.registerExtensionPoint<Config.NamedProblemPatterns>({
|
||||
extensionPoint: 'problemPatterns',
|
||||
jsonSchema: {
|
||||
description: localize('ProblemPatternExtPoint', 'Contributes problem patterns'),
|
||||
type: 'array',
|
||||
items: {
|
||||
|
@ -1095,6 +1097,7 @@ let problemPatternExtPoint = ExtensionsRegistry.registerExtensionPoint<Config.Na
|
|||
Schemas.NamedMultiLineProblemPattern
|
||||
]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export interface IProblemPatternRegistry {
|
||||
|
@ -1659,10 +1662,14 @@ export namespace Schemas {
|
|||
};
|
||||
}
|
||||
|
||||
let problemMatchersExtPoint = ExtensionsRegistry.registerExtensionPoint<Config.NamedProblemMatcher[]>('problemMatchers', [problemPatternExtPoint], {
|
||||
const problemMatchersExtPoint = ExtensionsRegistry.registerExtensionPoint<Config.NamedProblemMatcher[]>({
|
||||
extensionPoint: 'problemMatchers',
|
||||
deps: [problemPatternExtPoint],
|
||||
jsonSchema: {
|
||||
description: localize('ProblemMatcherExtPoint', 'Contributes problem matchers'),
|
||||
type: 'array',
|
||||
items: Schemas.NamedProblemMatcher
|
||||
}
|
||||
});
|
||||
|
||||
export interface IProblemMatcherRegistry {
|
||||
|
|
|
@ -67,10 +67,13 @@ namespace Configuration {
|
|||
}
|
||||
|
||||
|
||||
const taskDefinitionsExtPoint = ExtensionsRegistry.registerExtensionPoint<Configuration.TaskDefinition[]>('taskDefinitions', [], {
|
||||
const taskDefinitionsExtPoint = ExtensionsRegistry.registerExtensionPoint<Configuration.TaskDefinition[]>({
|
||||
extensionPoint: 'taskDefinitions',
|
||||
jsonSchema: {
|
||||
description: nls.localize('TaskDefinitionExtPoint', 'Contributes task kinds'),
|
||||
type: 'array',
|
||||
items: taskDefinitionSchema
|
||||
}
|
||||
});
|
||||
|
||||
export interface ITaskDefinitionRegistry {
|
||||
|
|
|
@ -276,7 +276,10 @@ namespace schema {
|
|||
};
|
||||
}
|
||||
|
||||
ExtensionsRegistry.registerExtensionPoint<schema.IUserFriendlyCommand | schema.IUserFriendlyCommand[]>('commands', [], schema.commandsContribution).setHandler(extensions => {
|
||||
ExtensionsRegistry.registerExtensionPoint<schema.IUserFriendlyCommand | schema.IUserFriendlyCommand[]>({
|
||||
extensionPoint: 'commands',
|
||||
jsonSchema: schema.commandsContribution
|
||||
}).setHandler(extensions => {
|
||||
|
||||
function handleCommand(userFriendlyCommand: schema.IUserFriendlyCommand, extension: IExtensionPointUser<any>) {
|
||||
|
||||
|
@ -316,7 +319,10 @@ ExtensionsRegistry.registerExtensionPoint<schema.IUserFriendlyCommand | schema.I
|
|||
});
|
||||
|
||||
|
||||
ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: schema.IUserFriendlyMenuItem[] }>('menus', [], schema.menusContribtion).setHandler(extensions => {
|
||||
ExtensionsRegistry.registerExtensionPoint<{ [loc: string]: schema.IUserFriendlyMenuItem[] }>({
|
||||
extensionPoint: 'menus',
|
||||
jsonSchema: schema.menusContribtion
|
||||
}).setHandler(extensions => {
|
||||
for (let extension of extensions) {
|
||||
const { value, collector } = extension;
|
||||
|
||||
|
|
|
@ -80,7 +80,9 @@ const configurationEntrySchema: IJSONSchema = {
|
|||
let registeredDefaultConfigurations: IDefaultConfigurationExtension[] = [];
|
||||
|
||||
// BEGIN VSCode extension point `configurationDefaults`
|
||||
const defaultConfigurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IConfigurationNode>('configurationDefaults', [], {
|
||||
const defaultConfigurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IConfigurationNode>({
|
||||
extensionPoint: 'configurationDefaults',
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.defaultConfiguration', 'Contributes default editor configuration settings by language.'),
|
||||
type: 'object',
|
||||
defaultSnippets: [{ body: {} }],
|
||||
|
@ -91,6 +93,7 @@ const defaultConfigurationExtPoint = ExtensionsRegistry.registerExtensionPoint<I
|
|||
$ref: editorConfigurationSchemaId,
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
defaultConfigurationExtPoint.setHandler(extensions => {
|
||||
registeredDefaultConfigurations = extensions.map(extension => {
|
||||
|
@ -106,7 +109,10 @@ defaultConfigurationExtPoint.setHandler(extensions => {
|
|||
|
||||
|
||||
// BEGIN VSCode extension point `configuration`
|
||||
const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IConfigurationNode>('configuration', [defaultConfigurationExtPoint], {
|
||||
const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IConfigurationNode>({
|
||||
extensionPoint: 'configuration',
|
||||
deps: [defaultConfigurationExtPoint],
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.configuration', 'Contributes configuration settings.'),
|
||||
oneOf: [
|
||||
configurationEntrySchema,
|
||||
|
@ -115,6 +121,7 @@ const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IConfigu
|
|||
items: configurationEntrySchema
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
configurationExtPoint.setHandler(extensions => {
|
||||
const configurations: IConfigurationNode[] = [];
|
||||
|
|
|
@ -331,6 +331,13 @@ export const schema = {
|
|||
}
|
||||
};
|
||||
|
||||
export interface IExtensionPointDescriptor {
|
||||
isDynamic?: boolean;
|
||||
extensionPoint: string;
|
||||
deps?: IExtensionPoint<any>[];
|
||||
jsonSchema: IJSONSchema;
|
||||
}
|
||||
|
||||
export class ExtensionsRegistryImpl {
|
||||
|
||||
private _extensionPoints: { [extPoint: string]: ExtensionPoint<any>; };
|
||||
|
@ -339,14 +346,14 @@ export class ExtensionsRegistryImpl {
|
|||
this._extensionPoints = {};
|
||||
}
|
||||
|
||||
public registerExtensionPoint<T>(extensionPoint: string, deps: IExtensionPoint<any>[], jsonSchema: IJSONSchema): IExtensionPoint<T> {
|
||||
if (hasOwnProperty.call(this._extensionPoints, extensionPoint)) {
|
||||
throw new Error('Duplicate extension point: ' + extensionPoint);
|
||||
public registerExtensionPoint<T>(desc: IExtensionPointDescriptor): IExtensionPoint<T> {
|
||||
if (hasOwnProperty.call(this._extensionPoints, desc.extensionPoint)) {
|
||||
throw new Error('Duplicate extension point: ' + desc.extensionPoint);
|
||||
}
|
||||
let result = new ExtensionPoint<T>(extensionPoint);
|
||||
this._extensionPoints[extensionPoint] = result;
|
||||
let result = new ExtensionPoint<T>(desc.extensionPoint);
|
||||
this._extensionPoints[desc.extensionPoint] = result;
|
||||
|
||||
schema.properties['contributes'].properties[extensionPoint] = jsonSchema;
|
||||
schema.properties['contributes'].properties[desc.extensionPoint] = desc.jsonSchema;
|
||||
schemaRegistry.registerSchema(schemaId, schema);
|
||||
|
||||
return result;
|
||||
|
|
|
@ -13,7 +13,9 @@ interface IJSONValidationExtensionPoint {
|
|||
url: string;
|
||||
}
|
||||
|
||||
let configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IJSONValidationExtensionPoint[]>('jsonValidation', [], {
|
||||
const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IJSONValidationExtensionPoint[]>({
|
||||
extensionPoint: 'jsonValidation',
|
||||
jsonSchema: {
|
||||
description: nls.localize('contributes.jsonValidation', 'Contributes json schema configuration.'),
|
||||
type: 'array',
|
||||
defaultSnippets: [{ body: [{ fileMatch: '${1:file.json}', url: '${2:url}' }] }],
|
||||
|
@ -31,6 +33,7 @@ let configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IJSONValid
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export class JSONValidationExtensionPoint {
|
||||
|
|
|
@ -230,7 +230,9 @@ let keybindingType: IJSONSchema = {
|
|||
}
|
||||
};
|
||||
|
||||
let keybindingsExtPoint = ExtensionsRegistry.registerExtensionPoint<ContributedKeyBinding | ContributedKeyBinding[]>('keybindings', [], {
|
||||
const keybindingsExtPoint = ExtensionsRegistry.registerExtensionPoint<ContributedKeyBinding | ContributedKeyBinding[]>({
|
||||
extensionPoint: 'keybindings',
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.keybindings', "Contributes keybindings."),
|
||||
oneOf: [
|
||||
keybindingType,
|
||||
|
@ -239,6 +241,7 @@ let keybindingsExtPoint = ExtensionsRegistry.registerExtensionPoint<ContributedK
|
|||
items: keybindingType
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
export const enum DispatchConfig {
|
||||
|
|
|
@ -27,7 +27,10 @@ export interface IRawLanguageExtensionPoint {
|
|||
configuration: string;
|
||||
}
|
||||
|
||||
export const languagesExtPoint: IExtensionPoint<IRawLanguageExtensionPoint[]> = ExtensionsRegistry.registerExtensionPoint<IRawLanguageExtensionPoint[]>('languages', [], {
|
||||
export const languagesExtPoint: IExtensionPoint<IRawLanguageExtensionPoint[]> = ExtensionsRegistry.registerExtensionPoint<IRawLanguageExtensionPoint[]>({
|
||||
isDynamic: true,
|
||||
extensionPoint: 'languages',
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.languages', 'Contributes language declarations.'),
|
||||
type: 'array',
|
||||
items: {
|
||||
|
@ -85,6 +88,7 @@ export const languagesExtPoint: IExtensionPoint<IRawLanguageExtensionPoint[]> =
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export class WorkbenchModeServiceImpl extends ModeServiceImpl {
|
||||
|
|
|
@ -24,7 +24,10 @@ export interface ITMSyntaxExtensionPoint {
|
|||
injectTo: string[];
|
||||
}
|
||||
|
||||
export const grammarsExtPoint: IExtensionPoint<ITMSyntaxExtensionPoint[]> = ExtensionsRegistry.registerExtensionPoint<ITMSyntaxExtensionPoint[]>('grammars', [languagesExtPoint], {
|
||||
export const grammarsExtPoint: IExtensionPoint<ITMSyntaxExtensionPoint[]> = ExtensionsRegistry.registerExtensionPoint<ITMSyntaxExtensionPoint[]>({
|
||||
extensionPoint: 'grammars',
|
||||
deps: [languagesExtPoint],
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.grammars', 'Contributes textmate tokenizers.'),
|
||||
type: 'array',
|
||||
defaultSnippets: [{ body: [{ language: '${1:id}', scopeName: 'source.${2:id}', path: './syntaxes/${3:id}.tmLanguage.' }] }],
|
||||
|
@ -65,4 +68,5 @@ export const grammarsExtPoint: IExtensionPoint<ITMSyntaxExtensionPoint[]> = Exte
|
|||
},
|
||||
required: ['scopeName', 'path']
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -17,7 +17,9 @@ interface IColorExtensionPoint {
|
|||
const colorReferenceSchema = getColorRegistry().getColorReferenceSchema();
|
||||
const colorIdPattern = '^\\w+[.\\w+]*$';
|
||||
|
||||
const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IColorExtensionPoint[]>('colors', [], {
|
||||
const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IColorExtensionPoint[]>({
|
||||
extensionPoint: 'colors',
|
||||
jsonSchema: {
|
||||
description: nls.localize('contributes.color', 'Contributes extension defined themable colors'),
|
||||
type: 'array',
|
||||
items: {
|
||||
|
@ -64,6 +66,7 @@ const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint<IColorEx
|
|||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export class ColorExtensionPoint {
|
||||
|
|
|
@ -14,8 +14,9 @@ import { IExtensionService } from 'vs/workbench/services/extensions/common/exten
|
|||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
|
||||
|
||||
let themesExtPoint = ExtensionsRegistry.registerExtensionPoint<IThemeExtensionPoint[]>('themes', [], {
|
||||
const themesExtPoint = ExtensionsRegistry.registerExtensionPoint<IThemeExtensionPoint[]>({
|
||||
extensionPoint: 'themes',
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.themes', 'Contributes textmate color themes.'),
|
||||
type: 'array',
|
||||
items: {
|
||||
|
@ -41,6 +42,7 @@ let themesExtPoint = ExtensionsRegistry.registerExtensionPoint<IThemeExtensionPo
|
|||
},
|
||||
required: ['path', 'uiTheme']
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export class ColorThemeStore {
|
||||
|
|
|
@ -14,7 +14,9 @@ import { Event, Emitter } from 'vs/base/common/event';
|
|||
import { FileIconThemeData } from 'vs/workbench/services/themes/electron-browser/fileIconThemeData';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
|
||||
let iconThemeExtPoint = ExtensionsRegistry.registerExtensionPoint<IThemeExtensionPoint[]>('iconThemes', [], {
|
||||
const iconThemeExtPoint = ExtensionsRegistry.registerExtensionPoint<IThemeExtensionPoint[]>({
|
||||
extensionPoint: 'iconThemes',
|
||||
jsonSchema: {
|
||||
description: nls.localize('vscode.extension.contributes.iconThemes', 'Contributes file icon themes.'),
|
||||
type: 'array',
|
||||
items: {
|
||||
|
@ -36,7 +38,9 @@ let iconThemeExtPoint = ExtensionsRegistry.registerExtensionPoint<IThemeExtensio
|
|||
},
|
||||
required: ['path', 'id']
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export class FileIconThemeStore {
|
||||
|
||||
private knownIconThemes: FileIconThemeData[];
|
||||
|
|
Loading…
Reference in a new issue