@@ -9,7 +9,7 @@ import * as async from 'vs/base/common/async';
99import { CancellationToken } from 'vs/base/common/cancellation' ;
1010import { onUnexpectedError } from 'vs/base/common/errors' ;
1111import { MarkdownString } from 'vs/base/common/htmlContent' ;
12- import { IDisposable , dispose } from 'vs/base/common/lifecycle' ;
12+ import { DisposableStore } from 'vs/base/common/lifecycle' ;
1313import * as platform from 'vs/base/common/platform' ;
1414import { ICodeEditor , MouseTargetType } from 'vs/editor/browser/editorBrowser' ;
1515import { EditorAction , ServicesAccessor , registerEditorAction , registerEditorContribution } from 'vs/editor/browser/editorExtensions' ;
@@ -172,7 +172,7 @@ class LinkDetector implements editorCommon.IEditorContribution {
172172
173173 private readonly editor : ICodeEditor ;
174174 private enabled : boolean ;
175- private listenersToRemove : IDisposable [ ] ;
175+ private readonly listenersToRemove = new DisposableStore ( ) ;
176176 private readonly timeout : async . TimeoutTimer ;
177177 private computePromise : async . CancelablePromise < LinksList > | null ;
178178 private activeLinksList : LinksList | null ;
@@ -189,22 +189,21 @@ class LinkDetector implements editorCommon.IEditorContribution {
189189 this . editor = editor ;
190190 this . openerService = openerService ;
191191 this . notificationService = notificationService ;
192- this . listenersToRemove = [ ] ;
193192
194193 let clickLinkGesture = new ClickLinkGesture ( editor ) ;
195- this . listenersToRemove . push ( clickLinkGesture ) ;
196- this . listenersToRemove . push ( clickLinkGesture . onMouseMoveOrRelevantKeyDown ( ( [ mouseEvent , keyboardEvent ] ) => {
194+ this . listenersToRemove . add ( clickLinkGesture ) ;
195+ this . listenersToRemove . add ( clickLinkGesture . onMouseMoveOrRelevantKeyDown ( ( [ mouseEvent , keyboardEvent ] ) => {
197196 this . _onEditorMouseMove ( mouseEvent , keyboardEvent ) ;
198197 } ) ) ;
199- this . listenersToRemove . push ( clickLinkGesture . onExecute ( ( e ) => {
198+ this . listenersToRemove . add ( clickLinkGesture . onExecute ( ( e ) => {
200199 this . onEditorMouseUp ( e ) ;
201200 } ) ) ;
202- this . listenersToRemove . push ( clickLinkGesture . onCancel ( ( e ) => {
201+ this . listenersToRemove . add ( clickLinkGesture . onCancel ( ( e ) => {
203202 this . cleanUpActiveLinkDecoration ( ) ;
204203 } ) ) ;
205204
206205 this . enabled = editor . getConfiguration ( ) . contribInfo . links ;
207- this . listenersToRemove . push ( editor . onDidChangeConfiguration ( ( e ) => {
206+ this . listenersToRemove . add ( editor . onDidChangeConfiguration ( ( e ) => {
208207 let enabled = editor . getConfiguration ( ) . contribInfo . links ;
209208 if ( this . enabled === enabled ) {
210209 // No change in our configuration option
@@ -221,10 +220,10 @@ class LinkDetector implements editorCommon.IEditorContribution {
221220 // Start computing (for the getting enabled case)
222221 this . beginCompute ( ) ;
223222 } ) ) ;
224- this . listenersToRemove . push ( editor . onDidChangeModelContent ( ( e ) => this . onChange ( ) ) ) ;
225- this . listenersToRemove . push ( editor . onDidChangeModel ( ( e ) => this . onModelChanged ( ) ) ) ;
226- this . listenersToRemove . push ( editor . onDidChangeModelLanguage ( ( e ) => this . onModelModeChanged ( ) ) ) ;
227- this . listenersToRemove . push ( LinkProviderRegistry . onDidChange ( ( e ) => this . onModelModeChanged ( ) ) ) ;
223+ this . listenersToRemove . add ( editor . onDidChangeModelContent ( ( e ) => this . onChange ( ) ) ) ;
224+ this . listenersToRemove . add ( editor . onDidChangeModel ( ( e ) => this . onModelChanged ( ) ) ) ;
225+ this . listenersToRemove . add ( editor . onDidChangeModelLanguage ( ( e ) => this . onModelModeChanged ( ) ) ) ;
226+ this . listenersToRemove . add ( LinkProviderRegistry . onDidChange ( ( e ) => this . onModelModeChanged ( ) ) ) ;
228227
229228 this . timeout = new async . TimeoutTimer ( ) ;
230229 this . computePromise = null ;
@@ -414,7 +413,7 @@ class LinkDetector implements editorCommon.IEditorContribution {
414413 }
415414
416415 public dispose ( ) : void {
417- this . listenersToRemove = dispose ( this . listenersToRemove ) ;
416+ this . listenersToRemove . dispose ( ) ;
418417 this . stop ( ) ;
419418 this . timeout . dispose ( ) ;
420419 }
0 commit comments