Skip to content

Commit a6885b4

Browse files
committed
Use toDisposable in more places in workbench and platform
1 parent ad7cbfd commit a6885b4

11 files changed

Lines changed: 53 additions & 69 deletions

File tree

src/vs/platform/commands/common/commands.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'use strict';
66

77
import { TPromise } from 'vs/base/common/winjs.base';
8-
import { IDisposable } from 'vs/base/common/lifecycle';
8+
import { IDisposable, toDisposable } from 'vs/base/common/lifecycle';
99
import { TypeConstraint, validateConstraints } from 'vs/base/common/types';
1010
import { ServicesAccessor, createDecorator } from 'vs/platform/instantiation/common/instantiation';
1111
import { Event } from 'vs/base/common/event';
@@ -91,14 +91,12 @@ export const CommandsRegistry: ICommandRegistry = new class implements ICommandR
9191

9292
let removeFn = commands.unshift(idOrCommand);
9393

94-
return {
95-
dispose: () => {
96-
removeFn();
97-
if (this._commands.get(id).isEmpty()) {
98-
this._commands.delete(id);
99-
}
94+
return toDisposable(() => {
95+
removeFn();
96+
if (this._commands.get(id).isEmpty()) {
97+
this._commands.delete(id);
10098
}
101-
};
99+
});
102100
}
103101

