diff --git a/src/vs/editor/contrib/documentSymbols/outlineModel.ts b/src/vs/editor/contrib/documentSymbols/outlineModel.ts index 0f5d0e9c5ef81dd69b3c63bef9ce0294ad944c28..ba417c12cf61e4b78a387673ea69c1697c6b0989 100644 --- a/src/vs/editor/contrib/documentSymbols/outlineModel.ts +++ b/src/vs/editor/contrib/documentSymbols/outlineModel.ts @@ -120,14 +120,14 @@ export class OutlineGroup extends TreeElement { constructor( readonly id: string, public parent: TreeElement | undefined, - readonly provider: DocumentSymbolProvider, - readonly providerIndex: number, + readonly label: string, + readonly order: number, ) { super(); } adopt(parent: TreeElement): OutlineGroup { - let res = new OutlineGroup(this.id, parent, this.provider, this.providerIndex); + let res = new OutlineGroup(this.id, parent, this.label, this.order); for (const [key, value] of this.children) { res.children.set(key, value.adopt(res)); } @@ -320,7 +320,7 @@ export class OutlineModel extends TreeElement { const promises = provider.map((provider, index) => { let id = TreeElement.findId(`provider_${index}`, result); - let group = new OutlineGroup(id, result, provider, index); + let group = new OutlineGroup(id, result, provider.displayName ?? 'Unknown Outline Provider', index); return Promise.resolve(provider.provideDocumentSymbols(result.textModel, cts.token)).then(result => { for (const info of result || []) { diff --git a/src/vs/editor/contrib/documentSymbols/outlineTree.ts b/src/vs/editor/contrib/documentSymbols/outlineTree.ts index 3182328bbc44cfea6be93c7075b8f372129839d3..e1f16990fe8b6db302c93c02a8d0cff7fdaac544 100644 --- a/src/vs/editor/contrib/documentSymbols/outlineTree.ts +++ b/src/vs/editor/contrib/documentSymbols/outlineTree.ts @@ -32,7 +32,7 @@ export class OutlineNavigationLabelProvider implements IKeyboardNavigationLabelP getKeyboardNavigationLabel(element: OutlineItem): { toString(): string; } { if (element instanceof OutlineGroup) { - return element.provider.displayName || element.id; + return element.label; } else { return element.symbol.name; } @@ -43,7 +43,7 @@ export class OutlineAccessibilityProvider implements IListAccessibilityProvider< getAriaLabel(element: OutlineItem): string | null { if (element instanceof OutlineGroup) { - return element.provider.displayName || element.id; + return element.label; } else { return element.symbol.name; } @@ -102,7 +102,7 @@ export class OutlineGroupRenderer implements ITreeRenderer, index: number, template: OutlineGroupTemplate): void { template.label.set( - node.element.provider.displayName || localize('provider', "Outline Provider"), + node.element.label, createMatches(node.filterData) ); } @@ -324,7 +324,7 @@ export class OutlineItemComparator implements ITreeSorter { compare(a: OutlineItem, b: OutlineItem): number { if (a instanceof OutlineGroup && b instanceof OutlineGroup) { - return a.providerIndex - b.providerIndex; + return a.order - b.order; } else if (a instanceof OutlineElement && b instanceof OutlineElement) { if (this.type === OutlineSortOrder.ByKind) { diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index 1ac222828b099cce513302575491a9a5092eaa52..ac28f0c5449a3ef44f8f7a47aeb992dc38275135 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -104,7 +104,7 @@ class Item extends BreadcrumbsItem { } else if (this.element instanceof OutlineGroup) { // provider let label = new IconLabel(container); - label.setLabel(this.element.provider.displayName || ''); + label.setLabel(this.element.label); this._disposables.add(label); } else if (this.element instanceof OutlineElement) {