mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-20 10:53:53 +01:00
Store directly the editor contributions ctors
This commit is contained in:
@@ -8,7 +8,7 @@ import {IInstantiationService} from 'vs/platform/instantiation/common/instantiat
|
||||
import {ICommandService} from 'vs/platform/commands/common/commands';
|
||||
import {IContextKeyService} from 'vs/platform/contextkey/common/contextkey';
|
||||
import {IEditorOptions} from 'vs/editor/common/editorCommon';
|
||||
import {IEditorContributionDescriptor} from 'vs/editor/browser/editorBrowser';
|
||||
import {IEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
|
||||
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
|
||||
import {CodeEditorWidget} from 'vs/editor/browser/widget/codeEditorWidget';
|
||||
import {EditorAction, CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions';
|
||||
@@ -27,7 +27,7 @@ export class CodeEditor extends CodeEditorWidget {
|
||||
super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService);
|
||||
}
|
||||
|
||||
protected _getContributions(): IEditorContributionDescriptor[] {
|
||||
protected _getContributions(): IEditorContributionCtor[] {
|
||||
return [].concat(EditorBrowserRegistry.getEditorContributions()).concat(CommonEditorRegistry.getEditorContributions());
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import {IEventEmitter} from 'vs/base/common/eventEmitter';
|
||||
import {IDisposable} from 'vs/base/common/lifecycle';
|
||||
import {IKeyboardEvent} from 'vs/base/browser/keyboardEvent';
|
||||
import {IMouseEvent} from 'vs/base/browser/mouseEvent';
|
||||
import {IInstantiationService, IConstructorSignature1} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {IConstructorSignature1} from 'vs/platform/instantiation/common/instantiation';
|
||||
import * as editorCommon from 'vs/editor/common/editorCommon';
|
||||
import {Position} from 'vs/editor/common/core/position';
|
||||
import {Range} from 'vs/editor/common/core/range';
|
||||
@@ -385,19 +385,7 @@ export interface IEditorMouseEvent {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export type ISimpleEditorContributionCtor = IConstructorSignature1<ICodeEditor, editorCommon.IEditorContribution>;
|
||||
|
||||
/**
|
||||
* An editor contribution descriptor that will be used to construct editor contributions
|
||||
* @internal
|
||||
*/
|
||||
export interface IEditorContributionDescriptor {
|
||||
/**
|
||||
* Create an instance of the contribution
|
||||
*/
|
||||
createInstance(instantiationService:IInstantiationService, editor:ICodeEditor): editorCommon.IEditorContribution;
|
||||
}
|
||||
|
||||
export type IEditorContributionCtor = IConstructorSignature1<ICodeEditor, editorCommon.IEditorContribution>;
|
||||
|
||||
/**
|
||||
* An overview ruler
|
||||
|
||||
@@ -4,37 +4,20 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import {IInstantiationService, IConstructorSignature1} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {Registry} from 'vs/platform/platform';
|
||||
import {IEditorContribution} from 'vs/editor/common/editorCommon';
|
||||
import {ICodeEditor, IEditorContributionDescriptor, ISimpleEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
|
||||
import {IEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
|
||||
|
||||
export function editorBrowserContribution(ctor:ISimpleEditorContributionCtor): void {
|
||||
export function editorBrowserContribution(ctor:IEditorContributionCtor): void {
|
||||
EditorContributionRegistry.INSTANCE.registerEditorBrowserContribution(ctor);
|
||||
}
|
||||
|
||||
export namespace EditorBrowserRegistry {
|
||||
// --- Editor Contributions
|
||||
export function getEditorContributions(): IEditorContributionDescriptor[] {
|
||||
export function getEditorContributions(): IEditorContributionCtor[] {
|
||||
return EditorContributionRegistry.INSTANCE.getEditorBrowserContributions();
|
||||
}
|
||||
}
|
||||
|
||||
class SimpleEditorContributionDescriptor implements IEditorContributionDescriptor {
|
||||
private _ctor:ISimpleEditorContributionCtor;
|
||||
|
||||
constructor(ctor:ISimpleEditorContributionCtor) {
|
||||
this._ctor = ctor;
|
||||
}
|
||||
|
||||
public createInstance(instantiationService:IInstantiationService, editor:ICodeEditor): IEditorContribution {
|
||||
// cast added to help the compiler, can remove once IConstructorSignature1 has been removed
|
||||
return instantiationService.createInstance(<IConstructorSignature1<ICodeEditor, IEditorContribution>> this._ctor, editor);
|
||||
}
|
||||
}
|
||||
|
||||
// Editor extension points
|
||||
var Extensions = {
|
||||
const Extensions = {
|
||||
EditorContributions: 'editor.contributions'
|
||||
};
|
||||
|
||||
@@ -42,17 +25,17 @@ class EditorContributionRegistry {
|
||||
|
||||
public static INSTANCE = new EditorContributionRegistry();
|
||||
|
||||
private editorContributions: IEditorContributionDescriptor[];
|
||||
private editorContributions: IEditorContributionCtor[];
|
||||
|
||||
constructor() {
|
||||
this.editorContributions = [];
|
||||
}
|
||||
|
||||
public registerEditorBrowserContribution(ctor:ISimpleEditorContributionCtor): void {
|
||||
this.editorContributions.push(new SimpleEditorContributionDescriptor(ctor));
|
||||
public registerEditorBrowserContribution(ctor:IEditorContributionCtor): void {
|
||||
this.editorContributions.push(ctor);
|
||||
}
|
||||
|
||||
public getEditorBrowserContributions(): IEditorContributionDescriptor[] {
|
||||
public getEditorBrowserContributions(): IEditorContributionCtor[] {
|
||||
return this.editorContributions.slice(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,10 +98,11 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
|
||||
this.contentWidgets = {};
|
||||
this.overlayWidgets = {};
|
||||
|
||||
let contributionDescriptors = this._getContributions();
|
||||
for (let i = 0, len = contributionDescriptors.length; i < len; i++) {
|
||||
let contributions = this._getContributions();
|
||||
for (let i = 0, len = contributions.length; i < len; i++) {
|
||||
let ctor = contributions[i];
|
||||
try {
|
||||
let contribution = contributionDescriptors[i].createInstance(this._instantiationService, this);
|
||||
let contribution = this._instantiationService.createInstance(ctor, this);
|
||||
this._contributions[contribution.getId()] = contribution;
|
||||
} catch (err) {
|
||||
onUnexpectedError(err);
|
||||
@@ -116,7 +117,7 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
|
||||
this._codeEditorService.addCodeEditor(this);
|
||||
}
|
||||
|
||||
protected abstract _getContributions(): editorBrowser.IEditorContributionDescriptor[];
|
||||
protected abstract _getContributions(): editorBrowser.IEditorContributionCtor[];
|
||||
protected abstract _getActions(): EditorAction[];
|
||||
|
||||
protected _createConfiguration(options:editorCommon.ICodeEditorWidgetCreationOptions): CommonEditorConfiguration {
|
||||
|
||||
@@ -9,7 +9,7 @@ import {MarkedString} from 'vs/base/common/htmlContent';
|
||||
import * as types from 'vs/base/common/types';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import {TPromise} from 'vs/base/common/winjs.base';
|
||||
import {ServicesAccessor, IInstantiationService, IConstructorSignature1, IConstructorSignature2} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {ServicesAccessor, IConstructorSignature1, IConstructorSignature2} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {ILineContext, IMode} from 'vs/editor/common/modes';
|
||||
import {ViewLineToken} from 'vs/editor/common/core/viewLineToken';
|
||||
import {ScrollbarVisibility} from 'vs/base/common/scrollable';
|
||||
@@ -3510,17 +3510,6 @@ export type IEditorActionContributionCtor = IConstructorSignature2<IEditorAction
|
||||
*/
|
||||
export type ICommonEditorContributionCtor = IConstructorSignature1<ICommonCodeEditor, IEditorContribution>;
|
||||
|
||||
/**
|
||||
* An editor contribution descriptor that will be used to construct editor contributions
|
||||
* @internal
|
||||
*/
|
||||
export interface ICommonEditorContributionDescriptor {
|
||||
/**
|
||||
* Create an instance of the contribution
|
||||
*/
|
||||
createInstance(instantiationService:IInstantiationService, editor:ICommonCodeEditor): IEditorContribution;
|
||||
}
|
||||
|
||||
export interface IEditorAction {
|
||||
id: string;
|
||||
label: string;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
import {illegalArgument} from 'vs/base/common/errors';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import {TPromise} from 'vs/base/common/winjs.base';
|
||||
import {ServicesAccessor, IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {ServicesAccessor} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {CommandsRegistry} from 'vs/platform/commands/common/commands';
|
||||
import {KeybindingsRegistry} from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||
import {Registry} from 'vs/platform/platform';
|
||||
@@ -112,7 +112,7 @@ export module CommonEditorRegistry {
|
||||
|
||||
// --- Editor Contributions
|
||||
|
||||
export function getEditorContributions(): editorCommon.ICommonEditorContributionDescriptor[] {
|
||||
export function getEditorContributions(): editorCommon.ICommonEditorContributionCtor[] {
|
||||
return EditorContributionRegistry.INSTANCE.getEditorContributions();
|
||||
}
|
||||
|
||||
@@ -150,20 +150,8 @@ export module CommonEditorRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
class SimpleEditorContributionDescriptor implements editorCommon.ICommonEditorContributionDescriptor {
|
||||
private _ctor:editorCommon.ICommonEditorContributionCtor;
|
||||
|
||||
constructor(ctor:editorCommon.ICommonEditorContributionCtor) {
|
||||
this._ctor = ctor;
|
||||
}
|
||||
|
||||
public createInstance(instantiationService: IInstantiationService, editor:editorCommon.ICommonCodeEditor): editorCommon.IEditorContribution {
|
||||
return instantiationService.createInstance(this._ctor, editor);
|
||||
}
|
||||
}
|
||||
|
||||
// Editor extension points
|
||||
var Extensions = {
|
||||
const Extensions = {
|
||||
EditorCommonContributions: 'editor.commonContributions'
|
||||
};
|
||||
|
||||
@@ -171,7 +159,7 @@ class EditorContributionRegistry {
|
||||
|
||||
public static INSTANCE = new EditorContributionRegistry();
|
||||
|
||||
private editorContributions: editorCommon.ICommonEditorContributionDescriptor[];
|
||||
private editorContributions: editorCommon.ICommonEditorContributionCtor[];
|
||||
private editorActions: EditorAction[];
|
||||
|
||||
constructor() {
|
||||
@@ -180,7 +168,7 @@ class EditorContributionRegistry {
|
||||
}
|
||||
|
||||
public registerEditorContribution(ctor:editorCommon.ICommonEditorContributionCtor): void {
|
||||
this.editorContributions.push(new SimpleEditorContributionDescriptor(ctor));
|
||||
this.editorContributions.push(ctor);
|
||||
}
|
||||
|
||||
public registerEditorAction(action:EditorAction) {
|
||||
@@ -195,7 +183,7 @@ class EditorContributionRegistry {
|
||||
this.editorActions.push(action);
|
||||
}
|
||||
|
||||
public getEditorContributions(): editorCommon.ICommonEditorContributionDescriptor[] {
|
||||
public getEditorContributions(): editorCommon.ICommonEditorContributionCtor[] {
|
||||
return this.editorContributions.slice(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ import * as modes from 'vs/editor/common/modes';
|
||||
import {editorAction, ServicesAccessor, EditorAction, CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions';
|
||||
import {IModelService} from 'vs/editor/common/services/modelService';
|
||||
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
|
||||
import {IEditorContributionDescriptor} from 'vs/editor/browser/editorBrowser';
|
||||
import {IEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
|
||||
import {CodeEditorWidget} from 'vs/editor/browser/widget/codeEditorWidget';
|
||||
import {EditorBrowserRegistry} from 'vs/editor/browser/editorBrowserExtensions';
|
||||
import {ServiceCollection} from 'vs/platform/instantiation/common/serviceCollection';
|
||||
@@ -73,7 +73,7 @@ class ReplEditor extends CodeEditorWidget {
|
||||
super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService);
|
||||
}
|
||||
|
||||
protected _getContributions(): IEditorContributionDescriptor[] {
|
||||
protected _getContributions(): IEditorContributionCtor[] {
|
||||
return [].concat(EditorBrowserRegistry.getEditorContributions()).concat(CommonEditorRegistry.getEditorContributions());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user