Skip to content

Commit 5cb2e77

Browse files
authored
Merge pull request microsoft#164706 from microsoft/joh/defiant-wallaby
joh/defiant wallaby
2 parents 0ac843a + 647e25e commit 5cb2e77

File tree

3 files changed

+27
-18
lines changed

3 files changed

+27
-18
lines changed

src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsOutline.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { Emitter, Event } from 'vs/base/common/event';
77
import { Disposable, DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
8-
import { IBreadcrumbsDataSource, IOutline, IOutlineCreator, IOutlineListConfig, IOutlineService, OutlineChangeEvent, OutlineConfigKeys, OutlineTarget, } from 'vs/workbench/services/outline/browser/outline';
8+
import { OutlineConfigCollapseItemsValues, IBreadcrumbsDataSource, IOutline, IOutlineCreator, IOutlineListConfig, IOutlineService, OutlineChangeEvent, OutlineConfigKeys, OutlineTarget, } from 'vs/workbench/services/outline/browser/outline';
99
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions';
1010
import { Registry } from 'vs/platform/registry/common/platform';
1111
import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';
@@ -103,10 +103,6 @@ class DocumentSymbolBreadcrumbsSource implements IBreadcrumbsDataSource<Document
103103
}
104104
}
105105

106-
export const enum DocumentSymbolsOutlineInitialState {
107-
Collapsed = 'alwaysCollapse',
108-
Expanded = 'alwaysExpand'
109-
}
110106

