55
66import { CancelablePromise , RunOnceScheduler , createCancelablePromise , disposableTimeout } from 'vs/base/common/async' ;
77import { onUnexpectedError , onUnexpectedExternalError } from 'vs/base/common/errors' ;
8- import { dispose , toDisposable , DisposableStore } from 'vs/base/common/lifecycle' ;
8+ import { toDisposable , DisposableStore , MutableDisposable } from 'vs/base/common/lifecycle' ;
99import { StableEditorScrollState } from 'vs/editor/browser/core/editorState' ;
1010import * as editorBrowser from 'vs/editor/browser/editorBrowser' ;
1111import { registerEditorContribution } from 'vs/editor/browser/editorExtensions' ;
@@ -29,7 +29,7 @@ export class CodeLensContribution implements editorCommon.IEditorContribution {
2929 private readonly _localToDispose = new DisposableStore ( ) ;
3030 private _lenses : CodeLensWidget [ ] = [ ] ;
3131 private _currentFindCodeLensSymbolsPromise : CancelablePromise < CodeLensModel > | undefined ;
32- private _currentCodeLensModel : CodeLensModel | undefined ;
32+ private readonly _currentCodeLensModel = new MutableDisposable < CodeLensModel > ( ) ;
3333 private _modelChangeCounter : number = 0 ;
3434 private _currentResolveCodeLensSymbolsPromise : CancelablePromise < any > | undefined ;
3535 private _detectVisibleLenses : RunOnceScheduler ;
@@ -58,6 +58,7 @@ export class CodeLensContribution implements editorCommon.IEditorContribution {
5858 dispose ( ) : void {
5959 this . _localDispose ( ) ;
6060 this . _globalToDispose . dispose ( ) ;
61+ this . _currentCodeLensModel . dispose ( ) ;
6162 }
6263
6364 private _localDispose ( ) : void {
@@ -71,7 +72,7 @@ export class CodeLensContribution implements editorCommon.IEditorContribution {
7172 this . _currentResolveCodeLensSymbolsPromise = undefined ;
7273 }
7374 this . _localToDispose . clear ( ) ;
74- dispose ( this . _currentCodeLensModel ) ;
75+ this . _currentCodeLensModel . clear ( ) ;
7576 }
7677
7778 getId ( ) : string {
@@ -132,9 +133,7 @@ export class CodeLensContribution implements editorCommon.IEditorContribution {
132133
133134 this . _currentFindCodeLensSymbolsPromise . then ( result => {
134135 if ( counterValue === this . _modelChangeCounter ) { // only the last one wins
135- // lifecycle -> dispose old model
136- dispose ( this . _currentCodeLensModel ) ;
137- this . _currentCodeLensModel = result ;
136+ this . _currentCodeLensModel . value = result ;
138137
139138 // cache model to reduce flicker
140139 this . _codeLensCache . put ( model , result ) ;
0 commit comments