mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 11:08:51 +01:00
ConfigurationService#lookup is responsible for 25% of startup time (fixes #15884)
This commit is contained in:
@@ -29,7 +29,7 @@ import * as modes from 'vs/editor/common/modes';
|
||||
import { IResourceEdit } from 'vs/editor/common/services/bulkEdit';
|
||||
|
||||
import { ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing';
|
||||
import { IWorkspaceConfiguration } from 'vs/workbench/services/configuration/common/configuration';
|
||||
import { IWorkspaceConfigurationValues } from 'vs/workbench/services/configuration/common/configuration';
|
||||
|
||||
import { IPickOpenEntry, IPickOptions } from 'vs/workbench/services/quickopen/common/quickOpenService';
|
||||
import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
|
||||
@@ -54,7 +54,7 @@ export interface IInitData {
|
||||
workspace: IWorkspace;
|
||||
};
|
||||
extensions: IExtensionDescription[];
|
||||
configuration: IWorkspaceConfiguration;
|
||||
configuration: IWorkspaceConfigurationValues;
|
||||
telemetryInfo: ITelemetryInfo;
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ export abstract class ExtHostCommandsShape {
|
||||
}
|
||||
|
||||
export abstract class ExtHostConfigurationShape {
|
||||
$acceptConfigurationChanged(entries: IWorkspaceConfiguration) { throw ni(); }
|
||||
$acceptConfigurationChanged(values: IWorkspaceConfigurationValues) { throw ni(); }
|
||||
}
|
||||
|
||||
export abstract class ExtHostDiagnosticsShape {
|
||||
|
||||
@@ -9,7 +9,7 @@ import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { WorkspaceConfiguration } from 'vscode';
|
||||
import { ExtHostConfigurationShape, MainThreadConfigurationShape } from './extHost.protocol';
|
||||
import { ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing';
|
||||
import { IWorkspaceConfiguration } from 'vs/workbench/services/configuration/common/configuration';
|
||||
import { IWorkspaceConfigurationValues } from 'vs/workbench/services/configuration/common/configuration';
|
||||
import { toValuesTree } from 'vs/platform/configuration/common/model';
|
||||
|
||||
function lookUp(tree: any, key: string) {
|
||||
@@ -24,11 +24,11 @@ function lookUp(tree: any, key: string) {
|
||||
}
|
||||
|
||||
interface UsefulConfiguration {
|
||||
data: IWorkspaceConfiguration;
|
||||
data: IWorkspaceConfigurationValues;
|
||||
valueTree: any;
|
||||
}
|
||||
|
||||
function createUsefulConfiguration(data: IWorkspaceConfiguration): { data: IWorkspaceConfiguration, valueTree: any } {
|
||||
function createUsefulConfiguration(data: IWorkspaceConfigurationValues): { data: IWorkspaceConfigurationValues, valueTree: any } {
|
||||
const valueMap: { [key: string]: any } = Object.create(null);
|
||||
for (let key in data) {
|
||||
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
||||
@@ -48,7 +48,7 @@ export class ExtHostConfiguration extends ExtHostConfigurationShape {
|
||||
private _proxy: MainThreadConfigurationShape;
|
||||
private _configuration: UsefulConfiguration;
|
||||
|
||||
constructor(proxy: MainThreadConfigurationShape, data: IWorkspaceConfiguration) {
|
||||
constructor(proxy: MainThreadConfigurationShape, data: IWorkspaceConfigurationValues) {
|
||||
super();
|
||||
this._proxy = proxy;
|
||||
this._configuration = createUsefulConfiguration(data);
|
||||
@@ -58,7 +58,7 @@ export class ExtHostConfiguration extends ExtHostConfigurationShape {
|
||||
return this._onDidChangeConfiguration && this._onDidChangeConfiguration.event;
|
||||
}
|
||||
|
||||
public $acceptConfigurationChanged(data: IWorkspaceConfiguration) {
|
||||
public $acceptConfigurationChanged(data: IWorkspaceConfigurationValues) {
|
||||
this._configuration = createUsefulConfiguration(data);
|
||||
this._onDidChangeConfiguration.fire(undefined);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { IThreadService } from 'vs/workbench/services/thread/common/threadService';
|
||||
import { IWorkspaceConfigurationService, getEntries } from 'vs/workbench/services/configuration/common/configuration';
|
||||
import { IWorkspaceConfigurationService } from 'vs/workbench/services/configuration/common/configuration';
|
||||
import { IConfigurationEditingService, ConfigurationTarget } from 'vs/workbench/services/configuration/common/configurationEditing';
|
||||
import { MainThreadConfigurationShape, ExtHostContext } from './extHost.protocol';
|
||||
|
||||
@@ -26,8 +26,7 @@ export class MainThreadConfiguration extends MainThreadConfigurationShape {
|
||||
const proxy = threadService.get(ExtHostContext.ExtHostConfiguration);
|
||||
|
||||
this._toDispose = configurationService.onDidUpdateConfiguration(() => {
|
||||
const entries = getEntries(configurationService);
|
||||
proxy.$acceptConfigurationChanged(entries);
|
||||
proxy.$acceptConfigurationChanged(configurationService.values());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user