File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -46,8 +46,20 @@ export class DisposableStore implements IDisposable {
4646 private _toDispose : IDisposable [ ] = [ ] ;
4747 private _isDisposed = false ;
4848
49+ /**
50+ * Dispose of all registered disposables and mark this object as disposed.
51+ *
52+ * Any future disposables added to this object will be disposed of on `push`.
53+ */
4954 public dispose ( ) : void {
5055 this . _isDisposed = true ;
56+ this . clear ( ) ;
57+ }
58+
59+ /**
60+ * Dispose of all registered disposables but do not mark this object as disposed.
61+ */
62+ public clear ( ) : void {
5163 this . _toDispose = dispose ( this . _toDispose ) ;
5264 }
5365
Original file line number Diff line number Diff line change @@ -34,7 +34,7 @@ export class ModesHoverController implements IEditorContribution {
3434
3535 private static readonly ID = 'editor.contrib.hover' ;
3636
37- private _toUnhook = new DisposableStore ( ) ;
37+ private readonly _toUnhook = new DisposableStore ( ) ;
3838 private readonly _didChangeConfigurationHandler : IDisposable ;
3939
4040 private _contentWidget : ModesContentHoverWidget ;
@@ -109,8 +109,7 @@ export class ModesHoverController implements IEditorContribution {
109109 }
110110
111111 private _unhookEvents ( ) : void {
112- this . _toUnhook . dispose ( ) ;
113- this . _toUnhook = new DisposableStore ( ) ;
112+ this . _toUnhook . clear ( ) ;
114113 }
115114
116115 private _onModelDecorationsChanged ( ) : void {
@@ -226,6 +225,7 @@ export class ModesHoverController implements IEditorContribution {
226225
227226 public dispose ( ) : void {
228227 this . _unhookEvents ( ) ;
228+ this . _toUnhook . dispose ( ) ;
229229 this . _didChangeConfigurationHandler . dispose ( ) ;
230230
231231 if ( this . _glyphWidget ) {
Original file line number Diff line number Diff line change 66import * as DOM from 'vs/base/browser/dom' ;
77import { Button } from 'vs/base/browser/ui/button/button' ;
88import { IAction } from 'vs/base/common/actions' ;
9- import { DisposableStore } from 'vs/base/common/lifecycle' ;
9+ import { DisposableStore , IDisposable } from 'vs/base/common/lifecycle' ;
1010import { IMenu } from 'vs/platform/actions/common/actions' ;
1111import { attachButtonStyler } from 'vs/platform/theme/common/styler' ;
1212import { IThemeService } from 'vs/platform/theme/common/themeService' ;
1313
14- export class CommentFormActions {
14+ export class CommentFormActions implements IDisposable {
1515 private _buttonElements : HTMLElement [ ] = [ ] ;
16- private _toDispose = new DisposableStore ( ) ;
16+ private readonly _toDispose = new DisposableStore ( ) ;
1717
1818 constructor (
1919 private container : HTMLElement ,
@@ -22,8 +22,7 @@ export class CommentFormActions {
2222 ) { }
2323
2424 setActions ( menu : IMenu ) {
25- this . _toDispose . dispose ( ) ;
26- this . _toDispose = new DisposableStore ( ) ;
25+ this . _toDispose . clear ( ) ;
2726
2827 this . _buttonElements . forEach ( b => DOM . removeNode ( b ) ) ;
2928
@@ -44,4 +43,8 @@ export class CommentFormActions {
4443 } ) ;
4544 }
4645 }
46+
47+ dispose ( ) {
48+ this . _toDispose . dispose ( ) ;
49+ }
4750}
Original file line number Diff line number Diff line change @@ -960,7 +960,7 @@ export class DirtyDiffModel extends Disposable {
960960 private diffDelayer : ThrottledDelayer < IChange [ ] | null > | null ;
961961 private _originalURIPromise ?: Promise < URI | null > ;
962962 private repositoryDisposables = new Set < IDisposable > ( ) ;
963- private originalModelDisposables : IDisposable = Disposable . None ;
963+ private readonly originalModelDisposables = this . _register ( new DisposableStore ( ) ) ;
964964
965965 private _onDidChange = new Emitter < ISplice < IChange > [ ] > ( ) ;
966966 readonly onDidChange : Event < ISplice < IChange > [ ] > = this . _onDidChange . event ;
@@ -1069,12 +1069,9 @@ export class DirtyDiffModel extends Disposable {
10691069
10701070 this . _originalModel = ref . object . textEditorModel ;
10711071
1072- const originalModelDisposables = new DisposableStore ( ) ;
1073- originalModelDisposables . push ( ref ) ;
1074- originalModelDisposables . push ( ref . object . textEditorModel . onDidChangeContent ( ( ) => this . triggerDiff ( ) ) ) ;
1075-
1076- this . originalModelDisposables . dispose ( ) ;
1077- this . originalModelDisposables = originalModelDisposables ;
1072+ this . originalModelDisposables . clear ( ) ;
1073+ this . originalModelDisposables . push ( ref ) ;
1074+ this . originalModelDisposables . push ( ref . object . textEditorModel . onDidChangeContent ( ( ) => this . triggerDiff ( ) ) ) ;
10781075
10791076 return originalUri ;
10801077 } ) ;
@@ -1131,7 +1128,6 @@ export class DirtyDiffModel extends Disposable {
11311128 }
11321129
11331130 dispose ( ) : void {
1134- this . originalModelDisposables = dispose ( this . originalModelDisposables ) ;
11351131 super . dispose ( ) ;
11361132
11371133 this . _editorModel = null ;
Original file line number Diff line number Diff line change @@ -295,10 +295,10 @@ class SnippetsService implements ISnippetsService {
295295 }
296296
297297 private _initFolderSnippets ( source : SnippetSource , folder : URI , bucket : IDisposable [ ] ) : Promise < any > {
298- let disposables = new DisposableStore ( ) ;
299- let addFolderSnippets = ( type ?: FileChangeType ) => {
300- disposables . dispose ( ) ;
301- disposables = new DisposableStore ( ) ;
298+ const disposables = new DisposableStore ( ) ;
299+ const addFolderSnippets = ( type ?: FileChangeType ) => {
300+ disposables . clear ( ) ;
301+
302302 if ( type === FileChangeType . DELETED ) {
303303 return Promise . resolve ( ) ;
304304 }
Original file line number Diff line number Diff line change @@ -33,7 +33,7 @@ export class WebviewEditor extends BaseEditor {
3333 private _content ?: HTMLElement ;
3434 private _webviewContent : HTMLElement | undefined ;
3535
36- private _webviewFocusTrackerDisposables = new DisposableStore ( ) ;
36+ private readonly _webviewFocusTrackerDisposables = new DisposableStore ( ) ;
3737 private _onFocusWindowHandler ?: IDisposable ;
3838
3939 private readonly _onDidFocusWebview = this . _register ( new Emitter < void > ( ) ) ;
@@ -304,8 +304,7 @@ export class WebviewEditor extends BaseEditor {
304304 }
305305
306306 private trackFocus ( ) {
307- this . _webviewFocusTrackerDisposables . dispose ( ) ;
308- this . _webviewFocusTrackerDisposables = new DisposableStore ( ) ;
307+ this . _webviewFocusTrackerDisposables . clear ( ) ;
309308
310309 // Track focus in webview content
311310 const webviewContentFocusTracker = DOM . trackFocus ( this . _webviewContent ! ) ;
Original file line number Diff line number Diff line change @@ -125,7 +125,7 @@ suite('Disk File Service', () => {
125125 let testProvider : TestDiskFileSystemProvider ;
126126 let testDir : string ;
127127
128- let disposables = new DisposableStore ( ) ;
128+ const disposables = new DisposableStore ( ) ;
129129
130130 setup ( async ( ) => {
131131 const logService = new NullLogService ( ) ;
@@ -149,8 +149,7 @@ suite('Disk File Service', () => {
149149 } ) ;
150150
151151 teardown ( async ( ) => {
152- disposables . dispose ( ) ;
153- disposables = new DisposableStore ( ) ;
152+ disposables . clear ( ) ;
154153
155154 await rimraf ( parentDir , RimRafMode . MOVE ) ;
156155 } ) ;
You can’t perform that action at this time.
0 commit comments