111107
class DocumentSymbolsOutline implements IOutline<DocumentSymbolItem> {
112108

@@ -161,9 +157,9 @@ class DocumentSymbolsOutline implements IOutline<DocumentSymbolItem> {
161157
}
162158
};
163159
const comparator = new DocumentSymbolComparator();
164-
const initialState = textResourceConfigurationService.getValue<DocumentSymbolsOutlineInitialState>(_editor.getModel()?.uri, OutlineConfigKeys.collapseItems);
160+
const initialState = textResourceConfigurationService.getValue<OutlineConfigCollapseItemsValues>(_editor.getModel()?.uri, OutlineConfigKeys.collapseItems);
165161
const options = {
166-
collapseByDefault: target === OutlineTarget.Breadcrumbs || (target === OutlineTarget.OutlinePane && initialState === DocumentSymbolsOutlineInitialState.Collapsed),
162+
collapseByDefault: target === OutlineTarget.Breadcrumbs || (target === OutlineTarget.OutlinePane && initialState === OutlineConfigCollapseItemsValues.Collapsed),
167163
expandOnlyOnTwistieClick: true,
168164
multipleSelectionSupport: false,
169165
identityProvider: new DocumentSymbolIdentityProvider(),

src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.ts

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'
1111
import { CellRevealType, IActiveNotebookEditor, ICellViewModel, INotebookEditorOptions, INotebookViewCellsUpdateEvent } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
1212
import { NotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookEditor';
1313
import { CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon';
14-
import { IOutline, IOutlineComparator, IOutlineCreator, IOutlineListConfig, IOutlineService, IQuickPickDataSource, IQuickPickOutlineElement, OutlineChangeEvent, OutlineConfigKeys, OutlineTarget } from 'vs/workbench/services/outline/browser/outline';
14+
import { IOutline, IOutlineComparator, IOutlineCreator, IOutlineListConfig, IOutlineService, IQuickPickDataSource, IQuickPickOutlineElement, OutlineChangeEvent, OutlineConfigCollapseItemsValues, OutlineConfigKeys, OutlineTarget } from 'vs/workbench/services/outline/browser/outline';
1515
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions';
1616
import { Registry } from 'vs/platform/registry/common/platform';
1717
import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';
@@ -285,16 +285,18 @@ class NotebookComparator implements IOutlineComparator<OutlineEntry> {
285285
}
286286
}
287287

288-
export class NotebookCellOutline extends Disposable implements IOutline<OutlineEntry> {
288+
export class NotebookCellOutline implements IOutline<OutlineEntry> {
289289

290-
private readonly _onDidChange = this._register(new Emitter<OutlineChangeEvent>());
290+
private readonly _dispoables = new DisposableStore();
291+
292+
private readonly _onDidChange = new Emitter<OutlineChangeEvent>();
291293

292294
readonly onDidChange: Event<OutlineChangeEvent> = this._onDidChange.event;
293295

294296
private _uri: URI | undefined;
295297
private _entries: OutlineEntry[] = [];
296298
private _activeEntry?: OutlineEntry;
297-
private readonly _entriesDisposables = this._register(new DisposableStore());
299+
private readonly _entriesDisposables = new DisposableStore();
298300

299301
readonly config: IOutlineListConfig<OutlineEntry>;
300302
readonly outlineKind = 'notebookCells';
@@ -313,8 +315,8 @@ export class NotebookCellOutline extends Disposable implements IOutline<OutlineE
313315
@IConfigurationService private readonly _configurationService: IConfigurationService,
314316
@INotebookExecutionStateService private readonly _notebookExecutionStateService: INotebookExecutionStateService,
315317
) {
316-
super();
317-
const selectionListener = this._register(new MutableDisposable());
318+
const selectionListener = new MutableDisposable();
319+
this._dispoables.add(selectionListener);
318320
const installSelectionListener = () => {
319321
const notebookEditor = _editor.getControl();
320322
if (!notebookEditor?.hasModel()) {
@@ -335,22 +337,22 @@ export class NotebookCellOutline extends Disposable implements IOutline<OutlineE
335337
}
336338
};
337339

338-
this._register(_editor.onDidChangeModel(() => {
340+
this._dispoables.add(_editor.onDidChangeModel(() => {
339341
this._recomputeState();
340342
installSelectionListener();
341343
}));
342344

343-
this._register(_configurationService.onDidChangeConfiguration(e => {
345+
this._dispoables.add(_configurationService.onDidChangeConfiguration(e => {
344346
if (e.affectsConfiguration('notebook.outline.showCodeCells')) {
345347
this._recomputeState();
346348
}
347349
}));
348350

349-
this._register(themeService.onDidFileIconThemeChange(() => {
351+
this._dispoables.add(themeService.onDidFileIconThemeChange(() => {
350352
this._onDidChange.fire({});
351353
}));
352354

353-
this._register(_notebookExecutionStateService.onDidChangeCellExecution(e => {
355+
this._dispoables.add(_notebookExecutionStateService.onDidChangeCellExecution(e => {
354356
if (!!this._editor.textModel && e.affectsNotebook(this._editor.textModel?.uri)) {
355357
this._recomputeState();
356358
}
@@ -360,7 +362,7 @@ export class NotebookCellOutline extends Disposable implements IOutline<OutlineE
360362
installSelectionListener();
361363

362364
const options: IWorkbenchDataTreeOptions<OutlineEntry, FuzzyScore> = {
363-
collapseByDefault: _target === OutlineTarget.Breadcrumbs,
365+
collapseByDefault: _target === OutlineTarget.Breadcrumbs || (_target === OutlineTarget.OutlinePane && _configurationService.getValue(OutlineConfigKeys.collapseItems) === OutlineConfigCollapseItemsValues.Collapsed),
364366
expandOnlyOnTwistieClick: true,
365367
multipleSelectionSupport: false,
366368
accessibilityProvider: new NotebookOutlineAccessibility(),
@@ -394,6 +396,12 @@ export class NotebookCellOutline extends Disposable implements IOutline<OutlineE
394396
};
395397
}
396398

399+
dispose(): void {
400+
this._onDidChange.dispose();
401+
this._dispoables.dispose();
402+
this._entriesDisposables.dispose();
403+
}
404+
397405
private _recomputeState(): void {
398406
this._entriesDisposables.clear();
399407
this._activeEntry = undefined;

src/vs/workbench/services/outline/browser/outline.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,8 @@ export const enum OutlineConfigKeys {
9797
'problemsColors' = 'outline.problems.colors',
9898
'problemsBadges' = 'outline.problems.badges'
9999
}
100+
101+
export const enum OutlineConfigCollapseItemsValues {
102+
Collapsed = 'alwaysCollapse',
103+
Expanded = 'alwaysExpand'
104+
}

0 commit comments

Comments
 (0)