Skip to content

Commit a550cd7

Browse files
committed
Store directly the editor contributions ctors
1 parent ac263d2 commit a550cd7

7 files changed

Lines changed: 26 additions & 77 deletions

File tree

src/vs/editor/browser/codeEditor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {IInstantiationService} from 'vs/platform/instantiation/common/instantiat
88
import {ICommandService} from 'vs/platform/commands/common/commands';
99
import {IContextKeyService} from 'vs/platform/contextkey/common/contextkey';
1010
import {IEditorOptions} from 'vs/editor/common/editorCommon';
11-
import {IEditorContributionDescriptor} from 'vs/editor/browser/editorBrowser';
11+
import {IEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
1212
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
1313
import {CodeEditorWidget} from 'vs/editor/browser/widget/codeEditorWidget';
1414
import {EditorAction, CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions';
@@ -27,7 +27,7 @@ export class CodeEditor extends CodeEditorWidget {
2727
super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService);
2828
}
2929

30-
protected _getContributions(): IEditorContributionDescriptor[] {
30+
protected _getContributions(): IEditorContributionCtor[] {
3131
return [].concat(EditorBrowserRegistry.getEditorContributions()).concat(CommonEditorRegistry.getEditorContributions());
3232
}
3333

src/vs/editor/browser/editorBrowser.ts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {IEventEmitter} from 'vs/base/common/eventEmitter';
88
import {IDisposable} from 'vs/base/common/lifecycle';
99
import {IKeyboardEvent} from 'vs/base/browser/keyboardEvent';
1010
import {IMouseEvent} from 'vs/base/browser/mouseEvent';
11-
import {IInstantiationService, IConstructorSignature1} from 'vs/platform/instantiation/common/instantiation';
11+
import {IConstructorSignature1} from 'vs/platform/instantiation/common/instantiation';
1212
import * as editorCommon from 'vs/editor/common/editorCommon';
1313
import {Position} from 'vs/editor/common/core/position';
1414
import {Range} from 'vs/editor/common/core/range';
@@ -385,19 +385,7 @@ export interface IEditorMouseEvent {
385385
/**
386386
* @internal
387387
*/
388-
export type ISimpleEditorContributionCtor = IConstructorSignature1<ICodeEditor, editorCommon.IEditorContribution>;
389-
390-
/**
391-
* An editor contribution descriptor that will be used to construct editor contributions
392-
* @internal
393-
*/
394-
export interface IEditorContributionDescriptor {
395-
/**
396-
* Create an instance of the contribution
397-
*/
398-
createInstance(instantiationService:IInstantiationService, editor:ICodeEditor): editorCommon.IEditorContribution;
399-
}
400-
388+
export type IEditorContributionCtor = IConstructorSignature1<ICodeEditor, editorCommon.IEditorContribution>;
401389

402390
/**
403391
* An overview ruler

src/vs/editor/browser/editorBrowserExtensions.ts

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,38 @@
44
*--------------------------------------------------------------------------------------------*/
55
'use strict';
66

7-
import {IInstantiationService, IConstructorSignature1} from 'vs/platform/instantiation/common/instantiation';
87
import {Registry} from 'vs/platform/platform';
9-
import {IEditorContribution} from 'vs/editor/common/editorCommon';
10-
import {ICodeEditor, IEditorContributionDescriptor, ISimpleEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
8+
import {IEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
119

12-
export function editorBrowserContribution(ctor:ISimpleEditorContributionCtor): void {
10+
export function editorBrowserContribution(ctor:IEditorContributionCtor): void {
1311
EditorContributionRegistry.INSTANCE.registerEditorBrowserContribution(ctor);
1412
}
1513

1614
export namespace EditorBrowserRegistry {
17-
// --- Editor Contributions
18-
export function getEditorContributions(): IEditorContributionDescriptor[] {
15+
export function getEditorContributions(): IEditorContributionCtor[] {
1916
return EditorContributionRegistry.INSTANCE.getEditorBrowserContributions();
2017
}
2118
}
2219

23-
class SimpleEditorContributionDescriptor implements IEditorContributionDescriptor {
24-
private _ctor:ISimpleEditorContributionCtor;
25-
26-
constructor(ctor:ISimpleEditorContributionCtor) {
27-
this._ctor = ctor;
28-
}
29-
30-
public createInstance(instantiationService:IInstantiationService, editor:ICodeEditor): IEditorContribution {
31-
// cast added to help the compiler, can remove once IConstructorSignature1 has been removed
32-
return instantiationService.createInstance(<IConstructorSignature1<ICodeEditor, IEditorContribution>> this._ctor, editor);
33-
}
34-
}
35-
36-
// Editor extension points
37-
var Extensions = {
20+
const Extensions = {
3821
EditorContributions: 'editor.contributions'
3922
};
4023

4124
class EditorContributionRegistry {
4225

4326
public static INSTANCE = new EditorContributionRegistry();
4427

45-
private editorContributions: IEditorContributionDescriptor[];
28+
private editorContributions: IEditorContributionCtor[];
4629

4730
constructor() {
4831
this.editorContributions = [];
4932
}
5033

51-
public registerEditorBrowserContribution(ctor:ISimpleEditorContributionCtor): void {
52-
this.editorContributions.push(new SimpleEditorContributionDescriptor(ctor));
34+
public registerEditorBrowserContribution(ctor:IEditorContributionCtor): void {
35+
this.editorContributions.push(ctor);
5336
}
5437

55-
public getEditorBrowserContributions(): IEditorContributionDescriptor[] {
38+
public getEditorBrowserContributions(): IEditorContributionCtor[] {
5639
return this.editorContributions.slice(0);
5740
}
5841
}

src/vs/editor/browser/widget/codeEditorWidget.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,11 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
9898
this.contentWidgets = {};
9999
this.overlayWidgets = {};
100100

101-
let contributionDescriptors = this._getContributions();
102-
for (let i = 0, len = contributionDescriptors.length; i < len; i++) {
101+
let contributions = this._getContributions();
102+
for (let i = 0, len = contributions.length; i < len; i++) {
103+
let ctor = contributions[i];
103104
try {
104-
let contribution = contributionDescriptors[i].createInstance(this._instantiationService, this);
105+
let contribution = this._instantiationService.createInstance(ctor, this);
105106
this._contributions[contribution.getId()] = contribution;
106107
} catch (err) {
107108
onUnexpectedError(err);
@@ -116,7 +117,7 @@ export abstract class CodeEditorWidget extends CommonCodeEditor implements edito
116117
this._codeEditorService.addCodeEditor(this);
117118
}
118119

119-
protected abstract _getContributions(): editorBrowser.IEditorContributionDescriptor[];
120+
protected abstract _getContributions(): editorBrowser.IEditorContributionCtor[];
120121
protected abstract _getActions(): EditorAction[];
121122

122123
protected _createConfiguration(options:editorCommon.ICodeEditorWidgetCreationOptions): CommonEditorConfiguration {

src/vs/editor/common/editorCommon.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {MarkedString} from 'vs/base/common/htmlContent';
99
import * as types from 'vs/base/common/types';
1010
import URI from 'vs/base/common/uri';
1111
import {TPromise} from 'vs/base/common/winjs.base';
12-
import {ServicesAccessor, IInstantiationService, IConstructorSignature1, IConstructorSignature2} from 'vs/platform/instantiation/common/instantiation';
12+
import {ServicesAccessor, IConstructorSignature1, IConstructorSignature2} from 'vs/platform/instantiation/common/instantiation';
1313
import {ILineContext, IMode} from 'vs/editor/common/modes';
1414
import {ViewLineToken} from 'vs/editor/common/core/viewLineToken';
1515
import {ScrollbarVisibility} from 'vs/base/common/scrollable';
@@ -3510,17 +3510,6 @@ export type IEditorActionContributionCtor = IConstructorSignature2<IEditorAction
35103510
*/
35113511
export type ICommonEditorContributionCtor = IConstructorSignature1<ICommonCodeEditor, IEditorContribution>;
35123512

3513-
/**
3514-
* An editor contribution descriptor that will be used to construct editor contributions
3515-
* @internal
3516-
*/
3517-
export interface ICommonEditorContributionDescriptor {
3518-
/**
3519-
* Create an instance of the contribution
3520-
*/
3521-
createInstance(instantiationService:IInstantiationService, editor:ICommonCodeEditor): IEditorContribution;
3522-
}
3523-
35243513
export interface IEditorAction {
35253514
id: string;
35263515
label: string;

src/vs/editor/common/editorCommonExtensions.ts

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import {illegalArgument} from 'vs/base/common/errors';
88
import URI from 'vs/base/common/uri';
99
import {TPromise} from 'vs/base/common/winjs.base';
10-
import {ServicesAccessor, IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
10+
import {ServicesAccessor} from 'vs/platform/instantiation/common/instantiation';
1111
import {CommandsRegistry} from 'vs/platform/commands/common/commands';
1212
import {KeybindingsRegistry} from 'vs/platform/keybinding/common/keybindingsRegistry';
1313
import {Registry} from 'vs/platform/platform';
@@ -112,7 +112,7 @@ export module CommonEditorRegistry {
112112

113113
// --- Editor Contributions
114114

115-
export function getEditorContributions(): editorCommon.ICommonEditorContributionDescriptor[] {
115+
export function getEditorContributions(): editorCommon.ICommonEditorContributionCtor[] {
116116
return EditorContributionRegistry.INSTANCE.getEditorContributions();
117117
}
118118

@@ -150,28 +150,16 @@ export module CommonEditorRegistry {
150150
}
151151
}
152152

153-
class SimpleEditorContributionDescriptor implements editorCommon.ICommonEditorContributionDescriptor {
154-
private _ctor:editorCommon.ICommonEditorContributionCtor;
155-
156-
constructor(ctor:editorCommon.ICommonEditorContributionCtor) {
157-
this._ctor = ctor;
158-
}
159-
160-
public createInstance(instantiationService: IInstantiationService, editor:editorCommon.ICommonCodeEditor): editorCommon.IEditorContribution {
161-
return instantiationService.createInstance(this._ctor, editor);
162-
}
163-
}
164-
165153
// Editor extension points
166-
var Extensions = {
154+
const Extensions = {
167155
EditorCommonContributions: 'editor.commonContributions'
168156
};
169157

170158
class EditorContributionRegistry {
171159

172160
public static INSTANCE = new EditorContributionRegistry();
173161

174-
private editorContributions: editorCommon.ICommonEditorContributionDescriptor[];
162+
private editorContributions: editorCommon.ICommonEditorContributionCtor[];
175163
private editorActions: EditorAction[];
176164

177165
constructor() {
@@ -180,7 +168,7 @@ class EditorContributionRegistry {
180168
}
181169

182170
public registerEditorContribution(ctor:editorCommon.ICommonEditorContributionCtor): void {
183-
this.editorContributions.push(new SimpleEditorContributionDescriptor(ctor));
171+
this.editorContributions.push(ctor);
184172
}
185173

186174
public registerEditorAction(action:EditorAction) {
@@ -195,7 +183,7 @@ class EditorContributionRegistry {
195183
this.editorActions.push(action);
196184
}
197185

198-
public getEditorContributions(): editorCommon.ICommonEditorContributionDescriptor[] {
186+
public getEditorContributions(): editorCommon.ICommonEditorContributionCtor[] {
199187
return this.editorContributions.slice(0);
200188
}
201189

src/vs/workbench/parts/debug/electron-browser/repl.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import * as modes from 'vs/editor/common/modes';
2424
import {editorAction, ServicesAccessor, EditorAction, CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions';
2525
import {IModelService} from 'vs/editor/common/services/modelService';
2626
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
27-
import {IEditorContributionDescriptor} from 'vs/editor/browser/editorBrowser';
27+
import {IEditorContributionCtor} from 'vs/editor/browser/editorBrowser';
2828
import {CodeEditorWidget} from 'vs/editor/browser/widget/codeEditorWidget';
2929
import {EditorBrowserRegistry} from 'vs/editor/browser/editorBrowserExtensions';
3030
import {ServiceCollection} from 'vs/platform/instantiation/common/serviceCollection';
@@ -73,7 +73,7 @@ class ReplEditor extends CodeEditorWidget {
7373
super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService);
7474
}
7575

76-
protected _getContributions(): IEditorContributionDescriptor[] {
76+
protected _getContributions(): IEditorContributionCtor[] {
7777
return [].concat(EditorBrowserRegistry.getEditorContributions()).concat(CommonEditorRegistry.getEditorContributions());
7878
}
7979

0 commit comments

Comments
 (0)