104102
getCommand(id: string): ICommand {

src/vs/platform/theme/common/themeService.ts

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

77
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
88
import { Color } from 'vs/base/common/color';
9-
import { IDisposable } from 'vs/base/common/lifecycle';
9+
import { IDisposable, toDisposable } from 'vs/base/common/lifecycle';
1010
import * as platform from 'vs/platform/registry/common/platform';
1111
import { ColorIdentifier } from 'vs/platform/theme/common/colorRegistry';
1212
import { Event, Emitter } from 'vs/base/common/event';
@@ -111,12 +111,10 @@ class ThemingRegistry implements IThemingRegistry {
111111
public onThemeChange(participant: IThemingParticipant): IDisposable {
112112
this.themingParticipants.push(participant);
113113
this.onThemingParticipantAddedEmitter.fire(participant);
114-
return {
115-
dispose: () => {
116-
const idx = this.themingParticipants.indexOf(participant);
117-
this.themingParticipants.splice(idx, 1);
118-
}
119-
};
114+
return toDisposable(() => {
115+
const idx = this.themingParticipants.indexOf(participant);
116+
this.themingParticipants.splice(idx, 1);
117+
});
120118
}
121119

122120
public get onThemingParticipantAdded(): Event<IThemingParticipant> {

src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'use strict';
66

77
import { Emitter, Event } from 'vs/base/common/event';
8-
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
8+
import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
99
import URI from 'vs/base/common/uri';
1010
import { TPromise } from 'vs/base/common/winjs.base';
1111
import { FileWriteOptions, FileSystemProviderCapabilities, IFileChange, IFileService, IFileSystemProvider, IStat, IWatchOptions, FileType, FileOverwriteOptions, FileDeleteOptions } from 'vs/platform/files/common/files';
@@ -71,11 +71,9 @@ class RemoteFileSystemProvider implements IFileSystemProvider {
7171
watch(resource: URI, opts: IWatchOptions) {
7272
const session = Math.random();
7373
this._proxy.$watch(this._handle, session, resource, opts);
74-
return {
75-
dispose: () => {
76-
this._proxy.$unwatch(this._handle, session);
77-
}
78-
};
74+
return toDisposable(() => {
75+
this._proxy.$unwatch(this._handle, session);
76+
});
7977
}
8078

8179
$onFileSystemChange(changes: IFileChangeDto[]): void {

src/vs/workbench/api/node/extHostFileSystem.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
99
import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape, IFileChangeDto } from './extHost.protocol';
1010
import * as vscode from 'vscode';
1111
import * as files from 'vs/platform/files/common/files';
12-
import { IDisposable } from 'vs/base/common/lifecycle';
12+
import { IDisposable, toDisposable } from 'vs/base/common/lifecycle';
1313
import { asWinJsPromise } from 'vs/base/common/async';
1414
import { values } from 'vs/base/common/map';
1515
import { Range, FileChangeType } from 'vs/workbench/api/node/extHostTypes';
@@ -132,15 +132,13 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape {
132132
this._proxy.$onFileSystemChange(handle, mapped);
133133
});
134134

135-
return {
136-
dispose: () => {
137-
subscription.dispose();
138-
this._linkProvider.delete(scheme);
139-
this._usedSchemes.delete(scheme);
140-
this._fsProvider.delete(handle);
141-
this._proxy.$unregisterProvider(handle);
142-
}
143-
};
135+
return toDisposable(() => {
136+
subscription.dispose();
137+
this._linkProvider.delete(scheme);
138+
this._usedSchemes.delete(scheme);
139+
this._fsProvider.delete(handle);
140+
this._proxy.$unregisterProvider(handle);
141+
});
144142
}
145143

146144
private static _asIStat(stat: vscode.FileStat): files.IStat {

src/vs/workbench/api/node/extHostSearch.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import * as extfs from 'vs/base/node/extfs';
1515
import { IFileMatch, IFolderQuery, IPatternInfo, IRawSearchQuery, ISearchCompleteStats, ISearchQuery } from 'vs/platform/search/common/search';
1616
import * as vscode from 'vscode';
1717
import { ExtHostSearchShape, IMainContext, MainContext, MainThreadSearchShape } from './extHost.protocol';
18+
import { toDisposable } from 'vs/base/common/lifecycle';
1819

1920
export interface ISchemeTransformer {
2021
transformOutgoing(scheme: string): string;
@@ -44,12 +45,10 @@ export class ExtHostSearch implements ExtHostSearchShape {
4445
const handle = this._handlePool++;
4546
this._searchProvider.set(handle, provider);
4647
this._proxy.$registerSearchProvider(handle, this._transformScheme(scheme));
47-
return {
48-
dispose: () => {
49-
this._searchProvider.delete(handle);
50-
this._proxy.$unregisterProvider(handle);
51-
}
52-
};
48+
return toDisposable(() => {
49+
this._searchProvider.delete(handle);
50+
this._proxy.$unregisterProvider(handle);
51+
});
5352
}
5453

5554
$provideFileSearchResults(handle: number, session: number, rawQuery: IRawSearchQuery): TPromise<ISearchCompleteStats> {

src/vs/workbench/parts/outline/electron-browser/outlinePanel.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { onUnexpectedError, isPromiseCanceledError } from 'vs/base/common/errors
1818
import { Emitter } from 'vs/base/common/event';
1919
import { defaultGenerator } from 'vs/base/common/idGenerator';
2020
import { KeyCode } from 'vs/base/common/keyCodes';
21-
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
21+
import { dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
2222
import { LRUCache } from 'vs/base/common/map';
2323
import { escape } from 'vs/base/common/strings';
2424
import URI from 'vs/base/common/uri';
@@ -567,9 +567,7 @@ export class OutlinePanel extends ViewletPanel {
567567
}
568568
this._editorDisposables.push(this._input.onDidChange(onInputValueChanged));
569569

570-
this._editorDisposables.push({
571-
dispose: () => this._contextKeyFiltered.reset()
572-
});
570+
this._editorDisposables.push(toDisposable(() => this._contextKeyFiltered.reset()));
573571

574572
// feature: reveal outline selection in editor
575573
// on change -> reveal/select defining range

src/vs/workbench/parts/snippets/electron-browser/snippetsService.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import { basename, extname, join } from 'path';
88
import { MarkdownString } from 'vs/base/common/htmlContent';
99
import { IJSONSchema } from 'vs/base/common/jsonSchema';
10-
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
10+
import { dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
1111
import { values } from 'vs/base/common/map';
1212
import * as resources from 'vs/base/common/resources';
1313
import { compare, endsWith, isFalsyOrWhitespace } from 'vs/base/common/strings';
@@ -253,14 +253,12 @@ class SnippetsService implements ISnippetsService {
253253
}
254254
});
255255
}, (error: string) => this._logService.error(error));
256-
this._disposables.push({
257-
dispose: () => {
258-
if (watcher) {
259-
watcher.removeAllListeners();
260-
watcher.close();
261-
}
256+
this._disposables.push(toDisposable(() => {
257+
if (watcher) {
258+
watcher.removeAllListeners();
259+
watcher.close();
262260
}
263-
});
261+
}));
264262

265263
}).then(undefined, err => {
266264
this._logService.error('Failed to load user snippets', err);

src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import URI from 'vs/base/common/uri';
1717
import { IStringDictionary } from 'vs/base/common/collections';
1818
import { Action } from 'vs/base/common/actions';
1919
import * as Dom from 'vs/base/browser/dom';
20-
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
20+
import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
2121
import { Event, Emitter } from 'vs/base/common/event';
2222
import * as Types from 'vs/base/common/types';
2323
import { KeyMod, KeyCode } from 'vs/base/common/keyCodes';
@@ -253,11 +253,9 @@ class BuildStatusBarItem extends Themable implements IStatusbarItem {
253253

254254
this.updateStyles();
255255

256-
return {
257-
dispose: () => {
258-
callOnDispose = dispose(callOnDispose);
259-
}
260-
};
256+
return toDisposable(() => {
257+
callOnDispose = dispose(callOnDispose);
258+
});
261259
}
262260

263261
private ignoreEvent(event: TaskEvent): boolean {

src/vs/workbench/parts/welcome/walkThrough/electron-browser/walkThroughPart.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableEle
1010
import { ScrollbarVisibility } from 'vs/base/common/scrollable';
1111
import * as strings from 'vs/base/common/strings';
1212
import URI from 'vs/base/common/uri';
13-
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
13+
import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
1414
import { EditorOptions, IEditorMemento } from 'vs/workbench/common/editor';
1515
import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor';
1616
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
@@ -117,7 +117,7 @@ export class WalkThroughPart extends BaseEditor {
117117
private addEventListener<E extends HTMLElement>(element: E, type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): IDisposable;
118118
private addEventListener<E extends HTMLElement>(element: E, type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): IDisposable {
119119
element.addEventListener(type, listener, useCapture);
120-
return { dispose: () => { element.removeEventListener(type, listener, useCapture); } };
120+
return toDisposable(() => { element.removeEventListener(type, listener, useCapture); });
121121
}
122122

123123
private registerFocusHandlers() {

src/vs/workbench/services/configurationResolver/test/electron-browser/configurationResolverService.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { ConfigurationResolverService } from 'vs/workbench/services/configuratio
1414
import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace';
1515
import { TestEnvironmentService, TestEditorService, TestContextService } from 'vs/workbench/test/workbenchTestServices';
1616
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
17+
import { Disposable } from 'vs/base/common/lifecycle';
1718

1819
suite('Configuration Resolver Service', () => {
1920
let configurationResolverService: IConfigurationResolverService;
@@ -391,7 +392,7 @@ class MockCommandService implements ICommandService {
391392
public _serviceBrand: any;
392393
public callCount = 0;
393394

394-
onWillExecuteCommand = () => ({ dispose: () => { } });
395+
onWillExecuteCommand = () => Disposable.None;
395396
public executeCommand(commandId: string, ...args: any[]): TPromise<any> {
396397
this.callCount++;
397398

0 commit comments

Comments
 (0)