diff --git a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts index db818b4376494..c4b6dc66bc663 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts @@ -1464,7 +1464,7 @@ export class SettingsEditor2 extends EditorPane { this.settingsOrderByTocIndex = this.createSettingsOrderByTocIndex(resolvedSettingsRoot); } - private async onConfigUpdate(keys?: ReadonlySet, forceRefresh = false, triggerSearch = false): Promise { + private async onConfigUpdate(keys?: ReadonlySet, forceRefresh = false, triggerSearch = false, skipInitialSearch = false): Promise { if (keys && this.settingsTreeModel) { return this.updateElementsByKey(keys); } @@ -1634,6 +1634,14 @@ export class SettingsEditor2 extends EditorPane { return await this.onSearchInputChanged(false); } + // If there's a query present (e.g., opening with a filter like @tag:accessibility), + // trigger the search before rendering to avoid showing all settings first + if (!skipInitialSearch && this.searchWidget.getValue() && !this.searchResultModel) { + await this.onSearchInputChanged(true); + // onSearchInputChanged already handles refreshing TOC and rendering the tree + return; + } + this.refreshTOCTree(); this.renderTree(undefined, forceRefresh); @@ -1863,7 +1871,7 @@ export class SettingsEditor2 extends EditorPane { } if (showAdvanced !== this.viewState.tagFilters?.has(ADVANCED_SETTING_TAG)) { - await this.onConfigUpdate(); + await this.onConfigUpdate(undefined, false, false, true); } this.settingsTargetsWidget.updateLanguageFilterIndicators(this.viewState.languageFilter);