From 207a56ee2c03183817db3f507cf6b6d027c6264d Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Fri, 18 Oct 2019 12:34:45 -0700 Subject: [PATCH] Add debounce for schema changes to fix slowness when launching with the settings editor persisted open --- .../contrib/preferences/browser/settingsEditor2.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts index 81271d3d367..d7e867fe2eb 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts @@ -68,6 +68,7 @@ export class SettingsEditor2 extends BaseEditor { private static NUM_INSTANCES: number = 0; private static SETTING_UPDATE_FAST_DEBOUNCE: number = 200; private static SETTING_UPDATE_SLOW_DEBOUNCE: number = 1000; + private static CONFIG_SCHEMA_UPDATE_DELAYER = 500; private static readonly SUGGESTIONS: string[] = [ `@${MODIFIED_SETTING_TAG}`, '@tag:usesOnlineServices', `@${EXTENSION_SETTING_TAG}` @@ -112,6 +113,8 @@ export class SettingsEditor2 extends BaseEditor { private remoteSearchThrottle: ThrottledDelayer; private searchInProgress: CancellationTokenSource | null = null; + private updatedConfigSchemaDelayer: Delayer; + private settingFastUpdateDelayer: Delayer; private settingSlowUpdateDelayer: Delayer; private pendingSettingUpdate: { key: string, value: any } | null = null; @@ -158,6 +161,8 @@ export class SettingsEditor2 extends BaseEditor { this.settingFastUpdateDelayer = new Delayer(SettingsEditor2.SETTING_UPDATE_FAST_DEBOUNCE); this.settingSlowUpdateDelayer = new Delayer(SettingsEditor2.SETTING_UPDATE_SLOW_DEBOUNCE); + this.updatedConfigSchemaDelayer = new Delayer(SettingsEditor2.CONFIG_SCHEMA_UPDATE_DELAYER); + this.inSettingsEditorContextKey = CONTEXT_SETTINGS_EDITOR.bindTo(contextKeyService); this.searchFocusContextKey = CONTEXT_SETTINGS_SEARCH_FOCUS.bindTo(contextKeyService); this.tocRowFocused = CONTEXT_TOC_ROW_FOCUS.bindTo(contextKeyService); @@ -848,7 +853,9 @@ export class SettingsEditor2 extends BaseEditor { } this._register(model.onDidChangeGroups(() => { - this.onConfigUpdate(undefined, undefined, true); + this.updatedConfigSchemaDelayer.trigger(() => { + this.onConfigUpdate(undefined, undefined, true); + }); })); this.defaultSettingsEditorModel = model; return this.onConfigUpdate(undefined, true);