mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-20 07:09:53 +01:00
plugins: getPluginsStatus()
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
'use strict';
|
||||
|
||||
import nls = require('vs/nls');
|
||||
import {IPluginDescription, IPluginService, IMessage, IPointListener, IActivationEventListener } from 'vs/platform/plugins/common/plugins';
|
||||
import {IPluginDescription, IPluginService, IMessage, IPointListener, IActivationEventListener, IPluginStatus } from 'vs/platform/plugins/common/plugins';
|
||||
import WinJS = require('vs/base/common/winjs.base');
|
||||
import {IDisposable} from 'vs/base/common/lifecycle';
|
||||
import Errors = require('vs/base/common/errors');
|
||||
@@ -111,6 +111,10 @@ export abstract class AbstractPluginService implements IPluginService {
|
||||
return this.activatedPlugins[pluginId].exports;
|
||||
}
|
||||
|
||||
public getPluginsStatus(): { [id: string]: IPluginStatus } {
|
||||
return null;
|
||||
}
|
||||
|
||||
public isActivated(pluginId:string): boolean {
|
||||
return hasOwnProperty.call(this.activatedPlugins, pluginId);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import {IPluginDescription, IMessage} from 'vs/platform/plugins/common/plugins';
|
||||
import {IPluginDescription, IMessage, IPluginStatus} from 'vs/platform/plugins/common/plugins';
|
||||
import {PluginsRegistry} from 'vs/platform/plugins/common/pluginsRegistry';
|
||||
import WinJS = require('vs/base/common/winjs.base');
|
||||
import {Remotable, IThreadService} from 'vs/platform/thread/common/thread';
|
||||
@@ -64,6 +64,7 @@ export class MainProcessPluginService extends AbstractPluginService {
|
||||
private _telemetryService: ITelemetryService;
|
||||
private _proxy: PluginHostPluginService;
|
||||
private _isDev: boolean;
|
||||
private _pluginsStatus: { [id: string]: IPluginStatus };
|
||||
|
||||
/**
|
||||
* This class is constructed manually because it is a service, so it doesn't use any ctor injection
|
||||
@@ -83,8 +84,13 @@ export class MainProcessPluginService extends AbstractPluginService {
|
||||
this._threadService = threadService;
|
||||
this._telemetryService = telemetryService;
|
||||
this._proxy = this._threadService.getRemotable(PluginHostPluginService);
|
||||
this._pluginsStatus = {};
|
||||
|
||||
PluginsRegistry.handleExtensionPoints((severity, source, message) => {
|
||||
if (!this._pluginsStatus[source]) {
|
||||
this._pluginsStatus[source] = { messages: [] };
|
||||
}
|
||||
this._pluginsStatus[source].messages.push({ type: severity, source, message });
|
||||
this.showMessage(severity, source, message);
|
||||
});
|
||||
}
|
||||
@@ -158,6 +164,10 @@ export class MainProcessPluginService extends AbstractPluginService {
|
||||
}
|
||||
}
|
||||
|
||||
public getPluginsStatus(): { [id: string]: IPluginStatus } {
|
||||
return this._pluginsStatus;
|
||||
}
|
||||
|
||||
// -- overwriting AbstractPluginService
|
||||
|
||||
protected _actualActivatePlugin(pluginDescription: IPluginDescription): WinJS.TPromise<ActivatedPlugin> {
|
||||
|
||||
@@ -40,6 +40,10 @@ export interface IMessage {
|
||||
source: string;
|
||||
}
|
||||
|
||||
export interface IPluginStatus {
|
||||
messages: IMessage[];
|
||||
}
|
||||
|
||||
export interface IPluginService {
|
||||
serviceId: ServiceIdentifier<any>;
|
||||
activateByEvent(activationEvent:string): TPromise<any>;
|
||||
@@ -52,6 +56,7 @@ export interface IPluginService {
|
||||
|
||||
get(pluginId:string): any;
|
||||
onReady(): TPromise<boolean>;
|
||||
getPluginsStatus(): { [id: string]: IPluginStatus };
|
||||
}
|
||||
|
||||
export var INSTANCE:IPluginService = null;
|
||||
Reference in New Issue
Block a user